符号约定

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

符号约定

这份指南使用特别的符号来表示数据结构的格式,指令的符号表示和16进制、2进制数。具体见下。

1位和字节顺序

内存的数据结构如图所示,较低的地址出现在图片的底端;地址向上增长。位地址从右向左标记。IA-32

处理器是”little endian”处理器;这意味着一个字将从最低字节开始存储。图1:

2保留位和软件兼容性

在大多数的寄存器和内存分配参考书中,有的位被保留。当位被保留的时候,************************

软件应该遵从下面处理保留位的建议:

l当测试包含保留位的寄存器的值时,不要依赖于这些保留位。测试之前把这些保留位标记出来。

l向内存和寄存器中存数据时,不要依赖于那些保留位

l不要将任何保留信息写入保留位

l当加载一个寄存器的时候,一定只能将文档中规定的值存到保留位。如果可以,还能加载相同寄存器的值。

NOTE

避免任何软件依赖于保留位的值。如果依赖那些位的

值,将会导致处理器做出一些未知的事,还会使软件

于未来的cpu不兼容。

3指令操作数

指令用符号表示,这只是IA-32汇编语言的一部分。一个指令有下面的格式:

标签:助记符参数1,参数2,参数3

l标签是一个以冒号结尾的识别符

l助记符是指令操作码的助记符

l操作数:参数1,参数2,参数3是可选得。可能有0~3个操作数,这取决于操作码。操作数可能是数据本身,也可能是代表数据的符号。****************

4十六进制和二进制数

0F82EH、110B

5段地址

处理器使用字节地址,意思是内存被视为一系列字节来组织和访问。无论有多少字节正在被仿问,都是用一个字节地址去寻找。可以被寻址的内存范围叫地址空间(address space)。

处理器也支持段地址,这是一个程序可支配的地址空间的一部分,叫做段(segments)。例如,一个程序可以让它的代码和堆栈驻留在分开的段。代码地址将总是指向代码空间,堆栈地址总是指向堆栈空间。下面的标记指出了一个在段中的字节地址:

Segment-reg:Byte-address

例如:DS:FF79H CS:EIP

6关于CPUID、CR、MSR值的新语法

想获取功能标志、状态和系统信息,可以使用CPUID指令,检查控制寄存器,读取model-specific寄存器。我们采用了一种新的排列方式来描述这个信息。见下图:

7异常

一个异常是一条指令发生错误时导致的特别的事件。例如,除零的时候会产生一个异常。当然,其他的异常会发生在其他的情况下。有些异常可能会提供错误代码。错误代码提示了关于那个错误的附加信息。一个被用作显示异常和错误代码的符号的例子如下:

#PF(fault code)

相关文档
最新文档