如果 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