FWORD数据类型定义为6个字节,因此如何将其转换为jmp指令中的32位虚拟地址:
jmp FWORD PTR [eax-0x67]
?...
最佳答案
当您跳转到FWORD PTR时,您正在执行的是“远跳转”-也就是说,指向的内存包含一个16位的“选择器”(指的是GDT或LDT中的段条目) ),以及选择器引用的段的起始位置的32位偏移量。段描述符当然包含有关段的数据,包括它在内存中的起始位置。
在跳转期间,CPU会进行一些特权检查,以确保选择器有效且被允许(涉及特权级别和段类型等),然后将前16位有效地加载到CS中,然后将其余16位有效地加载到EIP中。从那时起,代码地址有效地获得了CS段的基地址,从而将其转换为虚拟地址。
关于assembly - jmp FWORD PTR [eax-0x67]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12431909/