2 Stimmen

Frage zum Inline-Assembler

Mit Inline-Assembler könnte ich eine Additionsoperation mit zwei Eingaben und einem Ergebnis wie folgt spezifizieren:

int a = 5;
int b = 5;
int res;

asm volatile (
" add %1, %2, %0          \n\t"
: "=r" (res)            
: "r" (a), "r" (b)       
: "%g0"                                                   
); 

Auf einer 32-Bit-Architektur ergibt dies ein Befehlswort, das wie folgt aussehen könnte so: 0x91050101

Jetzt frage ich mich, ob ich nicht lieber den Assembler-Code für die Addition explizit angeben sollte, Ich möchte das Befehlswort gleich angeben und es in die ausführbare Datei einfügen. Das sollte etwa so aussehen wie hier

asm volatile (%x91, %x05, %x01, %x01);

Hat jemand eine Idee, wo ich mehr Informationen darüber finden kann, wie das gemacht werden kann und wie die Syntax dafür aussehen muss (das obige ist nur eine wilde Vermutung).

Vielen Dank!

6voto

Gunther Piez Punkte 28746
asm volatile (
" .byte 0x91, 0x5, 0x1, 0x1          \n"
);

sollte es tun.

Sie finden die Dokumentation unter http://sourceware.org/binutils/docs/as/

1voto

James Punkte 8887

Microsoft unterstützt den Pseudo-Befehl _emit

http://msdn.microsoft.com/en-us/library/1b80826t.aspx

Ich bin nicht sicher, was g++ unterstützt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X