-
-
[旧帖] [求助]ARM汇编函数求指点 各路大神请进 0.00雪花
-
发表于: 2015-5-18 15:45 1260
-
假设R0的内存数据前16个字节为以下数据:
R0:0-F = 03 00 00 00 05 00 00 00 06 00 00 09
R0的偏址 为 0x1100
PUSH {R3,LR} ; 寄存器R3,LR入栈
MOVS R3, R0 ;R3 = R0 = 0x1100
LDR R2, [R0,#8] ;R2 = R0+8 的取值数值 R2 = [0x1108] = 0x09000006
LDR R1, [R3] ;R1 = R0的取值数值 R1 = [0x1100] = 0x3
LDR R0, [R0,#4] ;R0 = R0+4的取值数值 R0 = [0x1104] = 0x5
SUBS R0, R2, R0 ;R0 = R2 - R0 = 0x09000006 - 0x5
CMP R0, R1 ;比较R0 和 R1
BNE loc_270A24
//相等的部分未列出
loc_270A24 ;如果R0 != R1
LDRB R0, [R2] ; R0 = R0 + 8 的数值 R0 = 0x06
ADDS R2, #1 ; R2 = R2 + 1 = 0x09000007
STR R2, [R3,#8] ; [R0 + 8] = [0x1108] = 0x09000007
POP {R3,PC} ; 寄存器R3,LR出栈
这样翻译出来有错误么? 本人初学者 如果有错误 请大神指点指点 谢谢!!!!
R0:0-F = 03 00 00 00 05 00 00 00 06 00 00 09
R0的偏址 为 0x1100
PUSH {R3,LR} ; 寄存器R3,LR入栈
MOVS R3, R0 ;R3 = R0 = 0x1100
LDR R2, [R0,#8] ;R2 = R0+8 的取值数值 R2 = [0x1108] = 0x09000006
LDR R1, [R3] ;R1 = R0的取值数值 R1 = [0x1100] = 0x3
LDR R0, [R0,#4] ;R0 = R0+4的取值数值 R0 = [0x1104] = 0x5
SUBS R0, R2, R0 ;R0 = R2 - R0 = 0x09000006 - 0x5
CMP R0, R1 ;比较R0 和 R1
BNE loc_270A24
//相等的部分未列出
loc_270A24 ;如果R0 != R1
LDRB R0, [R2] ; R0 = R0 + 8 的数值 R0 = 0x06
ADDS R2, #1 ; R2 = R2 + 1 = 0x09000007
STR R2, [R3,#8] ; [R0 + 8] = [0x1108] = 0x09000007
POP {R3,PC} ; 寄存器R3,LR出栈
这样翻译出来有错误么? 本人初学者 如果有错误 请大神指点指点 谢谢!!!!
赞赏
看原图
赞赏
雪币:
留言: