c语言转换为mips

2022-05-20 17:23:15   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《c语言转换为mips》,欢迎阅读!
转换,语言,mips






课程名称 计算机体系结构 实验项目 MIPSC语言的互换 实验仪器 个人计算机





_ 计算机学院__ ___ 网络工程 班级/学号 网工0903/2009011422 学生姓名 _______张昭_______ 实验日期 ______________________ ______________________

指导教师

_____ _侯凌燕_________


课程作业三—---MIPSC语言的互换

(学号尾数除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代码,当abcandidate_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

相关推荐