【问题标题】:IJVM exercise, swapping 2 elements in a 4 elements stackIJVM 练习,交换 4 个元素堆栈中的 2 个元素
【发布时间】:2016-01-13 16:29:02
【问题描述】:

我正在尝试创建一个微程序函数,给定堆栈中的 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

这是一个示例程序:

.main 开始:BIPUSH 0x39 BIPUSH 0x30 BIPUSH 0x36 BIPUSH 0x35 MSWAP 出去 出去 出去 出去 停止 .end-main

它应该给出 5690 的输出 可悲的事实,输出只有 56 就像我“错过”了两个桩元素..这是由于过度使用 SP = SP -1 造成的吗?在编写类似的函数来交换第二个和第三个元素时它工作得很好

【问题讨论】:

    标签: java mic-1 ijvm


    【解决方案1】:

    mswap5 正在使用 H,但尚未设置 H。你的意思是在前面的指令中设置它吗?

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

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

    【讨论】:

    • 谢谢,你的建议真的很有帮助,我终于让这条指令正常工作了
    • 当然 :) 我以为我已经做到了,该网站昨天可能有点问题
    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 2017-05-18
    • 2016-07-11
    • 1970-01-01
    • 2010-10-28
    • 2015-08-31
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多