as 汇编器

[[email protected] ~]# cat 1.s
 .file "write.s"
 .section .rodata
          hello: .string "hello, world!\n"

 .section .text
 .global _start

 _start:
 movl $4,     %eax  # syscall number for write function
 movl $1,     %ebx  # 1 standand for stdout
 movl $hello, %ecx  # the second argument of write function
 movl $14,    %edx  # the third argument of write function
 int  $0x80         # interrupt to call write
 movl $1,     %eax  # syscall number for sys_exit function
 xorl %ebx,   %ebx  # the argument for sys_exit function
 int  $0x80         # interrupt to call sys_exit

 ret                # return to the caller of the function

编绎:
as -o 1.o 1.s

链接:

ld -o 1 1.o

执行:

[[email protected] ~]# ./1
hello, world!

Usage: objdump <option(s)> <file(s)>
 Display information from object <file(s)>.
 At least one of the following switches must be given:
  -a, --archive-headers    Display archive header information
  -f, --file-headers       Display the contents of the overall file header
  -p, --private-headers    Display object format specific file header contents
  -h, --[section-]headers  Display the contents of the section headers
  -x, --all-headers        Display the contents of all headers
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
  -S, --source             Intermix source code with disassembly
  -s, --full-contents      Display the full contents of all sections requested
  -g, --debugging          Display debug information in object file
  -e, --debugging-tags     Display debug information using ctags style
  -G, --stabs              Display (in raw form) any STABS info in the file
  -W, --dwarf              Display DWARF info in the file
  -t, --syms               Display the contents of the symbol table(s)
  -T, --dynamic-syms       Display the contents of the dynamic symbol table
  -r, --reloc              Display the relocation entries in the file
  -R, --dynamic-reloc      Display the dynamic relocation entries in the file
  @<file>                  Read options from <file>
  -v, --version            Display this program‘s version number
  -i, --info               List object formats and architectures supported
  -H, --help               Display this information
[[email protected] ~]# objdump -D ./1.o

./1.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <_start>:
   0:   b8 04 00 00 00          mov    $0x4,%eax
   5:   bb 01 00 00 00          mov    $0x1,%ebx
   a:   b9 00 00 00 00          mov    $0x0,%ecx
   f:   ba 0e 00 00 00          mov    $0xe,%edx
  14:   cd 80                   int    $0x80
  16:   b8 01 00 00 00          mov    $0x1,%eax
  1b:   31 db                   xor    %ebx,%ebx
  1d:   cd 80                   int    $0x80
  1f:   c3                      retq
Disassembly of section .rodata:

0000000000000000 <hello>:
   0:   68 65 6c 6c 6f          pushq  $0x6f6c6c65
   5:   2c 20                   sub    $0x20,%al
   7:   77 6f                   ja     78 <_start+0x78>
   9:   72 6c                   jb     77 <_start+0x77>
   b:   64 21 0a                and    %ecx,%fs:(%rdx)
        ...

http://blog.csdn.net/geekcome/article/details/6216634

时间: 2024-12-17 23:07:54

as 汇编器的相关文章

CSAPP读书随笔之一:为什么汇编器会将call指令中的引用的初始值设置为-4

CSAPP,即<深入理解计算机系统:程序员视角>第三版,是一本好书,但读起来确需要具备相当的基本功.而且,有的表述(中译文)还不太直白. 比如,第463页提到,(对于32位系统)为什么汇编器会将call指令中的引用的初始值设置为-4.其后解释语焉不详.结合文中对代码计算公式的展开: *refptr = (unsigned) (ADDR(r.symbol) + *refptr - refaddr) = (unsigned) (0x80483c8        + (-4)     - 0x804

1.预处理器,编译器,汇编器和链接器

摘自http://www.cnblogs.com/maomaohhmm/archive/2012/10/28/2743903.html 1.预处理器,编译器,汇编器和链接器 (1).预处理(cpp):预处理器不止一种,而C/C++的预处理器就是其中最低端的一种——词法预处理器,主要是进行文本替换.宏展开.删除注释这类简单工作. gcc -E 选项可以得到预处理后的结果,扩展名为.i: C/C++预处理不做任何语法检查,不仅是因为它不具备语法检查功能,也因为预处理命令不属于C/C++语句(这也是定

汇编器构造

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 汇编器构造   一.             汇编器简介 前面介绍了编译器构造和静态链接器构造的具体方法,而且我们实现了一个将高级语言转化为汇编语言的编译器,同时又实现了一个将多个目标文件链接为一个可执行文件的链接器.现在需要一个连接这两个模块的功能模块——汇编器,它

自制虚拟机系列第一部分:构思及汇编器

? Conmajia & icemanind 2012 本文根据How to Create Your Own Virtual Machine系列文章编译,并进行了大量改造(已征得作者同意). 阅读:上篇.下篇 下载:源代码.英文教程(PDF) 序言 By Conmajia 各位,你们正在阅读的这个系列的文章将从零开始,带你一步一步设计并实现一个完整可运行的虚拟机(Virtual Machine).我们将要使用C#语言,基于Microsoft .NET Framework 2.0运行库来完成整个虚

简述反汇编器工具实现流程分析图

通过对一个实用的反汇编工具系统MTOA的设计思想.系统功能.系统结构.处理流程和主要特点的讨论,阐述了反汇编工具的设计原理.方法和实现过程,并有效地解决了设计过程中存在的主要技术难点和关键问题,从而把反汇编出来的程序的质量提高到了一个崭新的水平. 在最近出现的反汇编器中,有几个能让您浏览 .class 文件的目录并且只要单击一下,就能对它们进行反汇编译,JODE (Java 优化和反编译环境)就是这样一个程序.在命令行中键入 .jar 文件的名称, JODE 就会允许您图形化地浏览它的类,并自动

&#128421;? 自制虚拟机 - 概念和汇编器

Conmajia ???? ? 2012, Alan Bryan ???? ? 2012 部分设计参考了 Alan Bryon 的 B32 虚拟机,已获授权. Updated on Feb. 19, 2018 1 虚拟机基础 这篇文章是我自制虚拟机系列文章的第一部分. 这个系列将从零开始,设计并实现一个完整可运行的虚拟机. 虚拟机(virtual machine)和模拟器(simulator)在概念上有部分重叠. 我所指的虚拟机就是软件模拟的仿真计算机. 虚拟机是一种模拟硬件环境的中间件(Mid

基于ARM处理器的反汇编器软件简单设计及实现

写在前面 2012年写的,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性进行验证,对那些直接与CPU 相关的目标代码进行安全性分析: 涉及的主要内容 分析ARM处理器指令的特点,以及编译以后可执行的二进制文件代码的特征: 将二进制机器代码经过指令和数据分开模块的加工处理: 分解标识出指令代码和数据代码: 然后将指令代码反汇编并加工成易于阅读的汇编指令形式的文件: 下面给出个示例

java名词

1 applet Java语言编写的小程序,可以包含在html页面中,有支持Java语言的浏览器执行,作用是在页面产生动态效果. 2 jdk java development kit java 开发环境  编译Java程序的编译器javac命令 javac  编译器 将源程序转为字节码    jar 打包 将相关类文件打包为一个文件    Javadoc 文档生产  原码注释提出文档   jdb 差错工具  Java 运行class文件  javap  Java反汇编器,显示编译类文件中的可访问

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇