2012-05-21 28 views
5

我期待創建一個最小的,計算上通用的字母數字x86操作子集。最終,我希望子集包含儘可能少的指令,如果有多個最小子集,我也想知道。子集應該能夠模擬任何可以用整套字母數字指令寫入的程序。說明應僅涵蓋與「A-Z」,「a-z」和「0-9」字符對應的說明。圖靈完整的字母數字x86指令集(子集)

到目前爲止,我認爲一個pushpopincdeccmpje就足夠了,但我敢肯定有一個較小的一套。我怎麼能證明我生成的一個集合能夠使用所有的字母數字指令來模擬任何程序?我怎麼能證明這樣一個集合是最小的?有誰知道這樣的指令子集是否存在?

+2

你肯定可以從列表中刪除inc或dec,你不必同時擁有兩個。 :) –

+1

不能'inc'和'dec'被一個負號接受'add'替換? – Nyerguds

+1

像Alexey說的那樣,只有'inc'或'dec'中的一個是必須的,因爲最終會發生溢出。 – cytinus

回答

0

這只是一條指令!這裏的證明

http://en.wikipedia.org/wiki/One_instruction_set_computer

爲什麼?僅僅因爲「指令」是一個與機器相關的概念。你不能僅僅因爲沒有這樣的通用/絕對/原子指令就定義一小組指令:它全部取決於底層硬件:實際上,「真正的」圖靈機是一種數學概念(一組規則)而不是物理機器

+0

這與我的問題無關,這是非常具體的問題。 – cytinus

+0

但您可以在那裏接受指令並將其拆分爲x86指令。例如SBNZ可以用'sub'和'jne'來實現,'SUBNEG'可以用'sub'和'js'來模擬...... –

1

我不確定我是否有問題,特別是關於「字母數字」的部分,但我想指出,衆所周知,movxor都是圖靈完整版。