PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Inline ASM]: auf C-Konstanten zugreifen



akula
07-03-2005, 14:23
Hallo Leute

Ich habe in der Schule ein Problem (oder besser gesagt mein Dozent hat es).

Ich moechte von Inline-Assembler aus auf die Konstanten des C-Programmes, in welchem der ASM-Code ist, zugreifen.

die Konstanten wurden mittels #define definiert.

Hat jemand dieses Problem schon geloest.

g ben

peschmae
07-03-2005, 16:30
Ersetzt der Präprozesser die Konstanten denn nicht in den Inline-Assembler Bereichen?

Schon mal in gcc -E angeguckt wie das aussieht?

(Ich hab noch nie Assembler geschweige denn Assembler in einem C-Programm programmiert, also keine Ahnung von dem Thema ;))

MfG Peschmä

Beatkiller
07-03-2005, 20:02
Ich hab hier rein zufällig mal ein Codeschnippsel:


void
out_portb(unsigned short _port, unsigned char _data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data) );
}


Rein theoretisch, sollten die Parameter (_port) auch durch Konstanten ersetzbar sein.

Gruß
Mike

akula
07-03-2005, 22:21
Danke fuer eure Antworten

Peshmae: Das Problem ist, dass der Inline-Assembler Code in "" steht. Und der gcc-Praeprozessor ersetzt keine Makros innerhalb der Anfuehrungszeichen.

Beatkiller: Haettest du das ganze in der Intel-Syntax ? Mein Lehrer hat es mit einem Mix von at&t- und intel-syntax hingekriegt, aber das ist nicht sonderlich schoen.

g ben