Ассемблер PowerPC не распознает неопределенную переменную с аннотацией @h
Если я соберу следующее PowerPC
...
asm.as
:
li r0, hello
nop
... я получаю соответствующее сообщение об ошибке:
> powerpc-eabi-as -mregnames -mgekko ../asm.as -o asm.ob
../asm.as: Assembler messages:
../asm.as:2: Error: unsupported relocation against hello
Это потому что hello
не определено Ошибка желаемого поведения. Однако, если я использую @h
(более высокая 16-битная) аннотация, она будет молча собираться и принимать hello
имеет значение 0
:
asm.as
:
li r0, hello@h
nop
Используемые команды:
$ powerpc-eabi-as -mregnames -mgekko ../asm.as -o asm.ob
$ powerpc-eabi-objcopy -O "binary" asm.ob asm
$ rm asm.ob
$ xxd -p asm
3800000060000000
Почему этот новый код теперь принимается ассемблером, когда hello
все еще не определено? Есть ли способ снова включить сообщение об ошибке? Я хочу немедленно выяснить, используется ли неопределенная переменная, подобная этой.