Bubble Sort MIPS
来源:互联网 发布:mac抹掉磁盘 编辑:程序博客网 时间:2024/06/05 16:07
感谢此文章的参考:http://blog.csdn.net/linwh8/article/details/68944058
第一次写MIPS就要写排序,不得不说这学期的计算机组成原理实验课有点艰辛,等下还要写完实验报告,有点困
MIPS的话主要分为几部分
.data部分
个人认为是一些前期准备,比如:给字符串中字符与某个变量关联起来、申请内存空间等
.text
.globl main部分
这是重点
代码基本就在这其中完成
话不多说来看看代码
################################################### #include<iostream># using namespace std;# int main()# {# int num=5;# int a[5];# for(int i=0;i<num;i++)# cin>>a[i];# for(int i=0;i<num;i++)# {# for(int j=i;j>0;j--)# {# if(a[j]<a[j-1])# {# int temp=a[j];# a[j]=a[j-1];# a[j-1]=temp;# }# }# }# for(int i=num-1;i>=0;i--)# cout<<a[i]<<" ";# } ##################################################.text.globl mainmain: addi $v0,$zero,10 # $v0 数组长度设置为10 la $t6,array # $t6 是数组首地址 move $t7,$zero # $t7 是循环变量i move $t8,$v0 # $t8 是数组长度 move $t9,$zero # $t9 是循环变量jinput: li $v0,5 # 读取用户输入的数字 syscall move $t0,$t7 # $t0取i sll $t0,$t0,2 # $t0变为其字节地址 addu $t1,$t0,$t6 # $t0变为数组中字节地址 sw $v0,0($t1) # 把用户输入的数字保存到$t0中 addi $t7,$t7,1 # 数组+1 blt $t7,$t8,input # 比较当前数组序号与数组长度,如果还未填满数组,则跳转到input再进行输入 move $t7,$zero # 若已经填满数组,则结束输入模块,$t7置0方便下次使用loop1: move $t9,$t7 #循环的j重置为iloop2: move $t0,$t9 #$t0取j sll $t0,$t0,2 #$t0变为其字节地址 addu $t0,$t0,$t6 #$t0变为数组中字节地址 lw $t1,0($t0) #$t1获取$t0中元素 addi $t3,$t0,-4 #$t0取数组中j-1的字节地址 lw $t2,0($t3) #$t2获取$t0中元素 bge $t1,$t2,skip #若$t2小于$t1,则跳转到skip sw $t2,0($t0) #若$t2大于$t1,则两者进行交换,交换后再跳转到skip sw $t1,0($t3)skip: addi $t9,$t9,-1 #j-1 blt $zero,$t9,loop2 #如果j大于0,则跳转到loop2 addi $t7,$t7,1 #如果j小于0,则i+1后跳转到loop1 blt $t7,$t8,loop1middo: addi $t8,$t8,-1 move $t7,$t8 #中途处理,$t7(i)置为$t8-1 addi $t2,$zero,-1print: move $t0,$t7 #$t0获取$t7中元素 sll $t0,$t0,2 #$t0变为其字节地址 addu $t0,$t0,$t6 #$t0变为数组中字节地址 lw $a0,0($t0) #$a0获取$t0中元素 li $v0,1 #打印$a0 syscall la $a0,separate #打印空格符号 li $v0,4 syscall addi $t7,$t7,-1 #i-- blt $t2,$t7,print #如果i大于等于0,则继续执行print.dataarray:.space 400 #申请400字节内存separate:.asciiz" " #把separate变量与空格关联起来
其中第一次发生了错误
真是令人窒息
debug全靠猜
后来发现了第一次代码中
更改为
程序即可正常运行( ̄_ ̄|||)
我内心里一顿无奈
浪费了很多时间
这样看来MIPS两个sw是并行的?所以产生了错误?
这个真没弄懂
明早上课问问老师
第一次写MIPS就这样愉快的结束了(写一上午写了个bug一点也不愉快= =)
阅读全文
0 0
- Bubble Sort MIPS
- Bubble sort
- Bubble Sort
- bubble sort
- Bubble Sort
- Bubble Sort
- bubble sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- 2017.10.15 补题: F.J
- oracle11g 修改字符集 修改为ZHS16GBK
- HTML中input和button解决等高不对齐的原因
- Flex弹性布局
- pandas移除重复项
- Bubble Sort MIPS
- 智能传感器深度报告:未来机器感官的百亿美元市场【附下载】| 智东西内参
- 网络请求
- spring in action 学习笔记(九)使用注解进行装配
- string-array取值到ArrayList,代码如下
- 函数定义与声明的区别
- Noip2017初赛心得(1)选择题
- Java jvm调优及相关
- Android HandlerThread 完全解析