如何解决这个 C 到 RISCV 的转换是否正确?
我正在尝试将此 C 代码转换为 riscv(64 位):
int a=10,b=10,i=0,j=0;
int D[200];
for(i=0;i<=a;i++)
for(j=0;j<b;j++)
D[4*j] = i+j;
此 C 代码使用嵌套循环和数组,因此不容易转换...
但这是我的 riscv 代码:
.data
arr: .word 1000
# x5= i,x6=j,x7=a,x8=b
.text
la x10,arr # x10 = array address
li x5,-1 # i = -1
li x7,10 # a = 10
li x8,10 # b = 10
for1:
li x6,-1 # j = -1
addi x5,x5,1 # i += 1
bge x5,x7,exit1 # If( i >= 10 ) go to exit1
j for2 # Go to inner for
for2:
addi x6,x6,1 # j += 1
bge x6,x8,for1 # If( j >= 10 ) go to upper for
slli x28,5 # Reg x28 = j*(4*8)
add x29,x10,x28 # Reg x29 = Base address + j*(4*8)
ld x29,0(x29) # Reg x29 = D[4*j]
add x29,x5 # D[4*j] = i+j
j for2 # Continue for
exit1:
这种转换是否正确?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。