前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mit6.824 lab4_mit6.830

mit6.824 lab4_mit6.830

作者头像
全栈程序员站长
发布2022-11-19 11:31:29
2570
发布2022-11-19 11:31:29
举报

大家好,又见面了,我是你们的朋友全栈君。

一、 BETA ISA

A:0、1、2、3、0xc B:0x2000、0xEDEDEDED、0xFEDEDEDE、0x2004、110000 00000 11111 0010 0000 0000 0000(0xc01f2000) C:0x87654321、1、0x87654320、0x14、011101 11111 00001 0000 0000 0000 0010(0x77e10002) D:17、0、32、no instructions need to be changed E:4、110000 00000 00000 0000 0000 0000 0000(0xC0000000)

二、 快速排序

实现代码

代码语言:javascript
复制
	p_array=R2          // base address of array (arg 0)
p_left=R3
p_right=R4
p_pivotIndex=R5     // Corresponds to PivotIndex in C program
p_pivotValue=R6
p_storeIndex=R7
partition:		
PUSH(LP)
PUSH(BP)
MOVE(SP, BP)
PUSH(R1)
PUSH(R2)
PUSH(R3)
PUSH(R4)
PUSH(R5)
PUSH(R6)
PUSH(R7)
PUSH(R8)
PUSH(R9)
LD(BP, -12, p_array)
LD(BP, -16, p_left)
LD(BP, -20, p_right)
ADD(p_left, p_right, p_pivotIndex)
SHRC(p_pivotIndex, 1, p_pivotIndex)
MULC(p_pivotIndex, 4, R9)
ADD(p_array, R9, R9)		
LD(R9, 0, p_pivotValue)
MULC(p_right, 4, R9)
ADD(p_array, R9, R9)
LD(R9, 0, R7)
MULC(p_pivotIndex, 4, R9)
ADD(p_array, R9, R9)
ST(R7, 0, R9)
MOVE(p_left, p_storeIndex)
START:	ADDC(p_left, 1, p_left)
CMPLE(p_left, p_right, R8)
BF(R8, AFTER)
MULC(p_left, 4, R9)
ADDC(R9, -4, R9)
ADD(p_array, R9, R9)
LD(R9, 0, R8)		
CMPLE(R8, p_pivotValue, R1)
BF(R1, START)
MULC(p_storeIndex, 4, R9)
ADD(p_array, R9, R9)
LD(R9, 0, R1)
MULC(p_left, 4, R9)
ADDC(R9, -4, R9)
ADD(p_array, R9, R9)
ST(R1, 0, R9)
MULC(p_storeIndex, 4, R9)
ADD(p_array, R9, R9)
ST(R8, 0, R9)		
ADDC(p_storeIndex, 1, p_storeIndex)
BR(START)
AFTER:  MULC(p_storeIndex, 4, R9)
ADD(p_array, R9, R9)
LD(R9, 0, R8)
MULC(p_right, 4, R9)
ADD(p_array, R9, R9)
ST(R8, 0, R9)
MULC(p_storeIndex, 4, R9)
ADD(p_array, R9, R9)
ST(p_pivotValue, 0, R9)
MOVE(p_storeIndex, R0)
POP(R9)
POP(R8)
POP(R7)
POP(R6)
POP(R5)
POP(R4)
POP(R3)
POP(R2)
POP(R1)
MOVE(BP, SP)
POP(BP)
POP(LP)
JMP(LP)
代码语言:javascript
复制
quicksort:
PUSH(LP)
PUSH(BP)
MOVE(SP, BP)
PUSH(R1)
PUSH(R2)
PUSH(R3)
PUSH(R4)
LD(BP, -12, R1)
LD(BP, -16, R2)
LD(BP, -20, R3)
.breakpoint
CMPLT(R2, R3, R4)
BF(R4, END)
PUSH(R3)
PUSH(R2)
PUSH(R1)
BR(partition, LP)
DEALLOCATE(3)
.breakpoint
ADDC(R0, -1, R4)
PUSH(R4)
PUSH(R2)
PUSH(R1)
BR(quicksort, LP)
DEALLOCATE(3)
PUSH(R3)
ADDC(R0, 1, R4)
PUSH(R4)
PUSH(R1)
BR(quicksort, LP)
DEALLOCATE(3)
END:	POP(R4)
POP(R3)
POP(R2)
POP(R1)
MOVE(BP, SP)
POP(BP)
POP(LP)
JMP(LP)

A:0x14 B:0、-1 C:0xa D:first (smaller elements) E:0、4 F:5

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187553.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月30日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 BETA ISA
  • 二、 快速排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档