`
soboer
  • 浏览: 1310224 次
文章分类
社区版块
存档分类
最新评论

ARM汇编调试

 
阅读更多

<!-- @page { margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } A:link { so-language: zxx } -->

最近在学习ARM的汇编,但是ARM不像x86,可以很方便的调试。不过还好有虚拟机,而且还有GDB这样万能的调试器。Google了很久,又结合自己的实践,终于成功的调试了ARM的汇编,在此向对ARM嵌入式感兴趣的同学分享一下。

首先说明需要的工具
1. QEMU
这个模拟器不仅可以模拟x86,还可以模拟ARMMIPS,可谓强大
2. GDB
(源代码)不用说了,万能调试器,但是需要从源代码编译
3. arm-linux
交叉工具链我用的是自己开发板配套的3.4版本,不过去www.uclinux.org随便下载一个就可以(不过貌似uclinuxGFW了……)

先编译GDB,设置targetARM平台:
$ ./configure --target=arm-linux
$ make

$ make install

注:默认目录/usr/local/bin/

OK
,开始写汇编程序,sample代码很简单,给3个寄存器赋值,之后死循环。注意一定要死循环,否则的话会遇到非法指令或者未知指令。

=======test.S========
.globl _start
_start:
mov r0, #0
mov r1, #1
mov r2, #2
loop:
b loop
=======EOF=========

编译:
$ arm-linx-as -o test.o test.S
链接:
$ arm-linux-ld -o test test.o
此时可以用objdump查看test的内容:
$ arm-linux-objdump -d test
接下来就是调试了,用qemu启动gdb端口监听:
$ qemu-arm -g 11111 test
之后启动gdb,注意启动的时候要指明test,不能启动之后用file指定test(为什么不能不清楚,不过是试验结果):
$ arm-linux-gdb /PATH_TO_TEST
注意这里的gdb不是系统的gdb,而是刚刚编译好的gdb
(gdb) target remote localhost:11111
设置目标为本机11111端口
(gdb) disassemble
反汇编
(gdb) display /10i $pc-16
这个命令是显示当前pc附近的10条指令,代替调试x86程序的list命令
(gdb) si si
,不是s,是单步执行指令,如果是s的话就会执行到下一个标号处。类似的还有ni
(gdb) info register
嗯,这个就是查看寄存器的值啦~
(gdb) x /16 0
这个是查看0x00000000开始的16个字(32 bits per word)的内存信息

差不多就知道这些了,有一个问题是不知道如何设置指令的断点,以后再试吧……
如果直接运行程序,直接

qemu-arm test
现在可以边看书边动手实践了~QEMU还支持Thumb指令集和Jazelle指令集,应该都可以这样调试的

分享到:
评论

相关推荐

    ARM汇编实现log2函数

    用ARM汇编子程序实现求以2为底的对数。整个实验代码是ADS的工程文件。其中C语言程序是入口控制程序,调用ARM的汇编语言程序,以半主机方式(模拟器方式)完成输入和输出,以及代码的调试。要求对C代码和ARM汇编代码...

    ARM汇编.pdf

    通过阅读本章,读者可以掌握ARM汇编语言的设计方法。 第5章本章是全书的重点,详细介绍基于S3C4510B的系统的设计全过程,包括存储器及外围芯片的选型,各单元电路的设计、调试等。通过对本章的阅读,具有一定系统...

    ARM汇编数据复制源程序.zip_ARM 汇编_ARM数据复制_ARM汇编_arm_arm汇编例程

    ARM汇编对初学者来说是比较难学的,这个数据复制的源程序是学习ARM汇编的经典例子,已经调试过,在Keil4中可以完美运行。

    keil调试教程 反汇编技巧经验 ARM汇编指令.rar

    keil调试教程、反汇编技巧经验、ARM汇编指令。

    反汇编调试工具

    反汇编调试工具,包含X86和X64调试版本。非OllyDbg

    arm汇编ldr用法

    ADS的工程1.2,经过本人调试可用,

    AXD开发板调试指南

    AXD开发板调试指南 arm 汇编调试

    ARM汇编语言

    1、熟练掌握常用指令LDR LDM STR STM ,条件符号的使用,影响标志位的操作,常用... 2、熟悉ADS1.2汇编的基本格式和调试方法,逐渐掌握排错技巧。 3、ADS1.2软件操作不明的同学查看“ADS集成开发环境使用方法.doc”文件

    ARM教程之ARM常用开发工具及相应开发环境配置资料.rar

    避免了枯燥的ARM汇编语言的学习过程。   学ARM的人可以直接使用C语言编写运用程序。   可以使用低廉的H-JTAG调试代理直接在FLASH中调试。这对最多只有8kRAM的LPC210X ARM来说是一很不错的选择。 ...

    ARM、PowerPC、MIPS反汇编工具V1.24.00

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.24.00相对上一版本,进一步完善COREDUMP文件解析与应用,提供堆栈...

    实验三 ADS编辑ARM汇编程序

    掌握ADS集成开发环境CodeWarrior IDE和调试工具AXD的使用 掌握ARM汇编程序的编辑与调试的基本操作

    ARM 汇编试验

    ARM 汇编试验 目的:学会建立工程项目文件 掌握ARM会变语言程序涉及 学习c/会变混合编程基本方法 熟悉调试环境

    keil uVision4 for ARM Cortex-M3 使用汇编示例

    1,说明在C中如何调用汇编函数 2,说明在汇编中如何调用C 函数

    ARM指令集仿真环境搭建资料含教程说明

    - ARM汇编语言的调试和运行方法 本文档旨在为初学者提供一个快速入门的指南,帮助他们掌握ARM指令集仿真环境的搭建和使用方法。本文档不涉及ARM指令集的详细介绍和分析,也不涉及ARM汇编语言的高级特性和技巧。如果...

    ARM、PowerPC、MIPS反汇编工具V1.23.03

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.23.03相对上一版本,提供32位X86反汇编;V1.23.02相对上一版本,...

    ARM、MIPS、X86、PowerPC反汇编工具V2.0.3

    反汇编Linux/Windows OS运行的32位/64位程序/动态库文件,CPU类型:ARM PowerPC MIPS X86 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有CORE文件解调用栈、文本比较等功能。V2.0.3相对上一版本,完善ARM64、...

    ARM、MIPS、X86、PowerPC反汇编工具V1.26.01

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS X86 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.26.01相对上一版本,增加ARM64反汇编、64位core文件解析;V...

    ARM、MIPS、X86、PowerPC反汇编工具V1.26.00

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS X86 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.26.00相对上一版本,增强EXE反汇编,增加dbx老邮件解析、...

    ARM、PowerPC、MIPS反汇编工具V1.24.02

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.24.02相对上一版本,针对进程主动捕捉异常的信息定制处理进一步...

    ARM、PowerPC、MIPS反汇编工具V1.25.02

    反汇编带符号表的32位/64位ELF目标文件,CPU类型:ARM PowerPC MIPS 操作菜单选择:文件解析 Alx+P ELF文件解析 Alt+E 另有文本比较等杂项功能。V1.25.02相对上一版本,COREDUMP统计、匹配目标文件等相关功能优化,...

Global site tag (gtag.js) - Google Analytics