Что такое .LFB .LBB .LBE .LVL .loc в сгенерированном компилятором коде сборки
Когда я смотрю на ассемблерный код, сгенерированный GCC, есть много строк, начинающихся с.LBB
и номер. Кажется, что они не являются инструкциями операций. Больше похоже на маркировку чего-то из файла или что-то.
Что.LFB
.LVL
, LBB
, LBE
и т.д. находятся в сгенерированном компилятором коде сборки? Означает ли .loc «строку кода». Эти строки просто указываютsymbol table
?
Вот кусок кода,
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