#6 函数(Part.1)随机储存器
-郭两岁
编辑于 2023年08月05日 18:56
收录于文集
共30篇


先给我们的指令集增加一个内存操作的指令

LEG指令集

读取的时参数1指向内存地址,输出地址占用结果地址

写入的时候参数1指向寄存器/输入输出,参数2指向内存地址


在指令集的基础上完善电路

装一个RAM,读取输出接入结果总线

RAM的控制端口按照指令集进行设计,用开关进行控制

并且在RAM进行读取的时候打开寄存器的写入开关

(算术控制线和内存条件下的读取控制线用OR门拼接后,接入寄存器的写入激活接口)

LEG(随机储存器)


接下来是代码

代码块
Python
自动换行
复制代码
#reg0 is a counter
label start
ram_w input reg0 0	#RAM:reg0=input
add|i 1 reg0 reg0	#reg0=reg0+1
less_than|j reg0 32 start#jumpif reg0<32

add|i|j 0 0 reg0		#reg0=0
label jump
ram_r reg0 0 output	#output=RAM:reg0
add|i 1 reg0 reg0	#reg0=reg0+1
less_than|j reg0 32 jump#jumpif reg0<32
复制成功

ram_r是内存读取,ram_w是内存写入 i和j是参数1是立即数和参数2是立即数的意思

把输入放到内存,计数器加一,直到31

归零,逐个输出

很简单的代码

总延迟112 时钟刻191 总用时21392

LEG(随机储存器)


自定义汇编别名:

add:00000000(0) input:00000111(7) output:00000111(7) ram_r:00010000(16) ram_w:00010001(17) equal:00100000(32) less_than:00100010(34) j:01000000(64) i:10000000(128) reg0-reg5:00000000-00000101(0-5)