🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #386

Re: Mieszanie asma i pascala

#386
From: Krzysztof Szyszka
Date: Thu, 31 Dec 1998 16:26
73 lines
4001 bytes
Kowal napisał(a) w wiadomości: <36854d44.0@news.vogel.pl>...
>Mozliwe, ze to nie jest najlesza grupa na ten temat, ale mysle, ze czyta ja
>pare osob, ktore wiedza jak mi pomoc.
>
>Chodzi o to, ze niedawno dostlem zrodlo unita, ktorego jedna czesc napisana
>byla w asmie, a druga w pascalu. Tak naprawde to czesc pascalowa skladala
>sie tylko z kilku procedure XXX; external; i {$L modul.obj}.
>
>Udalo mi sie tez polaczyc te dwa jezyki, ale z jednym wyjatkiem. Chodzi o
>to, ze nie wiem jak przekazywac parametry do procedury asemblerowej (ktora
>jest zdefiniowane w pliku obj). Ten unit jakos to robil, ale ja tego nie
>rozumiem. W czesci interface sa podane parametry, ktore maja zotac
prekazane
>do procedury, ale w czesci interface juz ich nie ma. Wlaczam wiec zrodlo w
>asmie i tu kolejne zaskoczenie: w zrodle procedur nie ma ANI RAZU uzytej
>nazwy parametru. Same rejestry. Nie rozumiem tez w jaki sposob zrobione sa
>funkcje. Nie ma tam nic co wygladaloby dla mnie na zwrot wartosci.
>
>Domyslam sie, ze zaraz ktos zapyta, po co sie bawic? Przeciez pascal ma
>wbudowany asembler.
>Ano po to, zeby nie babrac sie z komentami db. Ktore strasznie zasmiecaja
>listing. Np. komenda:
>
>mov eax, 12345678h
>
>w asemblerze pascalowym wyglada tak:
>
>db 66h
>mov ax, 5678h
>dw 1234h

Nie bardzo wiem po co musisz mieszać kod i dane, domyślam się, że te dane
kody rozkazów nowych procesorów, bo w każdym innym przypadku to co napiszesz
pod pascalem powinno być czytelniejsze, jeśli zacznisz używać pascalowych
symboli zamiast liczb (nazwy stałych i zmiennych, tablic, rekordów, itd.)
Ten asembler to rozumie.

Jeśli jednak upierasz sie pisać dodaktowe procedury pod TASMem, to niestety
musisz dużo się dowiedzieć o:
- konwencji wywołań stosowanych w pascalu
- sposobie nazywania segmentów danych i kodu, żeby to można zlinkować
- przeznaczeniu poszczególnych rejestrów na styku pascal-asembler
- możliwości modyfikowania lub jej braku dla niektórych rejestrów
- odwoływaniu się do zmiennych globalnych zadeklarowanych w pascalu
- adresowaniu pascalowych struktur danych, itp.

Każdy błąd popełniony w asemblerze to przejście z jednego narzędzia do
drugiego
Nie pamietam, czy mozna debuggować źródło zewnętrznego asemblera.
Przy wewnętrznym asemblerze pascala debugger działa wyśmienicie.

Tak czy owak, niezależnie od tego, w którym asemblerze będziesz pisał radzę
zapoznać się z oryginalną
dokumentacją pascala. Jest to dobrze opisane. W hepie chyba nie ma
wszystkiego. Bez dogłębnej znajomości "wnętrza" pascala obiecuję Ci, że
będzie boleć.

IMHO pisanie w zewnętrzym asemblerze ma sens tylko wtedy, gdy chcesz napisać
jakąś większą całość stosując sztuczki niezgodne z konwencjami przyjętymi w
pascalu i udostępnić do tego pascalowy interfejs.

P.S.
Nie podaję konkretów, bo jest tego zbyt dużo, a z Pascala już jakiś czas
temu przesiadłem się na Delphi.

--
pozdrowienia
Krzysztof
======================
Krzysztof Szyszka
e-mail: kszyszka@priv.onet.pl
ICQ: 13241014
======================
Technical Details
Message-ID: <CANi2.52299$O1.4809880@news.tpnet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!ict.pwr.wroc.pl!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
References: <36854d44.0@news.vogel.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!ict.pwr.wroc.pl!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
From: "Krzysztof Szyszka" <kszyszka@priv.onet.pl>
Newsgroups: pl.comp.lang.pascal
References: <36854d44.0@news.vogel.pl>
Subject: Re: Mieszanie asma i pascala
Lines: 76
X-Newsreader: Microsoft Outlook Express 4.71.1712.3
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3
Message-ID: <CANi2.52299$O1.4809880@news.tpnet.pl>
Date: Thu, 31 Dec 1998 16:26:10 GMT
NNTP-Posting-Host: 195.205.186.72
X-Complaints-To: abuse@tpsa.pl
X-Trace: news.tpnet.pl 915121570 195.205.186.72 (Thu, 31 Dec 1998 17:26:10 MET DST)
NNTP-Posting-Date: Thu, 31 Dec 1998 17:26:10 MET DST
Organization: TPNET - http://www.tpnet.pl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit