我正在使用nasm汇编语言编写一个程序,以适应引导扇区的大小限制(最大512字节)。
例如:nasm -f bin boot.asm -o boot.bin
程序的最后两行用0填充剩余空间并添加魔数字节:
times 510 - ($-$$) db 0 ; Pad the remaining of the first 510 bytes with 0
dw 0xaa55 ; Magic bytes required at end of boot sector
boot.bin
输出的文件总是512个字节(符合预期),因此我不能轻易地通过查看boot.bin
的大小来获取有意义的(非填充和非幻数字节)指令的大小。
我想在汇编时打印($-$$)
(类似于gcc的#warning
或#pragma message
),但我找不到任何在nasm汇编时打印的方法。
是否有一种简洁或直接的方法来知道填充之前指令的大小?
最好避免使用hacky方法,例如在运行时打印或向后搜索boot.bin
以查找非零值。
-l
选项请求一个列表,或者在nasm外部使用您的构建环境填充文件即可。 - Jester-l listing.txt
来生成一个清单文件。在清单文件中,可以清楚地看到有意义指令的大小。 - Costava