欢迎来到天天文库
浏览记录
ID:5324233
大小:317.65 KB
页数:3页
时间:2017-12-08
《linux下的c语言开发(at&t 汇编语言)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本文由兰州中研白癜风研究院http://www.lzbdf120.com/收集,转载请注明出处linux下的C语言开发(AT&T汇编语言)同样是x86的cpu,但是却可以用不同形式的汇编语言来表示。在window上面我们使用的更多是intel格式的汇编语言,而在Linux系统上面使用的更多的常常是AT&T格式的汇编语言。那什么是AT&T格式的汇编代码呢?我们可以写一个试试看。[cpp]viewplaincopy1..data2.message:.string"hello!"3.length=.-message4.5..text6..global_start7.8._start:9
2、.movl$length,%edx10.movl$message,%ecx11.movl$1,%ebx12.movl$4,%eax13.int$0x8014.15.movl$0,%ebx16.movl$1,%eax17.int$0x80这是一个简单的汇编文件,我们可以分两步进行编译。首先,输入as-gstabs-ohello.ohello.s,接着输入ld-ohellohello.o即可。为了验证执行文件是否正确,可以输入./hello验证一下。本文由兰州中研白癜风研究院http://www.lzbdf120.com/收集,转载请注明出处本文由兰州中研白癜风研究院http://www
3、.lzbdf120.com/收集,转载请注明出处在as命令当中,由于我们使用了-gstabs选项,因此在hello执行文件中是包含调试信息的。所以,如果想单步调试的朋友可以输入gdbhello进行调试。那么,hello执行文件反汇编的代码又是什么样的呢?我们可以输入objdump-S-dhello查看一下。[cpp]viewplaincopy1.08048074<_start>:2..text3..global_start4.5._start:6.movl$length,%edx7.8048074:ba08000000mov$0x8,%edx8.movl$message,%ecx9.
4、8048079:b99c900408mov$0x804909c,%ecx10.movl$1,%ebx11.804807e:bb01000000mov$0x1,%ebx12.movl$4,%eax13.8048083:b804000000mov$0x4,%eax14.int$0x8015.8048088:cd80int$0x8016.17.movl$0,%ebx18.804808a:bb00000000mov$0x0,%ebx19.movl$1,%eax本文由兰州中研白癜风研究院http://www.lzbdf120.com/收集,转载请注明出处本文由兰州中研白癜风研究院http://
5、www.lzbdf120.com/收集,转载请注明出处20.804808f:b801000000mov$0x1,%eax21.int$0x8022.8048094:cd80int$0x8023.ret24.8048096:c3ret25.本文由兰州中研白癜风研究院http://www.lzbdf120.com/收集,转载请注明出处
此文档下载收益归作者所有