【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-9

文件下载与邀请翻译者

学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。

讲解下载英特尔开发手册的文章

翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么,欢迎你的加入。

另外,我不仅仅是打算翻译这一种手册,以后,可能还需要去翻译许多的英文技术文档,以支持系统底层的教学,培养系统底层程序员。

我有钱了以后,应该是会出私钱来请人翻译一批英文技术文档。当前,暂时没钱,若是有志愿加入的,欢迎啊。

本节翻译

【原文】1.5.3. Instruction Operands
When instructions are represented symbolically, a subset of the IA-32 assembly language is used. In this subset, an instruction has the following format:
label: mnemonic argument1, argument2, argument3
where:
• A label is an identifier which is followed by a colon.
• A mnemonic is a reserved name for a class of instruction opcodes which have the same function.
• The operands argument1, argument2, and argument3 are optional. There may be from zero to three operands, depending on the opcode. When present, they take the form of either literals or identifiers for data items. Operand identifiers are either reserved names of registers or are assumed to be assigned to data items declared in another part of the program (which may not be shown in the example).

【翻译】1.5.3. 指令操作数

当指令用符号表示时,使用IA-32汇编语言的一个子集。在这个子集中,指令具有以下格式:

标签:助记符 argument1, argument2, argument3

地点:

标签是一个标识符,后面跟一个冒号。

助记符是一组具有相同功能的指令操作码的保留名称。

•操作数argument1、argument2和argument3是可选的。根据操作码的不同,可以有0到3个操作数。当出现时,它们采用数据项的字面量或标识符的形式。操作数标识符要么是寄存器的保留名称,要么被假定分配给在程序的另一部分声明的数据项(在示例中可能没有显示)。

【原文】When two operands are present in an arithmetic or logical instruction, the right operand is the source and the left operand is the destination.

For example:

LOADREG: MOV EAX, SUBTOTAL

In this example LOADREG is a label, MOV is the mnemonic identifier of an opcode, EAX is the destination operand, and SUBTOTAL is the source operand. Some assembly languages put the source and destination in reverse order.

【翻译】当算术或逻辑指令中存在两个操作数时,右操作数是源操作数,左操作数是目的操作数。

例如:

LOADREG: MOV EAX, SUBTOTAL

在这个例子中,LOADREG是一个标签,MOV是操作码的助记符标识符,EAX是目的操作数,SUBTOTAL是源操作数。有些汇编语言将源和目标按相反的顺序排列。

【讲评】一般来讲,C语言,C++这种高级语言,它们的语法比较一致。尤其是像C语言,它的跨平台性很棒。而对于汇编语言,则语法规则会有一定的不同。同样是用来编译英特尔 IA-32 架构的汇编语言,GNU AS 汇编器与 NASM 汇编器就很不同。

手册中说,有的汇编器将源操作数和目的操作数按照相反的方向放置,它所指的,大概就是 GNU AS 汇编器。

比如说,在 NASM 汇编里面,我们将立即数 0x1234 放入寄存器 EAX 里面,汇编指令码如下。

mov eax, 0x1234

而在 GNU AS 汇编器里面,写法如下所示。

movl $0x1234, %eax

关于 NASM 汇编与 GNU AS 汇编的详细语法知识,还请大家在各自的教材与教程里面去学习。这里,我只是略微举个例子。

以后,若是有机会,我会去设置专栏来讲解 GNU AS 汇编语法。因为,当代的开源的 Linux 内核六面,所采用的汇编语法,便是 GNU AS 汇编语法。想要学习系统底层知识,学习操作系统原理,那么, GNU AS 是大家必须要去学习的一门汇编语言。

相关推荐
大聪明-PLUS6 小时前
如何使用 Docker 打包一个简单的应用程序:简易指南
linux·嵌入式·arm·smarc
XINVRY-FPGA7 小时前
XC95288XL-10TQG144I Xilinx AMD CPLD
arm开发·单片机·嵌入式硬件·mcu·fpga开发·硬件工程·fpga
serve the people8 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
李昊哲小课8 小时前
Ubuntu 24.04 MariaDB 完整安装与配置文档
linux·ubuntu·mariadb
i道i9 小时前
Verilog 利用伪随机,时序,按键消抖等,实现一个(打地鼠)游戏
游戏·fpga开发·verilog
人间打气筒(Ada)10 小时前
zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
linux·内网穿透·内网·公网·zerotier·穿透
Elias不吃糖10 小时前
Git常用指令合集
linux·git
_OP_CHEN11 小时前
Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
linux·运维·服务器·编辑器·vim·linux生态·linux软件
Maple_land11 小时前
第1篇:Linux工具复盘上篇:yum与vim
linux·运维·服务器·c++·centos
奋斗的牛马11 小时前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信