工具/软件:Code Composer Studio
大家好、我目前正在尝试将 matrixSSL 移植到 TIARM 编译器(这是一个挑战、因为 GNU 编译器的大多数性能提升来自__ASM_语句、这些语句不起作用)。 调试某些代码时、反汇编器会显示一些奇怪的输出(软件可以工作、但输出看起来很奇怪)。 asm 文件显示:
dwcfi CFA_offset、0
按 {A4、V1、V2、V3、V4、 lr};[DPU_V7M3_PIPE]
dwcfi CFA_offset、24
dwcfi save_reg_to _mem、14、-4
dwcfi save_reg_to _mem、7、-8
dwcfi save_reg_to _mem、6、-12
dwcfi save_reg_to _mem、5、-16
dwcfi save_reg_to _mem、4、-20
dwcfi save_reg_to _mem、3、-24
MOV V4,A1 ;[DPU_V7M3_PIPE]|1251|
MOV V1、A4 ;[DPU_V7M3_PIPE]|1251|
MOV V3、A2 ;[DPU_V7M3_PIPE]|1251|
.dwpsn 文件"D:/.../matrixssl-4-2-1/crypto/math/pstmnt.c、第1259行、第5列、IS_stmt、ISA 1.
;--------------------------------------------------------------
;1259 |进位= pstmnt_sub_mask (p、r、n、-(pstmnt_word_1) 1);
;--------------------------------------------------------------
MOV A1、A2 ;[DPU_V7M3_PIPE]|1259|
.dwpsn 文件"D:/.../matrixssl-4-2-1/crypto/math/pstmnt.c、第1251行、第1列、IS_stmt、ISA 1.
MOV V2、A3 ;[DPU_V7M3_PIPE]|1251|
.dwpsn 文件"D:/.../matrixssl-4-2-1/crypto/math/pstmnt.c、第1259行、第5列、IS_stmt、ISA 1.
MOV A4、#-1 ;[DPU_V7M3_PIPE]|1259|
如果我在调试器中查看相同的序列、它将显示以下内容:
pstmnt_cmp_sub_mod_carry ():
0004a418: B5F8 推 送{R3、R4、R5、R6、r7、 LR}
0004a419: 07B5 .word 0x000007b5
0004a41b: 1C46 .word 0x00001c46
0004a41d: 0E46 .word 0x00000e46
0004a41f: 0846 .word 0x00000846
1259 进位-= pstmnt_sub_mask (p、r、n、-(pstmnt_word) 1);
0004a420: 4608 mov r0、R1
1251 {
0004a422: 4615 mov R5、R2
1251 {
。 4F46 .word 0x00004f46
首先、PUSH 是一个16位命令。 因此地址增量1已经错误了。 在0x4a420中、它被重新同步、但稍后它甚至不显示地址。
是错误设置还是反汇编器错误? 我不知道哪个组件版本很有趣、整个列表很长。 以下是一些:
Code Composer Studio 基本组件8.3.0.01611
Code Composer Studio IDE ARM 组件8.3.0.201810301800
Debug Server 8.3.0.1611
Tiva C 系列 ARM MCU 2.1.1.15071
此致
Klaus