🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#542
Author: Tomasz Trojanowski
Date: Wed, 22 Sep 1999 13:17
20 lines
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
#543
Author: Arkadiusz Danilecki
Date: Thu, 23 Sep 1999 09:23
18 lines
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
#544
Author: Przemek Borys
Date: Fri, 24 Sep 1999 15:17
37 lines
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
#545
Author: Tomasz Trojanowski
Date: Sat, 25 Sep 1999 22:38
15 lines
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