加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

ARM汇编指令调试技巧

发布时间:2021-11-19 10:59:01 所属栏目:教程 来源:互联网
导读:学习ARM汇编时,少不了对ARM汇编指令的调试。作为支持多语言的调试器,gdb自然是较好的选择。调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控。为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编

学习ARM汇编时,少不了对ARM汇编指令的调试。作为支持多语言的调试器,gdb自然是较好的选择。调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控。为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编指令。
 
一、准备ARM汇编程序
首先,我们构造一段简单的ARM汇编程序作为测试代码main.s。
 
.globl _start
_start:
mov R0,#0
swi 0x00900001
以上汇编指令完成了0号系统调用exit的调用。mov指令将系统调用号传入寄存器R0,然后使用0x00900001软中断陷入系统调用。
 
为了运行ARM汇编代码,需要使用交叉编译器arm-linux-gcc对ARM汇编代码进行编译。下载交叉编译器安装完毕后,对ARM汇编代码进行编译。
 
arm-linux-gcc main.s -o main -nostdlib
编译选项“-nostdlib”表示不使用任何运行时库文件,编译生成的可执行文件main只能在ARM体系结构的系统上运行。
 
二、编译安装qemu模拟器
为了x86的Linux系统内运行ARM体系结构的可执行程序,需要安装qemu模拟器。
 
首先下载qemu源码,然后保证系统已经安装了flex和bison。
 
编译安装qemu。
 
./configure --prefix=/usr
sudo make && make install
然后使用qemu的ARM模拟器执行ARM程序。
 
qemu ./main
三、编译安装arm-gdb
为了调试ARM程序,需要使用gdb的源码编译生成arm-gdb。
 
首先下载gdb源代码,编译安装。
 
./configure --target=arm-linux --prefix=/usr/local
sudo make && make install
为了和系统的gdb避免冲突,我们将gdb的安装目录安装到/usr/local,然后建立软链接即可。
 
ln -s /usr/bin/arm-gdb /usr/local/gdb/gdb
之后便可以使用arm-gdb命令调试ARM程序了。
 
四、调试ARM程序
首先使用qemu打开远程调试端口。
 
qemu-arm -g 1024 ./main
然后导出环境变量QEMU_GDB。
 
export QEMU_GDB=/usr/local/gdb
最后,进入gdb调试。
 
arm-gdb ./main
进入arm-gdb后,首先连接远程调试端口。
 
(gdb) target remote localhost:1024
然后使用gdb常用的调试命令调试代码即可。
 
(gdb) disassemble // 查看反汇编
(gdb) x /8xw 0x0000808e // 查看内存
(gdb) info register // 查看寄存器
(gdb) continue // 继续执行
(gdb) stepi // 汇编级逐过程
(gdb) nexti // 汇编级逐语句

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读