“尝试在 BSS 空间中保留非常量”,并在不同文件中使用 EQU

问题描述 投票:0回答:1

这将是非常具体的,但我很好奇。 我有一个 A.asm 文件和一个 B.asm 文件。

在A.asm中有:

global nodeNum

section .data
; reading consts
cmdNum          equ 9
cmdSize         equ 5
; tree consts
nodeNum         equ 8

现在,在 B.asm 中:

extern nodeNum

section .bss
t1          resb 1
t2          resb 5*nodeNum
treevptr    resd 1

组装此代码会出现“尝试在 BSS 空间中保留非常量数量”错误。

我的问题是:

  1. 为什么?伪命令
    equ
    将常数与标签关联起来,那么为什么会出现这个错误呢?
  2. 如果是 B.asm 的以下 BSS 部分
t1          resb 1
t2          resb (1*nodeNum + 1*nodeNum)
treevptr    resd 1

它组装没有错误,但

nodeNum
为0,所以
t1+1
变得与
treevptr
相同。 为什么它在这里组装而不是在前一种情况下组装?

assembly nasm extern
1个回答
0
投票

我也遇到了类似的问题。 我使用带有 %define 指令的预处理器:

%定义 BUFFLEN1 500

...

.bss 部分

我的缓冲区:resb BUFFLEN1

© www.soinside.com 2019 - 2024. All rights reserved.