C指针原理详解:AT教程如何学习?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1687个文字,预计阅读时间需要7分钟。
Linux系统下的汇编代码与Windows系统下的汇编代码在语法和指令集上存在差异。大多数Linux程序员之前仅接触过DOS/Windows下的汇编语言,这些代码遵循Intel架构的风格。然而,在Linux系统中,汇编代码需要适应不同的内核部分和指令集。
汇编在LINUX系统下的意义远远大于WINDOWS系统,LINUX内核部分代码就是汇编编写的。然后,绝大多数 Linux 程序员以前只接触过DOS/Windows 下的汇编语言,这些汇编代码都是 Intel 风格的。但在 Unix 和 Linux 系统中,更多采用的还是 AT&T 格式,两者在语法格式上有着很大的不同,因此应对AT&T汇编应有一个基本的了解和熟悉。
我们在LINUX下用C编写一段最简单的helloworld程序,命令为hello.c
#include <stdio.h> int main() { printf("hello,world\n"); exit(0); }
然后,使用GCC编译,同时使用-s参数生成中间汇编代码,看看AT&T汇编的真实面目
.section .data#初始化的变量
output:
.ascii "hello,world\n"
#要打印的字符串,.data为初始化值的变量。output是标签,指示字符串开始的位置,ascii为数据类型
.section .bss#未初始化的变量,由0填充的缓冲区
.lcomm num,20
#lcomm为本地内存区域,即本地汇编外的不能进行访问。.comm是通用内存区域。
本文共计1687个文字,预计阅读时间需要7分钟。
Linux系统下的汇编代码与Windows系统下的汇编代码在语法和指令集上存在差异。大多数Linux程序员之前仅接触过DOS/Windows下的汇编语言,这些代码遵循Intel架构的风格。然而,在Linux系统中,汇编代码需要适应不同的内核部分和指令集。
汇编在LINUX系统下的意义远远大于WINDOWS系统,LINUX内核部分代码就是汇编编写的。然后,绝大多数 Linux 程序员以前只接触过DOS/Windows 下的汇编语言,这些汇编代码都是 Intel 风格的。但在 Unix 和 Linux 系统中,更多采用的还是 AT&T 格式,两者在语法格式上有着很大的不同,因此应对AT&T汇编应有一个基本的了解和熟悉。
我们在LINUX下用C编写一段最简单的helloworld程序,命令为hello.c
#include <stdio.h> int main() { printf("hello,world\n"); exit(0); }
然后,使用GCC编译,同时使用-s参数生成中间汇编代码,看看AT&T汇编的真实面目
.section .data#初始化的变量
output:
.ascii "hello,world\n"
#要打印的字符串,.data为初始化值的变量。output是标签,指示字符串开始的位置,ascii为数据类型
.section .bss#未初始化的变量,由0填充的缓冲区
.lcomm num,20
#lcomm为本地内存区域,即本地汇编外的不能进行访问。.comm是通用内存区域。

