『壹』 求助緊急!!將下面c語言編寫的程序翻譯成MIPS語言! int a,b,c;a=num&ref;b=num-a;c=b;
MIPS匯編吧,只能用MIPS的編譯器mips-gcc什麼的加-S選項把C代碼翻譯成匯編吧
『貳』 C語言編寫好代碼後,怎麼編譯,最後生成可執行文件
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。
『叄』 怎樣用c語言編譯
C編譯的整個過程很復雜,大致可以分為以下四個階段:
預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
匯編階段將匯編語言翻譯成機器指令。
鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
『肆』 怎麼用C語言編程測試計算機的MIPS或MFLOPS值
准確測試cpu的mips或者mflops一般是設計體系結構時候用cpu模擬器或者verilog前仿得到的。對於用C語言比較准確的測試mips或者mflops,你可以用一個程序讀取系統時間,然後執行第二個程序,第二個程序執行完成後再記錄執行的時間,然後反匯編第二個程序,統計第二個程序中執行的指令條數,通常第二個程序中執行的指令數是確定的,(分支和循環的次數是可確定的)。mips和mflops在risc cpu的評價中比較有價值,感覺cisc稍差一些。
『伍』 寫出以下C語言過程對應的MIPS匯編表示
硬體平台是什麼?pc上還是51上或者arm,mips?不
同硬體平台匯編不同,編譯器對程序的處理也就不同。
用匯編一般都是考慮到可以直接訪問寄存器,速度有優勢,但最大的缺點是不能跨平台,可移植性很差。
『陸』 怎麼把C語言代碼轉換為MIPS
把C語言代碼轉換為MIPS:
以下是c語言代碼:
while (candidate_gcd <= min)
{
if (((a mod candidate_gcd) == 0) &&((b mod candidate_gcd) ==
0))
{
current_gcd = candidate_gcd;
}
candidate_gcd = candidate_gcd + 1;
}
以下為轉換為mips後的代碼:
首先設置變數:
candidate_gcd = $t0
min = $t1
a mod candidate_gcd = $t2
b mod candidate_gcd = $t3
current_gcd = $t4
$t6 = 0
$t5
代碼如下:(綠色為注釋)
Label3: //設置標簽Label3
ble $t0,$t1,Label //當$t0 小於等於$t1 時,跳到標簽Label
Label: //設置標簽Label
Add $t5,$t2,$t3 //將$t2 和$t3 相加賦值給$t5
Li $t6,0 //給$t6 賦值為0
Leq $t5, $t6,Label1 //判斷如果$t6=$t5=0,跳到標簽Label1
Label1: //設置標簽Label1
Move $t4, $t0 //$t4=$t0
Addi $t0, $t0,1 //$t0=$t0+1(自加加)
J Label3 //跳到標簽Label3,這里其實就是實現c 語言
中的while 無限循環
『柒』 C語言切換成MIPS匯編語言,B[8] = A[i-j];
sub $t0, $s3, $s4 #i-j
sll $t0, $t0, 2 #$t0=4(i-j),因為一個字佔四個位元組,所以i-j個字要4倍,mips中是位元組地址
add $t0, $t0, $s6 #¥t0=A的地址加上$t0,即是A[i-j]的地址
lw $t1, 0($t0) # 按相應地址從存儲器復制值,賦給$t1
sw $t1,32($s7) #8個字,32個位元組,所以加上32,這一步為將$t1中的值存儲到存儲器相應地址,這個地址就是&B[8]了,即B的基礎地址加上位元組數!
此時應該完成了