免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4624 | 回复: 5

CALL指令和JUMP指令的Opcode有点不明白 [复制链接]

论坛徽章:
0
发表于 2009-09-01 21:30 |显示全部楼层
Intel的白皮书里的Integer Instrction Formats and Encodings 对各个指令的Opcode进行了很详细的说明~~

     但我还有有点不明白,就是在CALL-Call Procedures(in other segment)里
    Opcode中的1001 1010: unsigned full offset, selector 这个“unsigned full offset, selector ”的意思不是很明白,有会的人给解释一下嘛?

论坛徽章:
0
发表于 2009-09-02 09:35 |显示全部楼层
帮指教一下咯~~~~在下感激不尽~

论坛徽章:
0
发表于 2009-09-02 15:10 |显示全部楼层
16 bit: call 偏移,段基址
32 bit: call 偏移,选择子

论坛徽章:
0
发表于 2009-09-02 20:04 |显示全部楼层
谢谢LS,已弄明白~~~

论坛徽章:
0
发表于 2009-09-03 01:23 |显示全部楼层
它的意思是说:

在 opcode 为 1001 1010 情况下(也就是:9A)

call 指令的操作数是 unsigned 的 offset 和 selector


注意,此时它是 unsigned 的,也就是直接的 offset 和 selector,而不是 singed 的



1、有 singed 的 offset 和 selector 值吗? 没有

  但是,有 signed 的 offset 值!!


2、什么情况下是 signed 的 offset ?

  当 call 的 opcode 等于 E8 (1110 1000)时,它的 offset 是 signed 的
或者:
 当 jmp 的 opcode 为 E9(1110 1001)以及 EB (1110 1011)时,它的 offset 是 signed 的

也就是说: 它是依赖于当前 eip 的 偏移量
 

论坛徽章:
0
发表于 2009-09-05 09:36 |显示全部楼层
哦,原来如此,真是太谢谢mik的讲解了~~~~崇拜ing
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP