모든 줄 다음에 .CFI 지시문이있는 것 같습니다. 또한이 예문의 넓은 다양성이 있습니다. .cfi_startproc
, .cfi_endproc
등 more here입니다.Gnu 어셈블러 (GAS)의 CFI 지시문은 무엇을 위해 사용됩니까?
.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
나는 이것들의 목적을 이해하지 못했다.
설명 레지스터 (6)에 있는지를 말해' GNU AS' [here] (https://sourceware.org/binutils/docs-2.24/as/CFI-directives.html#CFI-directives) – Paschalis
관련 : [GCC/clang 어셈블리 출력에서 "노이즈"를 제거하는 방법? ] (https://stackoverflow.com/questions/38552116/how-to-remove-noise-from-gcc-clang-assembly-output) 지시문없이 지침 만 원한다면 좋은 방법은 http://gcc.godbolt.org/에 코드를 삽입하여 여러 버전의 다양한 컴파일러 (비 x86 포함)에서 필터링 된 asm 출력을 필터링하고 소스 행을 asm 블록과 일치시키는 색상 강조 표시를 사용하는 것입니다. –