Assembly 程序计数器在没有任何指令修改的情况下发生异常变化(qemu arm,裸机)
我目前正试图让我编写的程序在裸机手臂设备上运行。因为我还没有这个设备,所以我尝试使用qemu在arm仿真上运行代码 我使用以下命令运行代码:Assembly 程序计数器在没有任何指令修改的情况下发生异常变化(qemu arm,裸机),assembly,segmentation-fault,gdb,arm,qemu,Assembly,Segmentation Fault,Gdb,Arm,Qemu,我目前正试图让我编写的程序在裸机手臂设备上运行。因为我还没有这个设备,所以我尝试使用qemu在arm仿真上运行代码 我使用以下命令运行代码:qemu系统arm-M realview-pb-a8-M 128M-nographic-s-s-kernel myprog 执行总是停留在同一点,即使我使用其他板设置。这就是它被卡住的地方(一些openSSL代码): 我如何解决这个问题?这可能是编译器错误吗 我尝试了这些编译器标志:-marm-mthumb interwork2字节的更改听起来像是拇指模式,
qemu系统arm-M realview-pb-a8-M 128M-nographic-s-s-kernel myprog
执行总是停留在同一点,即使我使用其他板设置。这就是它被卡住的地方(一些openSSL代码):
我如何解决这个问题?这可能是编译器错误吗
我尝试了这些编译器标志:
-marm
-mthumb interwork2字节的更改听起来像是拇指模式,实际上设置了cpsr
位。要么这确实是thumb代码,在这种情况下你将其反汇编错误,要么这是arm代码,在这种情况下,它在thumb模式下被错误调用。,r12设置了lsb-这里唯一“行为异常”的显然是你的编译器/链接器,以某种方式为看起来是ARM代码的部分设置一个拇指符号。什么是拇指符号?如中所示,对象文件中a地址的lsb用于指示该函数是拇指代码还是ARM代码。用-marm
选项编译和链接所有东西会有什么不同吗?我会在周一检查。它不会改变任何东西。
0x398b4 <EVP_CipherInit_ex+884> ldr r3, [r11, #-24]
0x398b8 <EVP_CipherInit_ex+888> ldr r3, [r3]
0x398bc <EVP_CipherInit_ex+892> ldr r12, [r3, #20]
0x398c0 <EVP_CipherInit_ex+896> ldr r0, [r11, #-24]
0x398c4 <EVP_CipherInit_ex+900> ldr r1, [r11, #-36] ; 0x24
0x398c8 <EVP_CipherInit_ex+904> ldr r2, [r11, #4]
0x398cc <EVP_CipherInit_ex+908> ldr r3, [r11, #8]
0x398d0 <EVP_CipherInit_ex+912> mov lr, pc
0x398d4 <EVP_CipherInit_ex+916> bx r12
[..]
-> 0x391e4 <aes_init_key> push {r11, lr} <- Strange thing happens at this instruction.
0x391e8 <aes_init_key+4> add r11, sp, #4
0x391ec <aes_init_key+8> sub sp, sp, #40 ; 0x28
0x391f0 <aes_init_key+12> str r0, [r11, #-24]
0x391f4 <aes_init_key+16> str r1, [r11, #-28]
r0 0xe28db004 -494030844 r1 0x7aeb8 503480
r2 0x7aea8 503464 r3 0x1 1
r4 0x7df98 515992 r5 0x7dfa8 516008
r6 0x0 0 r7 0x0 0
r8 0x0 0 r9 0x0 0
r10 0x60000 393216 r11 0x7ae34 503348
r12 0x391e5 233957 sp 0x7ae08 0x7ae08 <__malloc_av_+252>
lr 0x398d8 235736 pc 0x391e6 0x391e6 <aes_init_key+2>
cpsr 0x200001f3 536871411
r0 0xe28db004 -494030844 r1 0x7aeb8 503480
r2 0x7aea8 503464 r3 0x1 1
r4 0x7df98 515992 r5 0x7dfa8 516008
r6 0x0 0 r7 0x0 0
r8 0x0 0 r9 0x0 0
r10 0x60000 393216 r11 0x7ae34 503348
r12 0x391e5 233957 sp 0x7e000 0x7e000
lr 0x391e8 233960 pc 0x8 0x8
cpsr 0x200001db 536871387