问题描述
我正在学习汇编并遇到了这种做法。
我正在使用的书是:Randal E. Bryant、David R. O’Hallaron - 计算机系统。程序员的观点 [第 3 版](2016 年,Pearson)
我得到了 C 代码的内循环的这段汇编代码,其中有一个累加计算来计算 r。使用 AT&T。
struct ContactView: View {
@Binding var isContactViewActive: Bool
@State var searchBar = ""
var backgroundColor = Color(red: 14/255,green: 18/255,blue: 23/255,opacity: 1.0)
var body: some View {
NavigationView {
ZStack {
backgroundColor
vstack {
HStack {
Button(action: {},label: {
Image(systemName: "magnifyingglass").font(.title)
})
Spacer()
Text("FireChat")
.font(.title)
.fontWeight(.light)
.foregroundColor(Color.white)
Spacer()
Button(action: {},label: {
Image(systemName: "power").font(.title)
})
}.padding(.top,50)
Spacer()
}
}.edgesIgnoringSafeArea(.all)
}
}
}
这是对应的C代码
L3:
mulsd (%rcx,%rax,8),%xmm0
mulsd 8(%rcx,%xmm0
mulsd 16(%rcx,%xmm0
addq $3,%rax
cmpq %r8,%rax
jl .L3
我不确定我应该如何在类似 RISC 的微操作中编写至少几次迭代。
这是我目前拥有的:
double randomproduct(double a[],long n)
{
long i;
double x,y,z;
double r=1;
for (i=0; i<n-2; i+=3) {
x = a[i]; y = a[i+1]; z = a[i+2];
r = r*x*y*z; //accumulation calc
}
for (; i<n; i++)
r *= a[i];
return r;
}
我真的很困惑应该为此使用哪些寄存器/内存位置以及如何编写类似 RISC 的微操作 shd。 请发送帮助,感谢所有帮助。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)