回覆列表
  • 1 # 使用者8367360355316

    subleq: subtract and branch if less than or equal to zero. 很有名的一個one instruction set computer.

    (請各位注意審題啊,問的是一條“指令”,是ISA層面的問題。所以XOR這樣的答案是不對的,XOR屬於硬體實現層面。更何況XOR只能實現所有的組合邏輯,但是時序邏輯也無法實現嘛。)

    這條指令實現起來虛擬碼如下:

    subleq a, b, c

    mem[b] = mem[b] - mem[a];

    if (mem[b] <= 0), branch to c;

    a, b, c都是virtual address, 這樣“mem[b] = mem[b] - mem[a]”的反覆呼叫可以實現所有的計算,以及資料的儲存和呼叫。“if (mem[b] <= 0), branch to c”可以實現分支(branch)。

    更細一點來說,mem[a], mem[b]是從地址a,b呼叫數值,做減法,然後存回地址b. 既然可以做減法了,那複雜一點的組合就可以輕鬆實現加減乘,然後再用一些數值方法實現除法,相對複雜。所以load-store和arithmetic功能都具備了。而且根據減法的結果決定是否跳轉,實現了conditional branch, 那麼unconditional branch的只要程式稍微聰明一點就可實現。那麼機器語言的所有功能其實都能實現了。只不過現實中不太會有人真的這麼設計計算機。

    參考了Wikipedia的One instruction set computer,還有其他例子,但原理是類似的。

  • 中秋節和大豐收的關聯?
  • 描寫美麗風景的四字成語?