自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

转载 X86指令编码内幕 --- ModRM 与 SIB 设计上的 2 个原则

<br />X86指令编码内幕 --- ModRM 与 SIB 设计上的 2 个原则<br /> <br />1、 rbp 作为 base 寄存器时,必须以 [base + disp] 形式存在 <br />  这种设计思想大概是基于:rbp 意为 stack base pointer,既然是 base pointer 那么它应要以 base 加上 offset 这种形式存在才合符它的意义。 <br />  基于这点,x86/x64 的编码上是没有 [rbp] 这个寻址模式存的,只有 [rbp + disp

2011-03-25 04:28:00 2691

原创 X86指令编码内幕 --- immediate 值

<br />immediate 值 <br /> <br />immediate 部分为指令提供一个 immediate operand。<br />immediate 寻址分为两种:需要 ModRM 字节引导和直接嵌在 opcode 中。 <br />但是:<br />  ModRM 字节本身是不提供 immediate 寻址的,这个 ModRM 字节除了提供 register 和 memory 寻址外,只是起了对 Opcode 进行补充的作用,即:这个 Opcode 是一个 Group Opcode<b

2011-03-19 06:17:00 2016

转载 X86指令编码内幕 --- displacement 值

<br />displacement 值 <br /> <br />displacement 是 ModRM 地址寻址里的一部分,displacement 为 base 或 index 提供一个 offset 值。<br />因此:在指令的编码中必须要提供 ModRM 字节,需要的时候还要提供 SIB 字节。<br /> 1、关于 displacement 的看法 (1)基于 ModRM 字节寻址的情况下,displacement 不是指令中的 immediate 部分<br />例如指令:mov edx,

2011-03-15 07:02:00 3131 1

转载 X86指令编码内幕 --- SIB 补充寻址

<br />SIB 是对 ModRM 寻址的一个补充:<br />★ ModRM 提供的是 registers 寻址、[register] 寻址(寄存器间接寻址)以及 [register + displacement](寄存器基址寻址)。<br />★ SIB 提供的是 [base + index * scale] 这种形式的寻址。即:基址 + 变址 <br />同样,SIB 是可选的,前面已经介绍:SIB 字节由 ModRM.r/m = 100 引导出来,指令中命名用了 [base + index] 这种

2011-03-10 05:26:00 4624

转载 X86指令编码内幕 --- ModRM 寻址模式

<br />ModRM 寻址模式 在 x86/x64 指令集的世界里:<br />Opcode 对指令提供操作码,ModRM 最主要作用是对指令的 operands 提供寻址,另一个作用是对 Opcode 进行补充,而 SIB 则是对 ModRM 进行补充寻址<br /> 有两种情况下是无需用 ModRM 提供寻址的:<br />(1)一部分操作数是寄存器的,它直接嵌入 Opcode 中。<br /><br />(2)一部分操作数是立即数的,它直接嵌入指令编码中。<br /><br /> <br /><br

2011-03-08 18:24:00 10540 1

转载 X86指令编码内幕 --- 指令 Opcode 码

指令 Opcode 码 x86 指令编码的核心是:Opcode、ModRM 以及 SIB。Opcode 提供指令的操作码,ModRM 及 SIB 提供操作数的寻址模式。指令编码设计模式是:Opcode 的设计要考虑兼顾 ModRM。ModRM 要服务于 Opcode,SIB 是对 ModRM 的补充辅助。 1.初窥 Opcode在 1 个字节的空间里:00 ~ FF,Prefix 与 Opcode 共同占用这个空间。由于 x86/x64 是 CISC 架构,指令不定长。解码器解码的唯一途径就是按指令编码的序

2011-03-08 03:16:00 15314 1

转载 X86指令内幕 ——深入了解Prefix

1. Legacy prefix 1.1 legacy prefix 的作用legacy prefix 主要有以下作用: 调整内存操作数的属性 增强指令的功能 提供额外的作用  1.2 legacy prefix 分类(1) operand size override prefix:66H --- 改变操作数大小(2) address size override preifx:67H --- 改变操作数地址模式(3) segment override prefix:改变 memory 操作数段选择子,包括:

2011-03-07 20:05:00 7994 1

转载 X86指令编码内幕 --- 指令格式

<br />在序言里的例子里:<br /> <br />mov dword ptr es:[eax + ecx * 8 + 0x11223344], 0x12345678<br /> <br />这里稍作修改:将内存操作数 operand size 的指示符 word ptr 改回 dword ptr,使得指令的 operand size 是 32 位。<br />这是个具有典型指令编码意义的指令,它的 encodes(机器编码)是:26 c7 84 c8 44 33 22 11 78 56 34 12 (

2011-03-07 03:16:00 6942

转载 X86指令内幕 —— 序

C 的经典入门例子:int main(){    printf("Hello, World/n");    return 0;} 下面来看看 x86/x64 指令 encode 的 2 个例子: 例子1:在当前 32 位系统下,有下面汇编语句(Intel 格式): 这是一条 mov 指令,目标操作数是 memory,源操作数是 immediate注意:我特地将目的操作数的大小定为是 word(2个字节),而不是 dword。但是,源操作数却是一个 dword 大小的 0x12345678。 那么:对于这条汇

2011-03-07 02:48:00 2986 2

原创 Windows 7 对多核的支持

<br />Windows 7 和 Windows Server 2008 R2 一个重要更新是增强了对多核的支持。 现已可以支持超过64个逻辑处理器(也就是所谓的“核”),并且引入了NUMA 技术, 大幅度提高多核运算的性能。 <br /> <br />传统的多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器与一个集中的存储器和I/O总线相连。所有处理器只能访问同一个物理存储器,因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时候

2011-03-07 02:34:00 1261

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除