c語言編譯mips程序
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。

㈡ 怎樣用c語言編譯
C編譯的整個過程很復雜,大致可以分為以下四個階段:
預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
匯編階段將匯編語言翻譯成機器指令。
鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
㈢ 怎麼把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語言! int a,b,c;a=num&ref;b=num-a;c=b;
MIPS匯編吧,只能用MIPS的編譯器mips-gcc什麼的加-S選項把C代碼翻譯成匯編吧
㈤ C或者C++轉mips怎麼用編譯器實現謝謝!
去查編譯器的幫助文檔或者數據手冊,這里涉及到C語言和匯編語言的相互調用問題,一般編譯器都會有相關說明的,但不同編譯器的調用約定或許不同
㈥ 用C語言編寫簡單的MIPS模擬器 要有代碼
硬體平台是什麼?pc上還是51上或者arm,mips?不
同硬體平台匯編不同,編譯器對程序的處理也就不同。
用匯編一般都是考慮到可以直接訪問寄存器,速度有優勢,但最大的缺點是不能跨平台,可移植性很差。
㈦ 請哪位高人幫我把這段C語言代碼轉換成MIPS匯編語言
1 .file "6.c"
2 .section .rodata
3 .LC0:
4 .string "\350\257\267\350\276\223\345\205\245\344\270\200\344\270\252\345\255\227\347\254\246\344\270\262:"
5 .align 8
6 .LC1:
8 .text
9 .globl main
10 .type main, @function
11 main:
12 .LFB0:
13 .cfi_startproc
14 pushq %rbp
15 .cfi_def_cfa_offset 16
16 .cfi_offset 6, -16
17 movq %rsp, %rbp
18 .cfi_def_cfa_register 6
19 addq $-128, %rsp
20 movq %fs:40, %rax
21 movq %rax, -8(%rbp)
22 xorl %eax, %eax
23 leaq -112(%rbp), %rdx
24 movl $0, %eax
25 movl $12, %ecx
26 movq %rdx, %rdi
27 rep stosq
28 movq %rdi, %rdx
29 movl %eax, (%rdx)
30 addq $4, %rdx
31 movl $0, -116(%rbp)
32 movl $.LC0, %edi
33 call puts
34 leaq -112(%rbp), %rax
35 movq %rax, %rdi
36 call gets
37 movl $0, -120(%rbp)
38 jmp .L2
39 .L5:
40 movl -120(%rbp), %eax
41 cltq
42 movzbl -112(%rbp,%rax), %eax
43 cmpb $96, %al
44 jle .L3
45 movl -120(%rbp), %eax
46 cltq
47 movzbl -112(%rbp,%rax), %eax
48 cmpb $122, %al
49 jle .L4
50 .L3:
51 movl -120(%rbp), %eax
52 cltq
53 movzbl -112(%rbp,%rax), %edx
54 movl -116(%rbp), %eax
55 cltq
56 movb %dl, -112(%rbp,%rax)
57 addl $1, -116(%rbp)
58 .L4:
59 addl $1, -120(%rbp)
60 .L2:
61 movl -120(%rbp), %eax
62 cltq
63 movzbl -112(%rbp,%rax), %eax
64 testb %al, %al
65 jne .L5
66 movl -116(%rbp), %eax
67 cltq
68 movb $0, -112(%rbp,%rax)
69 movl $.LC1, %edi
70 call puts
71 leaq -112(%rbp), %rax
72 movq %rax, %rdi
73 call puts
74 movq -8(%rbp), %rdx
75 xorq %fs:40, %rdx
76 je .L6
77 call __stack_chk_fail
78 .L6:
79 leave
80 .cfi_def_cfa 7, 8
81 ret
82 .cfi_endproc
83 .LFE0:
84 .size main, .-main
85 .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"
86 .section .note.GNU-stack,"",@progbits
㈧ 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的基礎地址加上位元組數!
此時應該完成了
