Я пытаюсь создать микропрограммированную функцию, которая, учитывая 4 значения в стеке, меняет местами третий и четвертый. Я назвал его "mswap", это микрокода до сих пор:IJVM упражнение, замена 2 элементов в стеке из 4 элементов
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 OUT выход OUT OUT HALT .end-Главный
Он должен дать результат 5690 Грустная правда, выход только 56 Это ike «пропустил» два элемента свай. Это из-за чрезмерного использования SP = SP -1? Он отлично работал при написании аналогичной функции для замены 2-го и 3-го элементов
Спасибо, ваше предложение действительно помогло, я вернул эту инструкцию, наконец, –
@Davide Piccinelli: Нет проблем. Как насчет голосования до ответа ??? – downeyt
Конечно :) Я думал, что уже сделал, на сайте, вероятно, было немного проблем вчера –