Autor Thema: Frage zu assembler und c  (Gelesen 4982 mal)

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« 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? :?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 03. February 2007, 16:40 »
Unterstützt der gcc auch 16Bit Code?
Der C-Compiler nicht, falls der gemeint war, gas schon, aber auch nur eingeschränkt.

Zitat
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)

Zitat
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.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 16. February 2007, 13:18 »
Ich würde ein return a; so implementieren (16 Bit Code, NASM Syntax):

popa
mov    sp, bp
pop    bp
mov   ax, a
ret
Madness isn't a bug - it's a feature

 

Einloggen