您的位置:首页 > 其它

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的内容被调用方需要保证其调用前和调用后的内容一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐