Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Hauke am 03. February 2007, 15:59
-
Ich hab ein paar Frage in Bezug auf c (gcc) und assembler.
Unterstützt der gcc auch 16Bit Code? Ich hab nämlich Labels und Makros, die ich für 16Bit und 32Bit brauche also mit *.obj und extern und global. :?
Andre Frage was ist return a; in assembler Code (ret)? :?
Und wo gibt man c bei einem Funktionsaufruf die Parameter mit? :?
-
Unterstützt der gcc auch 16Bit Code?
Der C-Compiler nicht, falls der gemeint war, gas schon, aber auch nur eingeschränkt.
Andre Frage was ist return a; in assembler Code (ret)? :?
Kommt afaik auf die calling convention an, bei mir wars bis jetzt immer so:
mov eax/ax/al, [a]
ret
d.h. das retval ist in eax/ax/al (je nach Größe des retval)
Und wo gibt man c bei einem Funktionsaufruf die Parameter mit? :?
Kommt ganz auf die calling convention an, normalerweise auf dem Stack. Wobei das erste Argument das zuletzt gepushte ist.
-
Ich würde ein return a; so implementieren (16 Bit Code, NASM Syntax):
popa
mov sp, bp
pop bp
mov ax, a
ret