首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

初学者有关问题:什么编译器能直接编译 call 400000 呢

2013-04-05 
菜鸟问题:什么编译器能直接编译 call 400000 呢!本帖最后由 mywmshow 于 2012-11-13 09:10:19 编辑我用Mas

菜鸟问题:什么编译器能直接编译 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");

不过要加修正系数,搞这个没意义。

热点排行