开始在Linux下使用汇编语言

在学习Linux操作系统的过程中,顺便学习了汇编语言,在操作系统的学习过程中,总共遇到过三种汇编,16位实模式下的汇编,32位保护模式下的汇编,C语言的内嵌汇编。这三种汇编分别用在不同的场景。如实模式下的汇编是在刚开机到操作系统启动这段时间运行,主要用来加载操作系统到内存,跳转执行操作系统程序。32位汇编是在操作系统接管硬件之后使用。C语言内嵌汇编可以用在一些代码关键部分,需要对硬件绝对控制的部分。

除了上面这样的分类之外,汇编语言还有两种不同的风格,一种是AT&T风格汇编,一种是Intel风格汇编,这只是语言书写的一种约定,需要使用不同的汇编器进行汇编,学习哪一种都是可以的,但如果要学习操作系统或者以后需要看懂别人的汇编代码,最好两种都学习,总之根据自身需求,不要增加自身负担。

下面,我将具体介绍Linux平台下如何使用汇编语言。

不管在那一平台下,使用汇编语言都需要三种基本的工具,汇编器,链接器,调试器。只要知道了这三种工具在该平台下具体是什么,就可以很顺利的在此平台下使用汇编语言。
在Linux下,这三种工具也有很多,这里主要介绍其中几种。

  1. 汇编器
    linux下可以使用gas汇编器,这也是gcc依赖的汇编器。基本命令为:as -o hello.o hello.s,需要注意的是,gas汇编器支持的是AT&T风格的和汇编。除gas之外还有一种汇编器:nasm,这种汇编器可以很好的支持Intel风格汇编,汇编速度也更快,命令格式:nasm -f elf hello.asm
  2. 链接器
    由汇编器产生的目标代码是不能直接在计算机上运行的,它必须经过链接器的处理才能生成可执行代码。链接器通常用来将多个目标代码连接成一个可执行代码,这样可以先将整个程序分成几个模块来单独开发,然后才将它们组合(链接)成一个应用程序。 Linux 使用 ld 作为标准的链接程序,它同样也包含在 binutils 软件包中。汇编程序在成功通过 GAS 或 NASM 的编译并生成目标代码后,就可以使用 ld 将其链接成可执行程序了: ld -s -o hello hello.o
    3.调试器
    Linux下可以使用GDB,DDD,ALD作为调试器

实验:在屏幕上打印出hello world

  1. 使用Vim编辑器新建hello.asm文件,写入如下代码


    输入源代码
  2. 汇编,链接源代码,并执行
使用nasm汇编,ld链接,最后执行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先在编译器编写Hello,world! 接下来,让我们在终端下使用命令行来进行编译,编译链接(每执行一步都用ls...
    海人为记阅读 9,539评论 1 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,384评论 19 139
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,373评论 0 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,327评论 25 709
  • 三.飞的理由 那一夜,志摩和王赓,胡适等好友去西餐厅。经过舞池,一个最为优雅而漂亮的身影,...
    薏小猫阅读 4,481评论 0 1