linux下的C语言开发(AT&T 汇编语言)
来源:互联网 发布:淘宝卖家网页版 编辑:程序博客网 时间:2024/04/27 18:45
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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, %edx 8048074: ba 08 00 00 00 mov $0x8,%edx movl $message, %ecx 8048079: b9 9c 90 04 08 mov $0x804909c,%ecx movl $1, %ebx 804807e: bb 01 00 00 00 mov $0x1,%ebx movl $4, %eax 8048083: b8 04 00 00 00 mov $0x4,%eax int $0x80 8048088: cd 80 int $0x80 movl $0, %ebx 804808a: bb 00 00 00 00 mov $0x0,%ebx movl $1, %eax 804808f: b8 01 00 00 00 mov $0x1,%eax int $0x80 8048094: cd 80 int $0x80 ret 8048096: c3 ret
- linux下的C语言开发(AT&T 汇编语言)
- linux下的C语言开发(AT&T 汇编语言)
- linux下的C语言开发(AT&T 汇编语言)
- linux下的C语言开发(AT&T 汇编语言)
- linux下的C语言开发(AT&T 汇编语言)
- Linux AT&T 汇编语言开发指南(转载)
- Linux AT&T 汇编语言开发指南
- Linux 汇编语言开发指南(AT&T)
- Linux AT&T 汇编语言开发指南
- at&t linux汇编语言
- AT&T-汇编语言与C语言联合编程
- 一本Linux下AT&T汇编语言与GCC内嵌汇编入门的中文书籍
- 杂记之Linux汇编语言(AT&T语法)(一)
- 杂记之Linux汇编语言(AT&T语法)(二)
- Linux Debugging(二): 熟悉AT&T汇编语言
- x64 linux 下C语言、AT&T格式…
- AT&T汇编语言的相关知识
- AT&T汇编语言的相关知识
- visual studio 2005 CPU占用率100%的修复补丁,
- Matlab 根据坐标在图中画图
- 关于Solaris的一些小技巧 .
- .Net环境下的缓存技术介绍
- JDK1.5的一些新特性
- linux下的C语言开发(AT&T 汇编语言)
- linux下erlang之OTP编译安装
- 16.3.1 以异步方式等待事件
- Solaris 10 x86系统上添加新硬盘
- Design Pattern Resources
- strlen问题
- 各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
- 明基(BENQ)2012校园招聘笔试题之C++方向(试题+答案)
- 反射