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的基础地址加上字节数!
此时应该完成了
