Il semble y avoir une directive .CFI après chaque ligne et il existe une grande variété de ces ex.., .cfi_startproc
, .cfi_endproc
etc. plus ici .
.file "temp.c"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movl $0, %eax
leave
ret
.cfi_endproc
.LFE0:
.size main, .-main
.globl func
.type func, @function
func:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movl %edi, -4(%rbp)
movl %esi, %eax
movb %al, -8(%rbp)
leave
ret
.cfi_endproc
.LFE1:
.size func, .-func
.ident "GCC: (Ubuntu 4.4.1-4ubuntu9) 4.4.1"
.section .note.GNU-stack,"",@progbits
Je n'ai pas compris le but de tout ça.
3 votes
Description de
cfi
instructions deGNU AS
aquí1 votes
Liés : Comment supprimer le "bruit" de la sortie de l'assemblage GCC/clang ? si vous voulez juste les instructions sans les directives. Un bon moyen est de mettre votre code sur gcc.godbolt.org pour voir une belle sortie asm filtrée de diverses versions de divers compilateurs (y compris non-x86), avec une mise en évidence par couleur pour faire correspondre les lignes de source avec les blocs asm.