Article View: pl.comp.os.linux.programowanie
Article #544Assembler a gcc
From: Przemek Borys
Date: Fri, 24 Sep 1999 15:17
Date: Fri, 24 Sep 1999 15:17
37 lines
2530 bytes
2530 bytes
EHLO Tomasz!
[22 Sep 99] Tomasz Trojanowski->All
TT> Pisząc w BC mogłem napisać:
TT> class TFoo;
TT> void bar()
TT> {
TT> TFoo *foo;
TT> ...
TT> asm mov foo,eax;
TT> ...
TT> }
Spróbuj
asm("movl %%eax,%0" : "=m" (foo));
Opis co i jak to robi:
1. Jest to postać złożona instrukcji asm("...") (bo zawiera dodatkowe dane poza
samą instrukcją--argument po dwukropku.
2. W instrukcji złożonej do rejestrów dostajesz się przez poprzedzanie ich
nazwy znakiem `%%'.
3. %0 to odwołanie do pierwszego argumentu, zdefiniowanego "za" instrukcją.
W tym wypadku jest to foo, który występuje w postaci "m", czyli zmiennej
przechowywanej w pamięci (może być też np. "r" dla przerzucanej do rejestru).
"=" znaczy, że do niej będzie się zapisywać.
4. Po instrukcji może występować więcej niż jeden dwukropek. Po pierwszym
dwukropku deklaruje się zmienne "wyjściowe" (do których instrukcja zapisuje). Po
drugim wejściowe (z których instrukcja czyta). Po ewentualnym 3-cim dwukropku
można pisać nazwy rejestrów, na które gcc powinien uważać, bo po wykonanym bloku
się zmieniają.
Więcej o asemblerze w gcc możesz poczytać w tutorialu Arkadiusza Danileckiego.
(nie pamiętam url, ale na infoseeku daj "gcc assembler tutor" ;)
Możesz też zajrzeć do "Extended Asm" w info gcc.
Technical Details
Message-ID:
<1580255034@p41.f47.n484.z2.FidoNet.ftn>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!news.swierk.pl!paa.gov.pl!opoka-warszawa!orion.cst.tpsa.pl!news.icm.edu.pl!news.man.poznan.pl!polsl.gliwice.pl!news.igo.katowice.pl!f26.n484!f47.n484!not-for-mailReferences:
<7sal0n$osp$2@korweta.task.gda.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!news.swierk.pl!paa.gov.pl!opoka-warszawa!orion.cst.tpsa.pl!news.icm.edu.pl!news.man.poznan.pl!polsl.gliwice.pl!news.igo.katowice.pl!f26.n484!f47.n484!not-for-mail From: Przemek Borys <Przemek.Borys@p41.f47.n484.z2.fidonet.org> Newsgroups: pl.comp.os.linux.programowanie Subject: Assembler a gcc Date: Fri, 24 Sep 99 17:17:23 +0200 Organization: <<<< http://dione.ids.pl/~pborys >>>> Lines: 38 Message-ID: <1580255034@p41.f47.n484.z2.FidoNet.ftn> References: <7sal0n$osp$2@korweta.task.gda.pl> NNTP-Posting-Host: linux.igo.katowice.pl Mime-Version: 1.0 X-Comment-To: Tomasz Trojanowski X-FTN-CHRS: Latin-2 3 X-FTN-ORIGCHRS: FIDOMAZ 2 X-Newsreader: FEddy 1.4.02 X-FTN-AREA: PL.COMP.OS.LINUX.PROGRAMOWANIE X-FTN-PID: FEddy 1.4.02 X-FTN-MSGID: 2:484/47.41@FidoNet 5e30c73a X-FTN-REPLY: korweta.task.gda.pl 0261ee0a X-FTN-Tearline: FEddy 1.4.02 via ifcico X-FTN-Origin: <<<< http://dione.ids.pl/~pborys >>>> (2:484/47.41) X-FTN-SEEN-BY: 484/26 47 999 4500 X-FTN-PATH: 484/47 26 999 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit