allasm.ru |
|
Все данные в RAM должны быть выравненены так, чтобы их адреса были кратны 2,
4, 8 или 16 согласно данной схеме:
На PPlain и PMMX при обращении к невыравненным данным будет теряться по меньшей мере 3 такта, если пересечена граница в 4 байта. Потери будут выше при пересечении границы кэша. На PPro, PII и PIII невыравненные данные удут стоить вам 6-12 дополнительных тактов, если пересечена граница кэша. Невыравненные операнды, меньшие чем 16 байтов и не перешедшие границу в 32 байта, не приводят к потерям.
Выравнивание данных на 8 или 16 в стеке двойных слов может стать проблемой.
Общий метод решения - установить выравненный указатель на кадр стека. Функция
с выравненными локальными данными может выглядеть примерно так:
В то время как выравнивание данных важно всегда, выравнивание кода не является необходимым на PPlain и PMMX. Принципы выравнивания кода на PPro, PII и PIII изложены в главе 15. |