The "warning: signed dword immediate exceeds bounds" is the bane of my existence at the moment as it appears to be inconsistent or I am just not seeing an obvious fact.
I have the following structure declared:
struc FRTType
.class resq 1 ; Class
.type resq 1 ; Type
endstruc
I have the following assigns:
%assign TYPE_SCALAR 0xfffffffffffffff1
%assign INTEGER 0xffffffff1000a8a9
And in a function I have:
cmp qword [rdi+FRTType.class], TYPE_SCALAR ; This works fine
jne .exception
cmp qword [rdi+FRTType.type], INTEGER ; THIS PRODUCES WARNING
I know I can mov rax, INTEGER
and then do the compare but that seems unneeded given the first compare has no problem.