C äquivalent zu x86 asm
-
Hallo,
ich habe folgendes Stück assembler:
XOR EAX, EAX MOV EAX, DL MOV ECX, 20 DIV ECXIch möchte dies in C nachbauen ohne auf inline assembler zurückgreifen zu müssen.
char byte = 0; // DL unsigned int k = 20; // ECX k / (unsigned int)byteGenerierter assembler:
MOVSX EAX, DL // Mit sign extension :( MOV ECX, 20 DIV ECX
-
pronopaul schrieb:
XOR EAX, EAXWahnsinn, so setzt du den Wert von EAX auf 0?
-
Macht der Compiler. Hast du auch eine Antwort parat, die hilfreich ist?
-
Wieso eine Division durch Null nachbauen?
XOR EAX, EAX MOV EAX, DLWenn EAX sowieso einen anderen Wert bekommt, wieso dann vorher mit Null fuellen?
Ich möchte dies in C nachbauen ohne auf inline assembler zurückgreifen zu müssen.
Warum? Darueber hinaus optimiert der Compiler so einfache Faelle und ersetzt offensichtliches durch Konstanten.
-
Die Initalisierung mit 0 habe ich aus Reflex gemacht. Bitte wegdenken.
-
unsigned bob = irgendein wert; // dl unsigned sup = 20; var = bob / sup;
-
Hosasa, beim ersten Post hab ich mich verschrieben.
unsigned bob = irgendein wert; // dl unsigned sup = 20; bob = bob / sup;
-
Herr Gott gleich werd ich aber leicht Grantig !
unsigned char bob = irgendein wert; // dl unsigned sup = 20; bob = bob / sup;
-
DerComputerVeteran schrieb:
Herr Gott gleich werd ich aber leicht Grantig !
unsigned char bob = irgendein wert; // dl unsigned sup = 20; bob = bob / sup;Abgesehen davon, dass Identifier keine Leerzeichen enthalten dürften.
-
Das sollte kein Identifier sein sondern ein Beispiel les es einfach als "Pseudocode".
Vielleicht ist es jetzt deutlicher was ich sagen will:
XOR EAX, EAX MOV EAX, DL ; DL = irgendein wert MOV ECX, 20 DIV ECX