如果 gnu 中的文件太大,则程序集失败
Fail assembly if file is too large in gnu as
我正在尝试 assemble 二进制文件必须适合特定大小的文件。我一直在尝试查看 assembler 是否有办法在它太大时失败,所以我知道。我在想:
.if . > 0x200
.error “binary too large”
.endif
但这行不通,因为 if 表达式不是绝对的。我也试过用标签来做,但也没用。有没有办法用指令或在 as 中做到这一点?
显然,如果您将当前地址设置为小于应有的值,汇编将失败。所以用
结束文件
. = 0x200
导致 as
如果文件比那个大则抛出错误。
编辑:正如@fuz 所指出的,这会将文件填充到该大小,如果这对您来说是个问题,我没有答案。
在最后一次通过期间在汇编时查询段大小对我来说似乎很有用,这就是属性 SIZE# 能够在 EuroAssembler 中检索此信息的原因。
因此,如果您不坚持 GNU 为 ,这行得通:
binary PROGRAM
%AllowedSize %SETA 9
[DATA] SEGMENT ; Common segment for code and data.
DB "1234567890" ; Example of data contents.
%IF SIZE# [DATA] > %AllowedSize
%ERROR Size of program "binary" exceeds %AllowedSize.
%ENDIF
ENDPROGRAM
我正在尝试 assemble 二进制文件必须适合特定大小的文件。我一直在尝试查看 assembler 是否有办法在它太大时失败,所以我知道。我在想:
.if . > 0x200
.error “binary too large”
.endif
但这行不通,因为 if 表达式不是绝对的。我也试过用标签来做,但也没用。有没有办法用指令或在 as 中做到这一点?
显然,如果您将当前地址设置为小于应有的值,汇编将失败。所以用
结束文件. = 0x200
导致 as
如果文件比那个大则抛出错误。
编辑:正如@fuz 所指出的,这会将文件填充到该大小,如果这对您来说是个问题,我没有答案。
在最后一次通过期间在汇编时查询段大小对我来说似乎很有用,这就是属性 SIZE# 能够在 EuroAssembler 中检索此信息的原因。
因此,如果您不坚持 GNU 为 ,这行得通:
binary PROGRAM
%AllowedSize %SETA 9
[DATA] SEGMENT ; Common segment for code and data.
DB "1234567890" ; Example of data contents.
%IF SIZE# [DATA] > %AllowedSize
%ERROR Size of program "binary" exceeds %AllowedSize.
%ENDIF
ENDPROGRAM