Ich muss das höchste Bit einer Etikettenadresse/Offset setzen.NASM - Etikett mit Bit-Flag erweitern
Ich habe versucht:
test.nasm:
BITS 32
dw mylabel | 0x8000
mylabel:
dd 0
Aber wenn man versucht, dies zu montieren ich:
nasm -f bin test.nasm
test.nasm:3: error: `|' operator may only be applied to scalar values
Warum es mylabel als Skalar nicht sehen Wert? Ich dachte, Labels werden einfach durch ihre Adresse (Skalarwert) vom Assembler ersetzt.
Ich benutze Nasm v 2.09.04, wenn das zählt.
Vielen Dank im Voraus für jede Hilfe.
EDIT: Ich habe in der Lage gewesen + statt verwenden |. Es sieht so aus, als ob die bitweisen Operatoren nicht auf Labels arbeiten. Was denkst du, ist das absichtlich oder ein Fehler?
Das dw soll den Offset (als 16-Bit-Wert) des Mylabel-Labels vom Anfang der Datei speichern, aber es muss mit einem Flag erweitert werden. Ich schreibe den .reloc Teil einer Win EXE (PE) Datei/Bild manuell. – masterxilo