簡體   English   中英

C ++至MIPS匯編

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM