Я начал изучать сборку для арки ARM. Я читал в некоторых pdf-файлах и небольших учебниках в сети. Я понял код там. Но когда я написал простую глобальную программу hello в GCC, он дал файл сборки, содержимое которого сильно отличалось от того, что я узнал в pdf и в Интернете. (Я имею в виду главным образом директивы сборки).Код сборки, созданный различными компиляторами?
SO, это означает, что код сборки, сгенерированный разными компиляторами, отличается (все используют разные способы написания ассемблерных директив и некоторых других вещей). Как и все, что я читал в Интернете, я думаю, что они были основаны на компиляторе Kiel.
Если то, что я написал выше, истинно, тогда, согласно компилятору, я изучу язык ассемблера для ARM.
В общем, вы должны изучить вариант asm, используемый используемым ассемблером (или выбрать ассемблер на основе вашего варианта). Некоторые могут поддерживать несколько синтаксисов. Кроме того, различные варианты ARM используют разные общие синтаксические базы, например, оригинальное руководство программиста Acorn Risc Machine имеет совершенно иной синтаксис для современной сборки armv5tel. – mirabilos
даже в том же компиляторе выходной двоичный файл также зависит от переключателей, которые вы указали во время компиляции. –
'gcc' хорошо подходит для изучения ассемблера ARM/Thumb-2 ** через встроенный ассемблер ** (многие другие поддержка встроенного ассемблера). Кроме того, он свободен в использовании. Вам не нужно беспокоиться о разделах и т. Д. И писать небольшие фрагменты ассемблера. Часто лучше использовать встроенный ассемблер. Распределение регистров - очень скучная и утомительная работа, а также функция пролог/эпилог. Вы можете постепенно воспринимать инструкции типа ALU и т. Д., Прежде чем вам придется иметь дело с концепциями памяти/раздела/функций. Часто вы должны знать компоновщик с чистым ассемблером. –