инструкция «выровнять» на MIPS - PullRequest
7 голосов
/ 20 июня 2009

Что именно делает эта инструкция? Я знаю, что он пытается выровнять данные с кратным определенного числа, но зачем вам это нужно? Есть ли в других ассемблерах эквивалентная инструкция?

Ответы [ 3 ]

9 голосов
/ 20 июня 2009

Обычно вы выравниваете данные, чтобы повысить производительность. Для большинства процессоров доступ к памяти имеет некоторые ограничения, когда не осуществляется доступ к определенным границам байтов. Для других ассемблеров часто есть какой-то псевдооператор .align для этого. Большинство компиляторов также выравнивают свои структуры данных (хотя вы можете отключить его для целей отладки).

См. Также Запись в Википедии .

Обратите внимание, что не эмулируемые системы MIPS могут даже зависать, если вы попытаетесь получить доступ к невыровненным ячейкам памяти (см. здесь и здесь ).

1 голос
/ 20 июня 2009

Есть ли эквивалентные инструкции для других ассемблеров?

MASM имеет директиву Align: http://msdn.microsoft.com/en-us/library/dwa9fwef(VS.80).aspx

0 голосов
/ 21 июня 2009

Это выравнивает все в n-й степени от двух. Это не инструкция, это директива, которая будет переведена в инструкции

Что касается его использования, например:

инструкции mips32 всегда имеют длину 32 бита. Поэтому каждая инструкция должна начинаться с границы слова. Добавление директивы .align перед запуском кода выравнивает объекты до 32 бит. Это имеет много преимуществ, в том числе то, что для выборки команды требуется только 1 доступ к памяти, и что это, вероятно, будет полезным для кэша команд.

...