собсна задача объяснить насму инструкцию .align 32 я пытался сделать это как 32-($ & 0x1f) но тварь пишет что вот низя &. посоветуйт как одолеть проблемму.
На сколько я понимаю процесс линковки, никак: -$ запрещён. В masm align 32 тоже не работает, пока что-то там с секциями не намудришь. Хотя можно попробовать уйти от абсолютных адресов (nasm не знаю): Код (Text): label: ..... reserve_bytes (32- ($ - label) & 31) & 31 В fasm можно обойти ограничения, накладываемые на $ используя кодогенерацию: Код (Text): macro falign value { virtual inc byte [dword $] load addrimm from $-4 end virtual rb (value-1)-(addrimm+value-1) mod value } Хотя там есть возможности генерировать сразу бинарник, а не объектник, тогда можно использовать встроенный align с любым разумным параметром.
$ cat 1.asm db 0xCC align 32 db 0xBB $ nasm -f bin 1.asm $ hexdump -C 1 00000000 cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |................| 00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |................| 00000020 bb |.| 00000021 или я чёто невъехал?