O que são .LFB .LBB .LBE .LVL .loc no código de montagem gerado pelo compilador
Quando olho para o código de montagem gerado pelo GCC, há muitas linhas começando com.LBB
e um número Parece que eles não são instruções de operações. É mais como marcar algo do arquivo ou o quê.
O que são.LFB
,.LVL
, LBB
, LBE
etc estão no código de montagem gerado pelo compilador? O .loc significa "linha de código". Essas linhas indicam apenassymbol table
?
Aqui está um pedaço de código,
main:
.LFB1:
.loc 1 8 0
.cfi_startproc
.LVL2:
.LBB4:
.LBB5:
.loc 1 2 0
movsd b(%rip), %xmm0
.LBE5:
.LBE4:
.loc 1 10 0
xorl %eax, %eax
.LBB7:
.LBB6:
.loc 1 2 0
mulsd a(%rip), %xmm0
.LBE6:
.LBE7:
.loc 1 9 0
movsd %xmm0, a(%rip)
.LVL3:
.loc 1 10 0
ret
.cfi_endproc