У меня есть эта директива сборки, называемая .p2align, которая генерируется gcc из источника программы C.
Как я понимаю, выравниваемый доступ быстрее, чем неглавный, а также программа asm не автоматически выравнивает места памяти или оптимизирует доступ к памяти, поэтому вам нужно это сделать.
Я не могу прочитать этот .p2align 4,,15, особенно последнюю часть, 15.
Пропуская тот факт, что, по-видимому, gcc генерирует 2 , вместо 1, как сообщается многими документами; я получаю, что этот фрагмент asm выравнивает память таким образом, что каждое место занимает 2 ^ 4 бит, что означает 16 бит, поэтому я считаю, что справедливо сказать, что WORD имеет длину 16 бит в этом случай.
Теперь, что означает 15? Это несколько бит для чего? Начинается ли подсчет с 0, поэтому "реальная" величина равна 16 вместо 15?
EDIT:
Я просто перевел один и тот же источник C как на 32-битный, так и на 64-разрядный код, память всегда выравнивается точно так же с той же директивой .p2align 4,,15. Почему это?