gpt4 book ai didi

label - NASM - 使用位标志扩展标签

转载 作者:行者123 更新时间:2023-12-04 06:40:08 25 4
gpt4 key购买 nike

我需要设置一些标签地址/偏移量的最高位。

我试过:

测试.nasm:

BITS 32

dw mylabel | 0x8000

mylabel:
dd 0

但是当我尝试组装它时,我得到:
nasm -f bin test.nasm
test.nasm:3: error: `|' operator may only be applied to scalar values

为什么它不将 mylabel 视为标量值?我认为标签只是被汇编程序替换为它们的地址(标量值)。

如果重要的话,我正在使用 nasm v 2.09.04。

在此先感谢您的帮助。

编辑:
我已经能够使用 + 而不是 |。看起来好像按位运算符不适用于标签。你怎么看,这是故意的还是一个错误?

最佳答案

标签是一个可重定位的值——它的值由链接器/加载器修改。两个标签(在同一部分)之间的差异是一个标量值,Nasm 将使用它。

dd (mylabel - $$) | 0x80000000

我也修正了 32 位代码中的标签是 16 位的误解。

这样做的目的是什么?

最好的事物,
坦率

关于label - NASM - 使用位标志扩展标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com