Arm汇编学习笔记(一)——编写编译并执行简单汇编文件
来源:互联网 发布:视频制作软件免费下载 编辑:程序博客网 时间:2024/05/21 08:47
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-littlearmDisassembly of section .text:00000000 <.text>: 0:e1a00001 movr0, r1
- 查看.o文件的符号表,输入命令:arm-linux-androideabi-nm test.o
- 通过ida查看test.o,内容如下:
2. 编译独立的汇编文件为Android可执行文件并执行
- 首先建立一个test.S文件,输入以下内容:
.global main.textmain:stmfd sp!, {r11, lr}mov r0, #5ldmfd 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的内容被调用方需要保证其调用前和调用后的内容一样。
0 0
- Arm汇编学习笔记(一)——编写编译并执行简单汇编文件
- Arm汇编学习笔记(二)——编写编译并执行依赖外部模块的汇编代码以及PIC代码分析
- ARM 汇编学习——编写简单的ARM汇编程序
- ARM 汇编学习——编写简单的ARM汇编程序
- ARM 汇编学习——编写简单的ARM汇编程序
- cmd下编译执行arm汇编文件
- Arm汇编学习笔记(三)——GCC内联汇编
- ARM汇编学习笔记
- ARM汇编学习笔记
- ARM汇编学习笔记
- 《Linux内核分析》(一)——反汇编一个简单的C程序并分析其汇编代码的执行
- Arm汇编学习笔记(八)——寄存器的使用
- GNU ARM 汇编学习笔记
- 汇编学习笔记(一)
- 汇编学习笔记一
- 汇编学习笔记《一》
- 一.ARM裸机学习之ARM汇编
- 如何用汇编编写程序——汇编学习笔记(五)
- 不要将Android 自定义 View 想复杂
- C#修改文件名方法
- 电商基本页面
- linux学习笔记
- listView的属性大全
- Arm汇编学习笔记(一)——编写编译并执行简单汇编文件
- destoon 开启调试模式
- android艺术开发探索之 CrashHandler(全局捕获异常)和应用方法数越界
- iOS :获取通讯录 新的contact框架
- ffmpeg 内av_frame_move_ref 误用导致的内存泄漏
- android 常用 adb 命令
- Spark任务调度流程及调度策略分析
- 小白学习 Retrofit2 由浅入深
- jsp中执行onclick会刷新一次页面的问题