【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

同样是x86的cpu,但是却可以用不同形式的汇编语言来表示。在window上面我们使用的更多是intel格式的汇编语言,而在Linux系统上面使用的更多的常常是AT&T格式的汇编语言。那什么是AT&T格式的汇编代码呢?我们可以写一个试试看。

.datamessage: .string "hello!\n"length = . - message.text
.global _start_start:movl $length, %edxmovl $message, %ecxmovl $1, %ebxmovl $4, %eaxint $0x80movl $0, %ebxmovl $1, %eaxint $0x80

这是一个简单的汇编文件,我们可以分两步进行编译。首先,输入 as -gstabs -o hello.o hello.s, 接着输入ld -o hello hello.o即可。为了验证执行文件是否正确,可以输入./hello验证一下。

在as命令当中,由于我们使用了-gstabs选项,因此在hello执行文件中是包含调试信息的。所以,如果想单步调试的朋友可以输入gdb hello进行调试。

那么,hello执行文件反汇编的代码又是什么样的呢?我们可以输入objdump -S -d hello查看一下。

08048074 <_start>:
.text
.global _start_start:movl $length, %edx8048074:       ba 08 00 00 00          mov    $0x8,%edxmovl $message, %ecx8048079:       b9 9c 90 04 08          mov    $0x804909c,%ecxmovl $1, %ebx804807e:       bb 01 00 00 00          mov    $0x1,%ebxmovl $4, %eax8048083:       b8 04 00 00 00          mov    $0x4,%eaxint $0x808048088:       cd 80                   int    $0x80movl $0, %ebx804808a:       bb 00 00 00 00          mov    $0x0,%ebxmovl $1, %eax804808f:       b8 01 00 00 00          mov    $0x1,%eaxint $0x808048094:       cd 80                   int    $0x80ret8048096:       c3                      ret

linux下的C语言开发(ATT 汇编语言)相关推荐

  1. 第4章 Linux下的C语言开发基础

    第4章 Linux下的C语言开发基础 4.1 C语言开发的基本步骤 C语言源程序开发的基本步骤如下: 根据项目需求划分功能模块 编辑.利用文本编辑器vi或gedit编写C源程序并保存,文件的后缀为.c ...

  2. linux下的C语言开发

    在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品.当然,linux操作系统本身对C语言的支持也是相当到位的.作为一个真正 ...

  3. linux系统最好的c类语言开发软件,Linux下基于C 语言开发即时通信软件.doc

    Linux下基于C 语言开发即时通信软件 Linux下基于C++语言开发即时通信软件 关键词:聊天软件 文字聊天 Linux平台 C/S架构ICE中间件 Linux-based instant mes ...

  4. swift 在linux系统,Linux下搭建Swift语言开发学习环境

    介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍swift编译器swiftc的使用: 1.序言 周三12月4日凌晨1点多看到苹果正式开源了Swift,国 ...

  5. linux下做c语言开发

    在开始之前,首先要说明的是,linux开发程序最主要的编辑器是vi/vim编辑器,当然还有emacs,gedit,只是vi/vim的用户实在是压倒性的多数,原因就是,它在编辑效率上的战胜了其他对手.v ...

  6. 开始在linux下做c语言开发

     本篇文章旨在介绍如何开始在linux下面进行C语言程序设计,以及如何使用程序设计及调试工具进行编写C程序.学会使用gcc及gdb等工具进行linux下的c编写和调试. 在开始之前,首先要说明的是 ...

  7. linux下的C语言开发 GDB的例子

    在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品.当然,linux操作系统本身对C语言的支持也是相当到位的.作为一个真正 ...

  8. linux下的C语言开发(开篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是 ...

  9. linux下的C语言开发(网络编程)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 不管在Windows平台下面还是在Linux平台下面,网络编程都是少不了的.在互联网发达的今天 ...

最新文章

  1. python第一章测试题_第一章 测试【含答案】 Python大数据分析
  2. 改造我们的学习:有钱不会花,抱着金库抓瞎
  3. C++:46---绝不重新定义继承而来的non-virtual函数
  4. CentOS7 的开机自启动systemctl
  5. 软件架构的六大设计原则
  6. 数学分析原理 定理 6.10
  7. 【模电】0013 反馈放大电路基础
  8. 用户用户组,与密码管理,su,sudo命令,限制root远程登陆
  9. 文曲星猜数字用c语言编程,文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?...
  10. 509. 斐波那契数
  11. MTK平台Metadata的加载(4)—Q版本后
  12. MyCAT XA分布式事务
  13. winSCP 集成PuTTY附下载
  14. javascript bool 强制类型转换
  15. 微信小程序点击弹出输入框
  16. JPA性能方法------EntityManager的find()与getReference()的区别
  17. 企业网盘是高成本服务,低价网盘很难满足企业需求
  18. 三维声技术在赛事直播中的应用,TWS耳机中音频技术落地实践,通话降噪算法落地应用及挑战...
  19. 【Java网络编程】获得实验室局域网中所有开机主机名称和IP地址,InetAddress类,在java中如何获取IP地址的方法
  20. python用for循环输出一个正立实心等腰三角形

热门文章

  1. linux service命令解析(重要)
  2. aix 添加lv 大小
  3. jquery仿搜狐投票动画代码
  4. 仓库文件SVN总结-java教程
  5. JQuery ajax返回JSON时的处理方式
  6. C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
  7. 原创案例文章:安徽淮南矿业集团网络分析案例
  8. MATLAB实现LDA(线性判别分析),以两个类别数目为例
  9. Non-standard serial port baud rate setting
  10. 从小编程,到架构师,我们应该具备什么