.thumb
.syntax unified
.equ STACKINIT, 0x20005000
.section .text
.org 0
vectors:
.word STACKINIT
.word _start+1
_start:
MOV R0, #10
MOV R1, #20
SUBS R0, R0, R1
MRS R2, PSR
b _start
arm-none-eabi-as start.asm -mcpu=cortex-m3 -mthumb -o start.out -g
SECTIONS {
. = 0x0
.text : {
*(.text)
}
}
arm-none-eabi-ld start.out -T embed.ld -nostartfiles -o embed.elf
arm-none-eabi-objcopy -O binary embed.elf embed.bin
qemu-system-arm -s -S -M stm32-p103 -nographic -kernel embed.bin
gdb-multiarch embed.elf
target remote localhost:1234
启动gdb调试之后,并且连接到qemu之后的结果如下:
将汇编代码和寄存器内容实现:
layout asm
layout reg
结果:
使用si
命令,执行下一条汇编命令
可以看到R0
寄存器的内容已经变为了我们的预设值: 10
再次执行si
命令,可以看到R1
寄存器的值也变为了我们的预设值: 20
重复执行命令si
,会发现程序重新回到_start
的开始位置,和预期结果一致