【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《c语言转换为mips》,欢迎阅读!
实 验 报 告
课程名称 计算机体系结构 实验项目 MIPS与C语言的互换 实验仪器 个人计算机
系 别 _ 计算机学院__ 专 业 ___ 网络工程 班级/学号 网工0903/2009011422 学生姓名 _______张昭_______ 实验日期 ______________________ 成 绩 ______________________
指导教师
_____ _侯凌燕_________
课程作业三—---MIPS与C语言的互换
(学号尾数除4取余)
将下面c语言转换为mips
2. The following C code has been converted to MIPS assembly code
while (candidate_gcd <= min) {
if (((a mod candidate_gcd) == 0) &&((b mod candidate_gcd) == 0))
{
current_gcd = candidate_gcd; }
candidate_gcd = candidate_gcd + 1; }
以下为我转换后的代码:
首先设置变量:
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无限循环
实验代码的设计思想:
实验中的while循环的实现是靠跳转标签来实现的,当所有代码执行到最后时,自动跳转标签到Label3,这样就形成了while的无限循环,在Label3
标签下的代码是判断当candidate_gcd <= min时,执行下面标签Label的代码,当a和b对candidate_gcd求余后都为0,这样通过对两个值的相加并赋值给$t5来看出两个求余后是否为零,因为求余后都为正数,所以不必考虑出现正负相加为0.这样再定义一个变量$t6并设置初值为0,当$t5=$t6=0时,跳转标签到Label1,执行标签Label1下的代码,将candidate_gcd中的值赋给current_gcd,然后让candidate_gcd中的数值进行自加加,然后跳转标签到Label3,于是形成了while的无限循环。
本文来源:https://www.wddqxz.cn/604ef839856fb84ae45c3b3567ec102de2bddf38.html