首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jmp FWORD PTR [eax-0x67]?

jmp FWORD PTR [eax-0x67]?
EN

Stack Overflow用户
提问于 2012-09-15 05:01:45
回答 2查看 2.3K关注 0票数 6

FWORD数据类型定义为6字节,因此在jmp指令中如何将其转换为32位虚拟地址:

代码语言:javascript
运行
复制
    jmp FWORD PTR [eax-0x67]

?..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-15 05:17:50

当您跳转到FWORD PTR时,您所做的是一个“远跳转”--也就是说,所指向的内存包含一个16位的“选择器”(它引用GDT或LDT中的段条目),以及从选择器所引用的段的开头开始的32位偏移量。段描述符包含关于段的数据,即course...including在内存中的起始位置。

在跳转期间,CPU执行一些权限检查,以确保选择器是有效和允许的(存在相关的权限级别和段类型等),然后它有效地将前16位加载到CS中,并将其余位加载到EIP中。从那时起,代码地址有效地将CS段的基地址添加到它们上,将它们转换为虚拟地址。

票数 7
EN

Stack Overflow用户

发布于 2012-09-15 05:22:47

远跳转使用完整的段base:offset值作为绝对地址,因此它由16位段和32位地址组成。它执行跳转到位于与当前代码段不同的段中的指令,但它应该处于相同的特权级别。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12431909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档