IJVM练习,在4个元素堆栈中交换2个元素

时间:2016-01-13 16:29:03

标签: java mic-1 ijvm

我试图创建一个微程序功能,给定堆栈中的4个值,交换第3个和第4个。我打电话给它" mswap",到目前为止这是微码:

mswap1 SP = SP - 1 mswap2 SP = SP - 1
mswap3 MAR = SP - 1
mswap4 rd mswap5 MAR = H
mswap6 wr mswap7 MAR = SP
mswap8 rd mswap9 MAR = SP - 1 mswap10 wr
mswap11 MAR = H mswap12 rd mswap13 MAR = SP mswap14 wr mswap15 SP = SP + 1 mswap16 SP = SP + 1; goto Main1

这是一个示例程序:

。主要 开始:BIPUSH 0x39        BIPUSH 0x30        BIPUSH 0x36        BIPUSH 0x35        MSWAP        OUT        OUT        OUT        OUT        停 .END-主

它应该输出5690 可悲的是,产量只有56 它错过了"错过"两个桩元素..这是由于过度使用SP = SP -1?当写一个类似的函数来交换第二和第三个元素时它工作得很好

1 个答案:

答案 0 :(得分:0)

mswap5正在使用H,但尚未设置H.你的意思是在早期的指令中设置它吗?

只需要两次读取和两次写入。

不需要更改SP以访问堆栈。使用H,那么您不必在例程结束时调整SP。