Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 253, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

linux汇编之IA32数据格式及数据操作

IA32数据格式

类型                         Intel数据类型                         汇编代码后缀

Char                        字节                                      b(1字节)

Short                                                               w(2字节)

Int                          双字                                      l4字节)

Long int                  双字                                      l4字节)

Long long int               -                                         4字节

Char*                    双字                                        l4字节)

Float                     单精度                                     s4字节)

Double                  双精度                                    l8字节)

Long double          扩展精度                                   t1012字节)

Char*这里指的是所有指针类型,注意:c语言新增加的long long是八字节,但是硬件IA32不支持这个类型。

例如:mo
 

寄存器(832位的寄存器,均以%e开头)

%eax%ecx%edx:调用者保存(数据)寄存器,当过程p调用qq可以覆盖这些寄存器,但是不会改变p中的数据。

%ebx%esi%edi:被调用者保存(数据)寄存器,当过场p调用qq必须在覆盖这些寄存器数据前,要把它们保存到栈,
                      并在调用结束返回时恢复它们,这些数据
p或其他过程需要它们。

%esp%ebp:有关栈指针的

 

 操作数分三种:立即数即常数,用$开头,后面加一个整数表示;
                     寄存器数,对字操作而言表示某个寄存器中的保存的值;对字节操作而言是8个单字节寄存器中的一个,比如:%al(eax寄存器中的低8位)
                     存储器引用,根据计算出的有效地址来访问存储器的某个位置;包括四部分:偏移数(lmm)、基地址Eb、变址寄存器Ei、比例因子s

有关操作数格式表

类型       格式                    操作数值                              名称

立即数     $Imm                 Imm                                   立即数寻址

寄存器     Ea                           R[Ea]                                 寄存器寻址

存储器     Imm                   M[Imm]                              绝对寻址

存储器     Ea                M[R[Ea]]                             间接寻址

存储器     Imm(Eb)             M[Imm+R[Eb]]                    (基地址+偏移量)寻址

存储器     (Eb,Ei)                M[R[Eb]+R[Ei]]                   变址寻址

存储器     Imm(Eb,Ei)          M[Imm+R[Eb]+R[Ei]]          变址寻址

存储器     (,Ei,s)                 M[R[Eb].s]                         比例变址寻址

存储器     Imm(,Ei,,,s)         M[Imm+R[Eb].s]                比例变址寻址

存储器     (Eb,Ei,s)             M[R[Eb]+R[Ei].s]                比例变址寻址

寄存器     Imm(Eb,Ei,s)       M[Imm+R[Eb]+R[Ei].s]       比例变址寻址

S必须是1248中的一个,最后一个常用在数组中

例如:地址0x100的值是56,那么操作数0x100的值就是56,属于绝对寻址;$0x100的值0x100,是立即数寻址;

 

 

posted on 2013-01-16 21:51 Benjamin 阅读(716) 评论(0)  编辑 收藏 引用 所属分类: linux


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理