Arm汇编学习笔记(一)——编写编译并执行简单汇编文件
2016-08-11 11:38
417 查看
1. 简单编译汇编文件并查看
建立一个test.S文件,并输入以下内容:mov r0, r1
命令行下输入命令:
arm-linux-androideabi-as test.S -o test.o
得到test.o
反汇编.o文件查看汇编代码,输入命令:
arm-linux-androideabi-objdump -d test.o
得到以下输出:
test.o: file format elf32-littlearm Disassembly of section .text: 00000000 <.text>: 0: e1a00001 mov r0, r1
查看.o文件的符号表,输入命令:arm-linux-androideabi-nm test.o
通过ida查看test.o,内容如下:
2. 编译独立的汇编文件为Android可执行文件并执行
首先建立一个test.S文件,输入以下内容:.global main .text main: stmfd sp!, {r11, lr} mov r0, #5 ldmfd sp!, {r11, pc} .end
命令行输入下面命令得到test.o:
arm-linux-androideabi-as -k test.S -o test.o
其中参数定义:
-k generate PIC code
然后命令行输入下面命令:
arm-linux-androideabi-ld test.o ~/Softwares/Android/android-ndk-r9d/platforms/android-19/arch-arm/usr/lib/crtbegin_dynamic.o ~/Softwares/Android/android-ndk-r9d/platforms/android-19/arch-arm/usr/lib/crtend_android.o -l ~/Softwares/Android/android-ndk-r9d/platforms/android-19/arch-arm/usr/lib/libc.so -pie -I /system/bin/linker -o test.out
其中参数定义:
-Ttext ADDRESS Set the address of the text segment
-l LIBNAME, --library LIBNAME Search for library LIBNAME
-pie Create a position independent executable
--pic-executable Create a position independent executable
-I PROGRAM, --dynamic-linker PROGRAM Set dynamic linker path
上面汇编代码的意义是main函数返回值为5,将test.out文件push到android系统中运行,查看运行返回值可以看到运行成功。
约定:
1. 在函数调用过程中,r0-r3的内容有可能发生变化,即被调用方不能保证其内容不变,r4-r9的内容被调用方需要保证其调用前和调用后的内容一样。相关文章推荐
- 一个简单的 C 程序文件,经过 0、编写,1、预处理,2、编译,3、链接,终于生成了一个可执行文件
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- 代码文件-预编译-编译-汇编-链接-可执行程序
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- 简单汇编程序编译链接执行过程
- sublime text3 自动编译php 适合用于简单的php文件执行
- 简单编写makefile文件,实现GCC4.9编译项目,增加boost库測试等等。。
- android 编写简单可执行文件
- Arm汇编学习笔记(二)——编写编译并执行依赖外部模块的汇编代码以及PIC代码分析
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
- 在Linux下简单编写、编译并执行一个C语言程序
- 简单的shell文件编写:拷贝特定的可执行文件到某特定目录下。
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 一步一步写一个简单通用的makefile(四)--写一个通用的makefile编译android可执行文件
- c编写,交叉编译成android下二进制可执行文件
- 程序编译-汇编-链接的理解04-可执行文件概述
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- cmd下编译执行arm汇编文件
- 简单编写makefile文件,实现GCC4.9编译项目,加入boost库测试等等。。