我的汇编学习之路(1):指令
- 格式:doc
- 大小:20.50 KB
- 文档页数:3
汇编语言常用指令汇总持续更新汇编语言常用指令汇总汇编语言是一种低级编程语言,用于与计算机硬件进行直接交互。
熟悉汇编语言的常用指令对于理解计算机底层原理和进行底层编程非常重要。
本文将对汇编语言常用指令进行汇总,并持续更新。
1. 数据传输指令:- MOV:用于将数据从一个位置复制到另一个位置。
- LXI:用于将双字节立即数加载到指定的寄存器对中。
- LDA:用于将累加器加载到内存地址中的数据。
- STA:用于将累加器中的数据存储到指定的内存地址中。
2. 算术运算指令:- ADD:用于将累加器的内容与给定的寄存器或内存位置中的数据相加。
- SUB:用于从累加器中减去给定的寄存器或内存位置中的数据。
- INR:用于将给定的寄存器或内存位置中的数据增加1。
- DCR:用于将给定的寄存器或内存位置中的数据减少1。
3. 逻辑运算指令:- AND:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑与操作。
- OR:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑或操作。
- XOR:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑异或操作。
- NOT:用于对累加器的内容进行逻辑非操作。
4. 控制指令:- JMP:用于无条件转移到指定的内存地址。
- JZ:在累加器为零时,转移到指定的内存地址。
- JC:在进位标志为1时,转移到指定的内存地址。
- CALL:用于调用子程序。
5. 栈操作指令:- PUSH:用于将给定的寄存器或数据压入栈中。
- POP:从栈中弹出数据并存储到给定的寄存器中。
6. 输入输出指令:- IN:从外部设备读取数据,并存储到累加器中。
- OUT:将累加器中的数据发送到外部设备。
以上仅是汇编语言中常用指令的一小部分,还有许多其他指令可用于执行更复杂的任务。
在实际的汇编语言程序中,这些指令通常会与标签、变量和宏指令一起使用。
总结:汇编语言常用指令汇总了数据传输、算术运算、逻辑运算、控制、栈操作和输入输出等方面的指令。
汇编语言程序设计基本命令汇编语言是一种底层的编程语言,直接操作计算机硬件,其指令由一系列的机器码组成。
在汇编语言程序设计中,我们需要了解一些基本的命令,包括数据传送指令、算术运算指令、控制转移指令等,下面就对这些命令做一详细的介绍。
1.数据传送指令在汇编语言中,数据传送指令用来将数据从一个位置复制到另一个位置,常用的数据传送指令有MOV、LEA和XCHG。
-MOV指令:将源操作数的值复制给目标操作数,格式为MOV目标操作数,源操作数。
-LEA指令:用来将有效地址(即内存中的地址)传送给寄存器,格式为LEA目标操作数,源操作数。
-XCHG指令:交换两个操作数的值,格式为XCHG目标操作数,源操作数。
2.算术运算指令在汇编语言中,我们可以使用一系列算术运算指令来对数据进行运算和处理,常见的算术运算指令有ADD、SUB、MUL和DIV等。
-ADD指令:用于进行加法运算,格式为ADD目标操作数,源操作数。
-SUB指令:用于进行减法运算,格式为SUB目标操作数,源操作数。
-MUL指令:用于进行乘法运算,格式为MUL目标操作数,源操作数。
-DIV指令:用于进行除法运算,格式为DIV目标操作数,源操作数。
控制转移指令用于改变程序的执行流程,常见的控制转移指令有JMP、JZ、JE、JNE等。
-JMP指令:用于无条件地跳转到目标地址继续执行,格式为JMP目标地址。
-JZ指令:用于当结果为零时跳转到目标地址继续执行,格式为JZ目标地址。
-JE指令:用于当结果相等时跳转到目标地址继续执行,格式为JE目标地址。
-JNE指令:用于当结果不相等时跳转到目标地址继续执行,格式为JNE目标地址。
4.逻辑运算指令逻辑运算指令用于对数据进行逻辑运算,常见的逻辑运算指令有AND、OR、XOR和NOT等。
-AND指令:对两个操作数的对应位进行与运算,格式为AND目标操作数,源操作数。
-OR指令:对两个操作数的对应位进行或运算,格式为OR目标操作数,源操作数。
汇编语言各种指令解释及用法2篇汇编语言指令解释及用法汇编语言是一种低级编程语言,用于编写机器指令,直接控制计算机硬件。
它的指令集相对简单,但是非常灵活,可以直接操作寄存器和内存,实现各种功能。
在这篇文章中,我将为大家解释汇编语言中一些常用指令的含义和用法。
第一篇:数据传输与操作指令1. MOV指令:MOVE(MOV)指令用于在寄存器和内存之间传输数据。
例如,MOV AX, BX将BX的值传输到AX寄存器中。
2. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。
例如,ADD AX, 5将AX寄存器的值与5相加,并将结果存储在AX中。
3. SUB指令:SUB指令用于将两个操作数相减,并将结果存储在目标操作数中。
例如,SUB AX, 3将AX寄存器的值减去3,并将结果存储在AX中。
4. INC指令:INC指令用于将目标操作数的值加1。
例如,INC CX将CX寄存器的值增加1。
5. DEC指令:DEC指令用于将目标操作数的值减1。
例如,DEC DX将DX寄存器的值减去1。
6. MUL指令:MUL指令用于将两个无符号操作数相乘,结果保存在一对寄存器中。
例如,MUL BX将AX寄存器的值与BX相乘,并将结果保存在DX:AX寄存器对中。
7. DIV指令:DIV指令用于将两个无符号操作数相除,商保存在AL中,余数保存在AH中。
例如,DIV CX将DX:AX寄存器对的值除以CX,并将商保存在AL中,余数保存在AH中。
8. CMP指令:CMP指令用于比较两个操作数的值,并设置相应的标志位。
例如,CMP AX, BX将AX寄存器的值与BX进行比较。
第二篇:跳转指令与循环指令1. JMP指令:JMP指令用于无条件跳转到目标地址。
例如,JMP LABEL将程序跳转到标签LABEL处执行。
2. JZ指令:JZ指令用于判断前一次的比较结果是否为零,如果为零则跳转到目标地址。
例如,JZ LABEL将在前一次比较结果为零时跳转到标签LABEL处。
汇编语⾔指令
CPU中的寄存器
寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使⽤的硬件资源之⼀。
由于寄存器的存取速度⽐内存快,所以,在⽤汇编语⾔编写程序时,要尽可能充分利⽤寄存器的存储功能。
CPU中的寄存器主要包括:
各寄存器的作⽤:
1、数据寄存器
数据寄存器主要⽤来保存操作数和运算结果等信息,从⽽节省读取操作数所需占⽤总线和访问存储器的时间。
32位CPU有4个32位的通⽤寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响⾼16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相⼀致。
上⼀页下⼀页。
汇编语言基本指令详解在计算机科学和计算机工程领域,汇编语言是一种计算机底层编程语言,用于直接控制计算机硬件。
它是机器语言的文本形式,使用符号和助记符来代表机器指令,相对于高级编程语言来说更加底层。
汇编语言基本指令是使用汇编语言进行编程时必不可少的内容。
下面将详细介绍汇编语言中常用的基本指令。
1. 数据传送指令数据传送指令用于在寄存器之间传递数据,常见的指令有MOV、ADD、SUB、MUL等。
MOV指令用于将数据从一个位置传送到另一个位置,格式为MOV 目标操作数, 源操作数。
例如,MOV AX, BX可以将BX的值传送给AX。
ADD指令用于将两个操作数相加,并将结果保存到目标操作数中。
格式为ADD 目标操作数, 源操作数。
例如,ADD AX, BX可以将AX与BX的值相加,并将结果保存在AX中。
SUB指令用于将源操作数的值从目标操作数中减去,并将结果保存到目标操作数中。
格式为SUB 目标操作数, 源操作数。
例如,SUB AX, BX可以将BX的值从AX中减去,并将结果保存在AX中。
MUL指令用于将两个操作数相乘,并将结果保存到目标操作数中。
格式为MUL 目标操作数, 源操作数。
例如,MUL AX, BX可以将AX与BX的值相乘,并将结果保存在AX中。
2. 算术逻辑指令算术逻辑指令用于进行各种算术和逻辑运算,例如加法、减法、乘法、除法、与、或、非等。
ADD指令在前面已经提到,用于将两个操作数相加。
SUB指令在前面已经提到,用于将源操作数的值从目标操作数中减去。
MUL指令在前面已经提到,用于将两个操作数相乘。
DIV指令用于将目标操作数除以源操作数,并将商保存到目标操作数,余数保存在DX中。
格式为DIV 操作数。
例如,DIV BX可以将AX的值除以BX,并将商保存在AX中,余数保存在DX中。
AND指令用于对两个操作数进行按位与运算,并将结果保存到目标操作数中。
格式为AND 目标操作数, 源操作数。
例如,AND AX,BX可以将AX与BX的值按位与,并将结果保存在AX中。
汇编常用指令汇编语言是计算机底层的一种编程语言,通过编写汇编指令可以直接控制机器的硬件和内存。
在使用汇编语言编写程序时,掌握一些常用指令是非常重要的。
本文将介绍一些常用的汇编指令,帮助读者更好地理解和应用汇编语言。
一、数据传输指令数据传输指令用于在寄存器和内存之间传输数据,包括将数据从内存加载到寄存器中,以及将寄存器中的数据存储到内存中。
常用的数据传输指令包括:1. MOV:将一个操作数的值传送给另一个操作数。
例如,"MOV AX, BX"表示将BX中的值传送给AX寄存器。
2. XCHG:交换两个操作数的值。
例如,"XCHG AX, BX"表示交换AX和BX的值。
3. PUSH:将数据压入栈中。
例如,"PUSH AX"表示将AX的值压入栈中。
4. POP:从栈中弹出数据。
例如,"POP AX"表示将栈顶的值弹出并存储到AX中。
二、算术和逻辑指令算术和逻辑指令用于执行各种算术运算和逻辑操作,包括加法、减法、乘法、除法以及与、或、非等逻辑运算。
常用的算术和逻辑指令包括:1. ADD:将两个操作数相加。
例如,"ADD AX, BX"表示将BX的值加到AX中。
2. SUB:将第一个操作数减去第二个操作数。
例如,"SUB AX, BX"表示用BX的值减去AX,并将结果存储到AX中。
3. MUL:将两个操作数相乘。
例如,"MUL AX, BX"表示将AX乘以BX,并将结果存储到一组寄存器中。
4. DIV:将第一个操作数除以第二个操作数。
例如,"DIV AX, BX"表示用AX的值除以BX,并将商存储到一组寄存器中。
5. AND:对两个操作数执行逻辑与运算。
例如,"AND AX, BX"表示将AX和BX进行逻辑与操作。
6. OR:对两个操作数执行逻辑或运算。
汇编教程汇编指令详解
汇编语言可以说是机器语言的一种直观形式,是与硬件直接相关的低
级程序设计语言。
它是一种以简洁的汇编指令来表达操作码机器指令的程
序设计语言,汇编语言的指令代码一般比机器语言的指令代码要短,是编
写高效、可移植的机器级程序的理想语言。
汇编语言的基本构成:
(1)指令集:汇编语言的指令集是机器的最基本和最重要的组成部分,也是机器的指令集,描述了机器所做的操作。
(2)操作数:汇编语言的指令集中涉及到的操作数有多种,比如寄
存器操作数、立即数、内存操作数等。
(3)运算和转移指令:汇编语言中的运算和转移指令包括算术运算
指令、比较指令、逻辑运算指令、移位指令等,它们是机器执行的基本操作。
(4)转移指令:汇编语言中的转移指令可以改变机器指令的执行顺序,并实现分支程序设计。
(5)I/O指令:汇编语言中的I/O指令可以实现与外部设备的通信,获取外部设备提供的数据。
(6)汇编指令:汇编指令用于移植各种汇编程序到不同的处理器上,从而实现程序的机器无关性。
一、MOV指令:
MOV指令用于把操作数的值赋给另一个操作数。
汇编常用指令1. 前言汇编语言是一种低级别的计算机语言,它是由一些指令组成的。
指令是一条计算机执行的命令,从基本上讲,这些指令代表着标准的操作,例如加、减、乘、除、移位和比较等。
汇编语言可以通过编写程序来控制一个计算机的行为,这些程序通常被称为汇编程序。
本文将介绍汇编语言中一些常用的指令。
2. 数据传送指令数据传送指令是汇编语言中最基本的指令之一,它主要用来将数据从一个位置传送到另一个位置。
在汇编语言中,数据传送指令通常使用MOV语句来实现。
下面是一些常用的数据传送指令:- MOV AX, BX:将BX中存储的数据传送到AX中。
- MOV AX, [BX]:将BX中存储的地址所指向的数据传送到AX中。
- MOV [BX], AX:将AX中存储的数据传送到BX所指向的地址中。
3. 算术运算指令算术运算指令主要用来执行各种数学运算,例如加法、减法、乘法和除法等操作。
下面是一些常用的算术运算指令:- ADD AX, BX:将BX中存储的数据与AX中存储的数据相加,并将结果存储在AX中。
- SUB AX, BX:将BX中存储的数据从AX中存储的数据中减去,并将结果存储在AX中。
- MUL BX:将AX中存储的数据与BX中存储的数据相乘,并将结果存储在AX中。
- DIV BX:将AX中存储的数据除以BX中存储的数据,并将结果存储在AX和DX中。
4. 位运算指令位运算是一种在二进制数字级别上的运算,它可以执行各种位操作,例如AND、OR、XOR和NOT等操作。
下面是一些常用的位运算指令:- AND AX, BX:将BX中存储的数据与AX中存储的数据按位进行AND运算,并将结果存储在AX中。
- OR AX, BX:将BX中存储的数据与AX中存储的数据按位进行OR 运算,并将结果存储在AX中。
- XOR AX, BX:将BX中存储的数据与AX中存储的数据按位进行XOR运算,并将结果存储在AX中。
- NOT AX:将AX中存储的数据按位进行取反操作。
汇编常用命令总结汇编语言是一种底层的计算机语言,通过使用汇编命令对机器指令进行编写和控制。
在学习和使用汇编语言时,掌握常用的汇编命令非常重要。
以下是汇编常用命令的详细总结:1.MOV:将数据从一个位置复制到另一个位置。
例如,将数据从寄存器复制到内存或者将数据从内存复制到寄存器。
2.ADD:将两个数相加,并将结果保存在目标位置。
可以用于寄存器之间的相加或者将寄存器和内存中的数据相加。
3.SUB:从一个数中减去另一个数,并将结果保存在目标位置。
与ADD命令类似,可以用于寄存器之间或者寄存器和内存之间的相减。
4.CMP:比较两个数,一些条件下,设置标志位用于后续的条件分支。
例如,当两个数相等时,设置零标志位。
6.JE、JNE、JG、JL、JA等:基于条件进行转移。
例如,JE用于当ZF标志位被设置为1时,跳转到指定位置,即上一次比较的结果是相等的。
7.AND、OR、XOR:对两个数位进行逻辑运算,并将结果保存在目标位置。
AND用于逻辑与运算,OR用于逻辑或运算,XOR用于逻辑异或运算。
8.NOT:对一个数位取反。
9.PUSH:将数据压入栈顶。
用于将寄存器、内存中的数据或者立即数压入栈中。
10.POP:从栈顶弹出数据。
用于将栈中的数据弹出到寄存器或者内存中。
11.CALL:调用子程序或函数。
将当前的程序状态保存到栈上,并跳转到子程序的入口地址。
12.RET:从子程序中返回。
将存储在栈上的返回地址弹出,恢复程序的现场,并返回到调用者。
13.LOOP:循环指令。
根据计数寄存器的值,重复执行指定的循环代码。
14.MOVZX:将一个无符号字节或无符号字进行零扩展,转换为更大的数据类型。
15.MOVSX:将一个有符号字节或有符号字进行符号扩展,转换为更大的数据类型。
16.LEA:将一个偏移地址加载到寄存器中。
17.INC、DEC:递增或递减寄存器或内存中的值。
18.NOP:空操作。
用于占位或延时。
19.INT:软中断。
汇编的基本常用指令汇编语言是一种底层的计算机语言,用于编写程序和指令集。
在汇编语言中,指令是一种特定的操作码,它告诉计算机执行某种操作。
在这篇文章中,我们将介绍汇编语言中一些基本常用的指令。
一、数据传输指令数据传输指令用于在寄存器和内存之间传输数据。
下面是一些常用的数据传输指令:1. MOVMOV指令用于将数据从一个位置复制到另一个位置。
例如,MOV AX, BX将寄存器BX中的数据复制到AX寄存器中。
2. XCHGXCHG指令用于交换两个位置的数据。
例如,XCHG AX, BX将AX和BX寄存器中的数据互换。
3. PUSHPUSH指令用于将数据压入栈。
例如,PUSH AX将AX寄存器的值压入栈中。
4. POPPOP指令用于从栈中弹出数据。
例如,POP AX将从栈中弹出的数据存储到AX寄存器中。
算术指令用于执行算术操作,例如加法、减法、乘法和除法。
下面是一些常用的算术指令:1. ADDADD指令用于将两个数相加,并将结果存储在指定的位置。
例如,ADD AX, BX将AX和BX寄存器中的值相加,并将结果存储在AX寄存器中。
2. SUBSUB指令用于将第二个操作数的值从第一个操作数的值中减去,并将结果存储在指定的位置。
例如,SUB AX, BX从AX寄存器中减去BX寄存器的值,并将结果存储在AX寄存器中。
3. MULMUL指令用于将两个数相乘,并将结果存储在指定的位置。
例如,MUL AX, BX将AX和BX寄存器中的值相乘,并将结果存储在AX寄存器中。
4. DIVDIV指令用于将第一个操作数的值除以第二个操作数的值,并将商存储在第一个操作数指定的位置,余数存储在指定的位置。
例如,DIV AX, BX将AX寄存器中的值除以BX寄存器的值,并将商存储在AX寄存器中,余数存储在DX寄存器中。
逻辑指令用于执行逻辑操作,例如与、或、非和异或等。
下面是一些常用的逻辑指令:1. ANDAND指令用于对两个操作数进行按位与操作,并将结果存储在指定的位置。
引言
我们很多人是开发者,每天写大量的代码,有时也不是糟糕的代码。
每个人都能很轻松写下这样的代码:
#include <stdio.h>
int main() {
int x = 10;
int y = 100;
printf("x + y = %d", x + y);
return 0;
}
大家都能理解上面这段 C 语言代码完成的功能,但是…这段代码底层是如何工作的呢?我想我们中间不是所有人都能回答这个问题,我也不能。
我认为我可以用高级编程语言写代码,例如Haskell、Erlang、Go 等等,但是我完全不知道在编译之后它在底层是如何工作的。
所以,我决定往下再深入一步,到汇编这个层次,并且记录下我的学习汇编之路。
希望这是有趣的过程,而不是仅仅对我一个人。
大约五、六年前我已经使用过汇编来写简单的程序,那时我还在上大学,用的是Turbo 汇编和DOS 操作系统。
现在我使用Linux-x86_64 操作系统,是的,64 位Linux 和16 位DOS 肯定有很大的不同。
那我们就开始吧。
准备阶段
在开始之前,我们需要准备一些我接下来要提到的东西。
我使用的是Ubuntu(Ubuntu 14.04.1 LTS 64 位) 系统,因此我的文章都是基于该操作系统和体系结构的。
不同的CPU 支持不同的指令集,我使用的是Intel Core i7 870 处理器,所有代码都在这上面运行。
另外我将用nasm 汇编,你可以用下面命令来安装:
sudo apt-get install nasm
I它的版本应该是2.0.0 或者更高了。
我是用的是2013年12月29日编译的NASM version 2.10.09 版本。
最后一部分,你需要一款写汇编代码的文本编辑器,我使用配有nasm-mode.el 的Emacs 编辑器。
当然这不是强制性的,你可以选择任何你喜欢的文本编辑器。
如果你像我一样使用的是Emacs,你可以下载nasm-mode.el,将你的Emacs 配置成这样:
(load "~/.emacs.d/lisp/nasm.el")
(require 'nasm-mode)
(add-to-list 'auto-mode-alist '(".(asm|s)$" . nasm-mode))
这就是目前我们需要准备的所有东西,其它工作在接下来的文章中会提到。
x64 语法
这里我就不全面介绍汇编的语法了,我们仅提一下这篇文章中用到的语法。
通常NASM 程序会被划分为不同的段(section),这篇文章中我们会涉及到两个段:
数据段(data section)
代码段(text section)
数据段用来定义常量(constant),常量是在运行时不会改变的数据。
你可以定义数字或其他常量等等,声明一个数据段的语法如下:
section .data
代码段是存放代码(code)的,该段必须以global_start 开始,告诉内核这里是程序开始执行的地方。
section .text
global _start
_start:
注释是以; 开始。
每个NASM 代码行包含下面四个字段的组合:
[label:] instruction [operands] [; comment]
中括号括起来的字段表示是可选的。
基本NASM 指令由两部分组成,第一部分是需要执行指令的名字,第二部分是该指令的操作数。
例如:
MOV COUNT, 48 ;将数值48 存放到COUNT 变量中
Hello world
让我们用NASM 汇编来写第一个程序吧,当然是传统的打印“Hello world”的程序。
这是代码:
section .data
msg db "hello, world!"
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, 13
syscall
mov rax, 60
mov rdi, 0
syscall
的,看起来不像printf(“Hello world”),我们试着去理解它是什么、怎么工作的。
先看1-2 行,我们定义了一个数据段,并且有一个msg 常量,值为Hello world,那么我们就可以在代码中使用这个常量了。
下一步是定义了一个代码段,以及程序的入口,代码从第7 行开始执行。
现在到了程序最有意思的部分了。
我们已经了解了mov 指令的功能,它带有两个操作数,将第二个操作数的值放到第一个操作数中。
但是,rax、rdi 等等这些是什么呢?我们找到维基百科的解释:
中央处理单元(CPU)是计算机中的硬件,它读取计算机程序中的指令,完成系统中基本的算术、逻辑、输入/输出操作。
好了,CPU 完成一些操作,例如算术操作等,但是它从哪获得操作的数据呢?第一个答案是内存。
然而从内存中读取和存入数据的速度远远低于处理器的速度,它涉及到复杂的通过控制总线来发送数据请求的过程。
因此,CPU 有其内部的存储位置,称为寄存器(register)。
x64_registers
那么我们写mov rax, 1,意思是将1 放到rax 寄存器中。
现在我们知道什么是rax、rdi、rbx 等等了吧,但是还需要知道什么时候使用rax,什么时候使用rsi 等等。
rax ——临时寄存器,当我们调用系统调用时,rax 保存系统调用号
rdx ——用来向函数传递第三个参数
rdi ——用来向函数传递第一个参数
rsi ——用来向函数传递第二个参数的指针
换句话说,我们就是调用了sys_write 系统调用,该函数原型是:
ssize_t sys_write(unsigned int fd, const char *buf, size_t count)
它有三个参数:
fd ——文件描述符,0、1、2 分别代表标准输入、标准输出和标准错误
buf ——字符数组的指针,用来保存从fd 指向的文件中获取的内容
count ——表示要从文件中读入到字符数组的字节数
我们知道sys_write 系统调用带有三个参数,它在系统调用表中有一个系统调用号。
我们再看看程序的实现,将1 放到rax 寄存器中,它意思是我们使用sys_write 系统调用;下一行将1 存到rdi 寄存器,它是sys_write 的第一个参数,1 代表标准输出;然后我们将msg 的指针存到rsi 寄存器中,这是sys_write 的第二个参数buf;接着我们传递sys_write 最后一个参数(字符串的长度)到rdx 寄存器中。
现在,我们有了sys_write 的所有参数,就可以在11 行使用syscall 来调用它了。
好了,我们打印出“Hello world”字符串,现在需要从程序中正确退出。
我们传递60 到rax 寄存器,60 是exit 的系统调用号;以及将0 传递给rdi 寄存器,这是错误码,0 表示我们的程序正确地退出。
这就是“Hello world”的所有分析,相当简单吧:)现在我们编译程序,假设我们的程序放在hello.asm 文件中,那么我们需要运行下面的命令来执行:
nasm -f elf64 -o hello.o hello.asm
ld -o hello hello.o
编译链接完成之后,我们得到可执行文件hello,可以使用./hello 来运行,可以在终端看到输出“Hello world”。
总结
本文用一个简单不能再简单的程序开始第一部分,接下来我们会看到一些算术运算。
如果你有任何问题或者建议可以给我评论。
更多信息请查看IT技术专栏。