FWORD数据类型定义为6字节,因此在jmp指令中如何将其转换为32位虚拟地址:
jmp FWORD PTR [eax-0x67]
?..。
发布于 2012-09-15 05:17:50
当您跳转到FWORD PTR时,您所做的是一个“远跳转”--也就是说,所指向的内存包含一个16位的“选择器”(它引用GDT或LDT中的段条目),以及从选择器所引用的段的开头开始的32位偏移量。段描述符包含关于段的数据,即course...including在内存中的起始位置。
在跳转期间,CPU执行一些权限检查,以确保选择器是有效和允许的(存在相关的权限级别和段类型等),然后它有效地将前16位加载到CS中,并将其余位加载到EIP中。从那时起,代码地址有效地将CS段的基地址添加到它们上,将它们转换为虚拟地址。
发布于 2012-09-15 05:22:47
远跳转使用完整的段base:offset值作为绝对地址,因此它由16位段和32位地址组成。它执行跳转到位于与当前代码段不同的段中的指令,但它应该处于相同的特权级别。
https://stackoverflow.com/questions/12431909
复制相似问题