#assembly #g #x86 #gnu-assembler
#сборка #g #x86 #gnu-ассемблер
Вопрос:
Я не уверен, как интерпретировать поток выполнения ASM. До сих пор все файлы, которые я просматривал, имели явные переходы (синтаксис Intel x86 AT amp; T, т. Е. jmp или jl) к меткам в файле ASM.
Мой вопрос: что происходит, когда вы достигаете конца метки без явного перехода к какой-либо другой метке. Продолжается ли выполнение до следующей метки?
Пример:
foo:
opcodes
...
nextLablel:
moreopcodes
...
После выполнения кодов операций под меткой ‘foo’ ассемблер переходит к ‘nextLablel’?
Заранее спасибо!
Ответ №1:
Метки не существуют для фактического кода, так что да, если ветви нет, код будет выполняться естественным образом. Ассемблер просто продолжит работу с кодом, игнорируя любые метки. Метки существуют только как удобный способ ветвления после jmp, je и подобных.
Если в вашем коде не было никаких ветвей, у вас все равно могло быть столько меток, сколько вы хотели. Они ничего бы не сделали, и это было бы очень плохой практикой, но для вас это иллюстрирует идею о том, что они не вызывают никаких проблем с естественным потоком кода.
Комментарии:
1. Спасибо! Я более глубоко изучил код ASM и, основываясь на исходном коде C, он фактически продолжает выполнение, как вы заявили. Еще раз спасибо!