Мне нужно установить старший бит некоторого адреса/смещения метки.
Я старался:
тест.насм:
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, если это имеет значение.
Заранее благодарю за любую помощь.
EDIT: я смог использовать + вместо |. Похоже, что побитовые операторы не работают с метками. Как вы думаете, это специально или баг?