Я относительно неопытен со сборкой ARM, и мне нужна помощь, чтобы понять несколько строк.Я использовал Godbolt для компиляции кода C ++ 11 с помощью компилятора ARM gcc 8.2 и получил следующие строки сборки:
.L10:
.word .LANCHOR0
Я прочитал, что .LANCHOR0 - это якоря разделов, но что это значит?
Я понимаю, что .word и .data могут использоваться вместе, чтобы объявлять переменные и присваивать значения пространствам памяти следующим образом:
.data ! start a group of variable declarations
x: .word 23 ! int x = 23;
Но что означает
.L10:
.word .LANCHOR0
делать?Здесь нет слова, предшествующего .word.
Во-вторых, что это значит, когда блок строк .word обрабатывается другим блоком инструкций по сборке, подобным этому?
.L7:
.word 131586
.word .LANCHOR0
_GLOBAL__sub_I_unsigned int atlantic_line_ns::getSimInstAddr<atlantic_line_ns::Cr>():
mov r2, #0
ldr r3, .L10
str r2, [r3]
str r2, [r3, #4]
bx lr
Заранее спасибо.
ОБНОВЛЕНИЕ
После прочтения документации ARM я понимаю, что
.L7:
.word 131586
.word .LANCHOR0
Выделяет 2 области памяти, сохраняя значения, 131586 и значение в .LANCHOR0, там.Эти места памяти расположены рядом друг с другом?Кроме того, что означает .LANCHR0?