Assembler - Grundlage
-
Hey Leute,
eine kurze Frage, wisst ihr wonach ich googlen muss, wenn ich nach einer groben Erklärung der Bedeutung dieser ganzen Konstrukte mit dem beginnenden "." suche, wie z.B. ".text", ".long" oder ".cfi_def_cfa_offset 8"?
Die reinen Assemblerbefehle wie "subl" oder "movl" verstehe ich noch und was ein Label wie z.B. "main:" ist weiß ich auch noch, aber was der ganze oben erwähnte Rest für eine Bedeutung/Nutzen hat und warum dieser vom GCC erzeugt wird weiß ich leider überhaupt nicht.
.file "t.cpp" .globl a .data .align 4 .type a, @object .size a, 4 a: .long 1 .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $16, %esp movl $2, -4(%ebp) movl $5, a movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1" .section .note.GNU-stack,"",@progbits
Gruß
-
AFAIK ist das GCC Compilerspezifisch.
Schaue daher ins Handbuch vom GCC.
-
Danke für deine Antwort
Was sind diese Konstrukte denn ganz allgemein? Werden die zur Ausführung des Programms benötigt oder habe einige nur Kommentarfunktion?
Zumindest dieser Teil
a: .long 1 .text
müsste essentiell sein, da dieser scheinbar irgendwie eine globale Integer-Variable "a" beschreibt.
Gruß
-
Dies sind sog. "Assembler-Direktiven" (bzw. auch "pseudo ops" genannt), s. z.B. http://www.rcnp.osaka-u.ac.jp/unix/DOCUMENTATION/HTML/AA-PS31D-TET1_html/asm6.html , http://tigcc.ticalc.org/doc/gnuasm.html#SEC67 oder http://sources.redhat.com/binutils/docs-2.12/as.info/Pseudo-Ops.html
-
Besten Dank, genau so ein Stichwort habe ich gesucht