Thread View: pl.comp.os.linux.programowanie
4 messages
4 total messages
Started by Tomasz Trojanowski
Wed, 22 Sep 1999 13:17
Assembler a gcc
Author: Tomasz Trojanowski
Date: Wed, 22 Sep 1999 13:17
Date: Wed, 22 Sep 1999 13:17
20 lines
1095 bytes
1095 bytes
Witam!
Pisząc w BC mogłem napisać:
class TFoo;
void bar()
{
TFoo *foo;
...
asm mov foo,eax;
...
}
Czy ktoś wie jak to zrobić w gcc? Ta składnia mnie dobija. :-)
TIA
Pozdrawiam
TMT
Re: Assembler a gcc
Author: Arkadiusz Danilecki
Date: Thu, 23 Sep 1999 09:23
Date: Thu, 23 Sep 1999 09:23
18 lines
1571 bytes
1571 bytes
In article <7sal0n$osp$2@korweta.task.gda.pl>, Tomasz Trojanowski wrote: >Czy kto¶ wie jak to zrobiæ w gcc? Ta sk³adnia mnie dobija. :-) aurora.put.poznan.pl/~szopen i dalej znajdziesz. Strone staram sie popra wiac juz od jakiegos czasu i mam nadzieje ze nie jest tam juz duzo bledow. Inne ciekawe(ciekawsze) linki : lightning.voshod.com/asm asmjournals.freeservers.com na twoim wlasnym komputerze: asm-HOWTO (autorstwa francoisa rideau, masa ciekawych linkow, w najnowszej wersji rowniez ciekawe przyklady) info gcc (additional features->inline assembler czy jakos tak). Milej lektury! (jak nie lubisz skladni at&t - nie wiem czemu mialo by tak byc bo mi sie strasznie podoba - mozesz sciagnac nasma i pisac w intelowskiej) szopen
Assembler a gcc
Author: 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.
Re: Assembler a gcc
Author: Tomasz Trojanowski
Date: Sat, 25 Sep 1999 22:38
Date: Sat, 25 Sep 1999 22:38
15 lines
1363 bytes
1363 bytes
Przemek Borys <Przemek.Borys@p41.f47.n484.z2.fidonet.org> napisał:
> EHLO Tomasz!
>
> TT> asm mov foo,eax;
>
> Spróbuj
>
> asm("movl %%eax,%0" : "=m" (foo));
>
Wielkie dzięki!
Pozdrawiam
TMT
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads