linux下的C语言开发(ATT 汇编语言)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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 汇编语言)相关推荐
- 第4章 Linux下的C语言开发基础
第4章 Linux下的C语言开发基础 4.1 C语言开发的基本步骤 C语言源程序开发的基本步骤如下: 根据项目需求划分功能模块 编辑.利用文本编辑器vi或gedit编写C源程序并保存,文件的后缀为.c ...
- linux下的C语言开发
在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品.当然,linux操作系统本身对C语言的支持也是相当到位的.作为一个真正 ...
- linux系统最好的c类语言开发软件,Linux下基于C 语言开发即时通信软件.doc
Linux下基于C 语言开发即时通信软件 Linux下基于C++语言开发即时通信软件 关键词:聊天软件 文字聊天 Linux平台 C/S架构ICE中间件 Linux-based instant mes ...
- swift 在linux系统,Linux下搭建Swift语言开发学习环境
介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍swift编译器swiftc的使用: 1.序言 周三12月4日凌晨1点多看到苹果正式开源了Swift,国 ...
- linux下做c语言开发
在开始之前,首先要说明的是,linux开发程序最主要的编辑器是vi/vim编辑器,当然还有emacs,gedit,只是vi/vim的用户实在是压倒性的多数,原因就是,它在编辑效率上的战胜了其他对手.v ...
- 开始在linux下做c语言开发
本篇文章旨在介绍如何开始在linux下面进行C语言程序设计,以及如何使用程序设计及调试工具进行编写C程序.学会使用gcc及gdb等工具进行linux下的c编写和调试. 在开始之前,首先要说明的是 ...
- linux下的C语言开发 GDB的例子
在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品.当然,linux操作系统本身对C语言的支持也是相当到位的.作为一个真正 ...
- linux下的C语言开发(开篇)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是 ...
- linux下的C语言开发(网络编程)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 不管在Windows平台下面还是在Linux平台下面,网络编程都是少不了的.在互联网发达的今天 ...
最新文章
- python第一章测试题_第一章 测试【含答案】 Python大数据分析
- 改造我们的学习:有钱不会花,抱着金库抓瞎
- C++:46---绝不重新定义继承而来的non-virtual函数
- CentOS7 的开机自启动systemctl
- 软件架构的六大设计原则
- 数学分析原理 定理 6.10
- 【模电】0013 反馈放大电路基础
- 用户用户组,与密码管理,su,sudo命令,限制root远程登陆
- 文曲星猜数字用c语言编程,文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?...
- 509. 斐波那契数
- MTK平台Metadata的加载(4)—Q版本后
- MyCAT XA分布式事务
- winSCP 集成PuTTY附下载
- javascript bool 强制类型转换
- 微信小程序点击弹出输入框
- JPA性能方法------EntityManager的find()与getReference()的区别
- 企业网盘是高成本服务,低价网盘很难满足企业需求
- 三维声技术在赛事直播中的应用,TWS耳机中音频技术落地实践,通话降噪算法落地应用及挑战...
- 【Java网络编程】获得实验室局域网中所有开机主机名称和IP地址,InetAddress类,在java中如何获取IP地址的方法
- python用for循环输出一个正立实心等腰三角形