Я пытаюсь понять принципы выравнивания машинного кода.У меня есть реализация на ассемблере, которая может генерировать машинный код во время выполнения.Я использую 16-байтовое выравнивание в каждом назначении ветви, но похоже, что это не оптимальный выбор, так как я заметил, что, если я удаляю выравнивание, чем иногда, тот же самый код работает быстрее.Я думаю, что это как-то связано с шириной строки кэша, так что некоторые команды обрезаются строкой кэша, и из-за этого процессор останавливается.Поэтому, если несколько байтов выравнивания вставлены в одном месте, они будут перемещать инструкции куда-нибудь дальше, проходя границу кеша ...
Я надеялся реализовать процедуру автоматического выравнивания, которая может обрабатывать код в целом ивставить выравнивание в соответствии со спецификацией ЦП (ширина строки кэша, 32/64 бита и т. д.) ...
Может кто-нибудь дать некоторые советы об этой процедуре?Например, целевым процессором может быть 64-разрядная платформа Intel Core i7.
Спасибо.