Arm 臂对称差
我试图在ARM上制作一个程序,找出两个集合之间的对称差异,并将其存储在一个单独的集合中,我不确定我做错了什么,有人能帮忙吗? 以下是我所拥有的:Arm 臂对称差,arm,Arm,我试图在ARM上制作一个程序,找出两个集合之间的对称差异,并将其存储在一个单独的集合中,我不确定我做错了什么,有人能帮忙吗? 以下是我所拥有的: start LDR R0, = ASize ;load number of elements in A LDR R0, [R0] LDR R1, = BSize ;load number of elements in B LDR R1, [R1] LDR R2,
start
LDR R0, = ASize ;load number of elements in A
LDR R0, [R0]
LDR R1, = BSize ;load number of elements in B
LDR R1, [R1]
LDR R2, = CSize ;load number of elements in C
LDR R2, [R2]
LDR R3, = AElems ;load elements in A
LDR R4, = BElems ;load elements in B
LDR R5, = CElems ;load elements in C
LDR R8, = '?'
while
CMP R0,#0
BEQ endwh
while2
CMP R1,#0
BEQ endwh
LDR R6, [R3]
LDR R7, [R4]
CMP R6,R7
BEQ endwh
STR R7, [R5]
ADD R2,R2,#1
ADD R4,R4,#4
STR R8, [R4]
SUB R1,R1,#1
B while
STR R6, [R5]
ADD R2,R2,#1
STR R8, [R3]
SUB R0,R0,#1
ADD R3,R3,#4
B while2
endwh
stop B stop
我设法弄明白了谢谢你的帮助! 这是我想出的解决办法
start
LDR R0, = ASize
LDR R0, [R0]
LDR R1, = BSize
LDR R1, [R1]
LDR R2, = CSize
LDR R2, [R2]
LDR R3, = AElems
LDR R4, = BElems
LDR R5, = CElems
LDR R8, = '?'
while
CMP R0,#0
BEQ endwh1
LDR R6, [R3]
LDR R7, [R4]
CMP R6,R7
BNE endwh2
STR R8, [R3]
STR R8, [R4]
ADD R3,R3,#4
SUB R0,R0,#1
B while
endwh2
CMP R1,#0
BEQ endwh3
ADD R4,R4,#4
SUB R1,R1,#1
B while
endwh3
STR R6, [R5]
ADD R5,R5,#4
ADD R2,R2,#1
ADD R3,R3,#4
SUB R0,R0,#1
LDR R4, = BElems
LDR R1, = BSize
LDR R1, [R1]
B while
endwh1
while2
CMP R1,#0
BEQ endwh
LDR R7, [R4]
CMP R7,#'?'
BEQ endwh4
STR R7, [R5]
ADD R2,R2,#1
ADD R5,R5,#4
ADD R4,R4,#4
SUB R1,R1,#1
B while2
endwh4
ADD R4,R4,#4
SUB R1,R1,#1
B while2
endwh
stop B stop
您是否假设“A”和“B”数组是有序的?我认为您的第二个
beq endwh
应该重新加载'r1==BSize'和'r4'作为'BElems',以重新启动下一个元素。此外,如果“CMP R6,R7”为真,则仅表示放弃结果集“C”的值(逻辑和),而不是结束算法。注释您的代码并使用.set name rN
为您的注册表提供更有意义的名称会很有帮助。你能写出你想要发生的事情的“C”代码或流程图等吗?您需要在b之后添加标签,而;它目前是死代码。