求助!Asm里面PUSH的参数大于Integer类型的最大值,怎么办?
某个CALL,例如:Var
tmpI:Integer;
call1:Pointer;
begin
tmpI:=$B4448C20;
call1:=Pointer($ffffffff);
Asm
pushad
push tmpi
call call1
popad
end;
end;
需要PUSH的参数 tmpI 比如是 $B4448C20,那么这样的情况数值下大于Integer最大值,怎么办?
如果 tmpI 不用Integer而用Int64来定义的话,在ASM里就会报错, U_Call.pas(556): Invalid combination of opcode and operands 即:操作码与操作对象的无效组合....
求助!谢谢! 啊,Integer类型的数值范围不是-2147483648 .. 2147483647吗?$B4448C20=3024391200,不是已经超出了Integer的范围了吗。况且这个参数还不一定小于$B4448C20... int 类型是 有符号的 你用无符号就可以了 例如 4楼说的 DWORD
所谓的符号就是有没负数
int 里的 FFFFFFFF 代表10进制 -1 因为他是有符号的整形
在DWORD FFFFFFFF 就代表10进制4294967295
页:
[1]