Что именно делает эта инструкция? Я знаю, что он пытается сопоставить данные с кратным определенному числу, но зачем вам это нужно? Есть ли аналогичная инструкция в других ассемблере?
инструкция «выровнять» на MIPS
Ответы (3)
Обычно вы выравниваете данные, чтобы повысить производительность. Для большинства процессоров доступ к памяти имеет некоторые ограничения, если доступ не осуществляется к определенным границам байтов. Для других ассемблеров часто существует своего рода псевдооператор .align
для это. Большинство компиляторов также выравнивают свои структуры данных (хотя вы можете отключить это для целей отладки).
См. также эту запись в Википедии.
Обратите внимание, что неэмулированные системы MIPS могут даже дать сбой, если вы попытаетесь получить доступ к невыровненным ячейкам памяти (см. здесь и здесь).
Есть ли аналогичная инструкция в других ассемблере?
MASM имеет директиву Align: http://msdn.microsoft.com/en-us/library/dwa9fwef(VS.80).aspx
Он выравнивает все в энной степени двойки. Это не инструкция, это директива, которая будет переведена в инструкции
Что касается его использования, например:
Инструкции mips32 всегда имеют длину 32 бита. Таким образом, каждая инструкция должна начинаться на границе слова. Добавление директивы .align перед запуском кода приводит к выравниванию до 32 бит. Это имеет много преимуществ, в том числе то, что для выборки инструкции требуется только 1 доступ к памяти, и что это, вероятно, будет полезно для кэша инструкций.