Was sind .LFB .LBB .LBE .LVL .Loc im vom Compiler generierten Assembly-Code?
Wenn ich mir den von GCC generierten Assembler-Code ansehe, beginnen viele Zeilen mit.LBB
und eine Nummer. Es scheint, dass sie keine Anweisungen für Operationen sind. Eher wie etwas aus der Datei markieren oder was.
Was sind.LFB
,.LVL
, LBB
, LBE
usw. Sind im Compiler Assembler-Code generiert? Bedeutet die .loc "Codezeile"? Zeigen diese Zeilen nur ansymbol table
?
Hier ist ein Stück Code,
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