[英]C++ to MIPS assembly
如果我將此代碼轉移到mips。
int arr[3];
cin>>arr[0];
cin>>arr[1];
arr[1]+=arr[0];
cin>>arr[2];
arr[2]+=arr[1];
如果我在$ t0中有arr [0]的值,在$ t1中有arr [1]的值,而在$ s0中有arr的地址。
在這條線
arr[1]+=arr[0];
我應該怎么做呢? 像這樣直接使用$ t1和$ t0
add $t1,$t1,$t0
或者我應該再次從寄存器的內存中獲取值,並執行如下add指令:
lw $s1,($S0)
lw $s2,4($S0)
add $s2,$s2,$s1
編譯器做什么?
如果已將值正確加載到$t0
和$t1
則無需再次從地址中獲取值。
編譯器非常復雜,編譯器生成的內容取決於很多事情,例如Tilo提到的優化。 最好的查看方法是自己編譯並查看生成的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.