JMP FWORD PTR [EAX-0x67] [英] jmp FWORD PTR [eax-0x67]?

查看:667
本文介绍了JMP FWORD PTR [EAX-0x67]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

该FWORD数据类型定义为6字节,因此它是如何折算为JMP指令32位虚拟地址:

The FWORD data type is defined as 6 bytes so how is it translated to a 32 bit virtual address in the jmp instruction:

    jmp FWORD PTR [eax-0x67]

?...

推荐答案

当你跳到一个FWORD PTR,你在做什么是一个远跳 - 也就是说,对准了存储器包含一个16位选择器(这是指在任一在GDT或LDT段条目),以及一个32位的从段的开始的选择是指抵消。段描述符包含有关数据段,当然......包括在内存中开始的地方。

When you jump to an FWORD PTR, what you're doing is a "far jump" -- that is, the memory being pointed at contains a 16-bit "selector" (which refers to a segment entry in either the GDT or LDT), and a 32-bit offset from the beginning of the segment the selector refers to. The segment descriptor contains data about the segment, of course...including where in memory it starts.

在跳转过程中,CPU做一些特权进行检查,以确保选择是有效的,允许的(有权限级别和细分种类和参与),那么它有效地加载的前16位为CS,其余​​的到EIP 。从此,code地址有效地得到CS段基址加到他们把他们变成虚拟地​​址。

During the jump, the CPU does some privilege checks to make sure the selector is valid and permitted (there's privilege levels and segment types and such involved), then it effectively loads the first 16 bits into CS, and the rest into EIP. From then on, code addresses effectively get the CS segment's base address added to them to turn them into virtual addresses.

这篇关于JMP FWORD PTR [EAX-0x67]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆