菜鸟问题:什么编译器能直接编译 call 400000 呢!
本帖最后由 mywmshow 于 2012-11-13 09:10:19 编辑 我用Masm.exe编译,好像只能用寄存器过渡
mov eax,400000
call eax
什么编译器能直接编译 call 400000 呢!
[解决办法]
call eax,400000 通常随该指令的位置而不同的,因为机器码里的是相对偏移而非直接的目标地址 400000 ,所以从简单可靠性上来说,通过 eax 这样的中转是更好的方法,或者将 400000 压栈再 ret 。直接的目的地址的 call 只支持 call m16:32 模式,即带段址的 far call 。
[解决办法]
你可以尝试gcc内嵌汇编:
__asm__ __volatile__("call 0x400000");
不过要加修正系数,搞这个没意义。