问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一段完整的MIPS汇编代码?

发布网友 发布时间:2023-10-29 18:45

我来回答

1个回答

热心网友 时间:2024-11-15 18:47

代码如下:
(这个是百度得到的 )
~/ vi Hello.c
"Hello.c" [New file]
/* Example to illustrate mips register convention
* -Author: BNN
* 11/29/2001
*/ int addFunc(int,int);
int subFunc(int); void main()
{ int x,y,z;
x= 1;
y=2;
z = addFunc(x,y);
}
int addFunc(int x,int y)
{
int value1 = 5;
int value2; value2 = subFunc(value1);
return (x+y+value2); } int subFunc(int value)
{
return value--;
}

反汇编代码后的代码:

/* main Function */
0000000000000000 :
/*create a stack frame by moving the stack pointer 8
*bytes down and meantime update the sp value
*/
0: 27bdfff8 addiu $sp,$sp,-8
/* Save the return address to the current sp position.*/
4: afbf0000 sw $ra,0($sp)
8: 0c000000 jal 0
/* nop is for the delay slot */
c: 00000000 nop
/* Fill the argument a0 with the value 1 */
10: 24040001 li $a0,1
/* Jump the addFunc */
14: 0c00000a jal 28
/* NOTE HERE: Why we fill the second argument
*behind the addFunc function call?
* This is all about the "-O1" compilation optimizaiton.
* With mips architecture, the instruciton after jump
* will also be fetched into the pipline and get
* exectuted. Therefore, we can promise that the
* second argument will be filled with the value of
* integer 2.
*/
18: 24050002 li $a1,2
/*Load the return address from the stack pointer
* Note here that the result v0 contains the result of
* addFunc function call
*/
1c: 8fbf0000 lw $ra,0($sp)
/* Return */
20: 03e00008 jr $ra
/* Restore the stack frame */
24: 27bd0008 addiu $sp,$sp,8 /* addFunc Function */
0000000000000028 :
/* Create a stack frame by allocating 16 bytes or 4
* words size
*/
28: 27bdfff0 addiu $sp,$sp,-16
/* Save the return address into the stack with 8 bytes
* offset. Please note that compiler does not save the
* ra to 0($sp).
*Think of why, in contrast of the previous PowerPC
* EABI convention
*/
2c: afbf0008 sw $ra,8($sp)
/* We save the s1 reg. value into the stack
* because we will use s1 in this function
* Note that the 4,5,6,7($sp) positions will then
* be occupied by this 32 bits size register
*/
30: afb10004 sw $s1,4($sp)
/* Withe same reason, save s0 reg. */
34: afb00000 sw $s0,0($sp)
/* Retrieve the argument 0 into s0 reg. */
38: 0080802d move $s0,$a0
/* Retrieve the argument 1 into s1 reg. */
3c: 00a0882d move $s1,$a1
/* Call the subFunc with a0 with 5 */
40: 0c000019 jal 64
/* In the delay slot, we load the 5 into argument a0 reg
*for subFunc call.
*/
44: 24040005 li $a0,5
/* s0 = s0+s1; note that s0 and s1 holds the values of
* x,y, respectively
*/
48: 02118021 ad $s0,$s0,$s1
/* v0 = s0+v0; v0 holds the return results of subFunc
*call; And we let v0 hold the final results
*/
4c: 02021021 ad $v0,$s0,$v0
/*Retrieve the ra value from stack */
50: 8fbf0008 lw $ra,8($sp)
/*!!!!restore the s1 reg. value */
54: 8fb10004 lw $s1,4($sp)
/*!!!! restore the s0 reg. value */
58: 8fb00000 lw $s0,0($sp)
/* Return back to main func */
5c: 03e00008 jr $ra
/* Update/restore the stack pointer/frame */
60: 27bd0010 addiu $sp,$sp,16 /* subFunc Function */
0000000000000064 :
/* return back to addFunc function */
64: 03e00008 jr $ra
/* Taking advantage of the mips delay slot, filling the
* result reg v0 by simply assigning the v0 as the value
*of a0. This is a bug from my c source
* codes--"value--". I should write my codes
* like "--value", instead.
68: 0080102d move $v0,$a0
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 用mips汇编语言编写一个程序 急用!! 题目:实现一个光照...2 目前我国视频侦查技术有哪些法律规定8 女27岁,买了平安护身福终身寿险 分红型,合适吗? 中医中的望,闻,问,切分别指什么?69 天猫魔盒老是自动关机开机1 密室逃亡九十七关怎么过 跪求 windows 7 64位旗舰版激活码 跪求windows7专业版64位激活密钥7 跪求:win7 64位专业版 可用的激活码,谢谢!1 任朔莹的名字含义及寓意 在圆中,直径AB=6,BC是弦,角ABC=30度,点p在BC...15 我发现在光线不好的情况下照出来的照片和在光线好的情况下照出来... 二次方程在什么情况下无解?? 天津火车站附近有什么好玩的10 某列车从从长春到图们,中间有六个站点,如果每个起点站到终点站...41 长春轻轨3号线卫星场到火车站需要多长时间1 平安守护欣生两全险买了会亏吗?保障时间怎样? 希望提供一些四级应用文的模板 告诉我一下CAD怎么把字体加粗啊?熟悉的看下吧,打心底感谢各位朋友8j_百 ... 中石化加油卡在自动圈存机上圈存成功1000,但卡里显示没有钱,怎么... 速求一篇英语作文: 快餐在中国非常流行,尤其受到青少年的青睐...83 《查理九世》正版一共多少册?名字?518 查理九世现有几册,书名,正版?71 国管公积金封存 怎么提取 水木社区1 贴吧用语“十循”是什么意思?44 水木社区帖子企业侵权内容完全不处理? 他们中的每一个用英语怎么说10 水木菁华是什么意思1 我们中的每一个用英语写怎么写15 照片如何补光 五W是什么?76 企业5个W,是什么、为什么、做什么、谁去做,怎么做详解?12 圆O是△ABC的外接圆,△ABC是钝角三角形,且 AB=AC...2 企业5个W,是什么、为什么、做什么、谁去做、怎么做详解35 人力资源管理中的五个W一个H是什么18 有德乡的介绍 汇编语言编程:从FIRST开始的100个单元中存放着一个字符...7 汇编语言复习题求答案1 解释一下管理学的5个w和1个h?96 新闻五要素的五W是什么啊?283