2012-05-21 32 views
5

Szukam utworzyć minimalny, uniwersalny pod względem obliczeniowym podzbiór alfanumerycznych kodów opcyjnych x86. W końcu chcę podzbiór zawierać jak najmniej instrukcji, jak to możliwe, a jeśli istnieje wiele minimalnych podzbiorów, chcę to również wiedzieć. Podzbiór powinien być w stanie symulować dowolny program, który można zapisać za pomocą całego zestawu instrukcji alfanumerycznych. Instrukcje powinny obejmować tylko instrukcje, które odpowiadają znakom "A-Z", "a-z" i "0-9".Turing Kompletny alfanumeryczny zestaw instrukcji x86 (podzbiór)

tej pory myślę, że push, pop, inc, dec, cmp, a je wystarczyłoby, ale jestem pewien, że jest mniejszy zestaw. W jaki sposób mógłbym udowodnić, że wygenerowany przeze mnie zestaw jest w stanie symulować dowolny program przy użyciu wszystkich instrukcji alfanumerycznych? Jak udowodnić, że taki zestaw jest minimalny? Czy ktoś wie, czy taki podzbiór instrukcji istnieje?

+2

Możesz na pewno upuścić 'inc' lub' dec' z listy, nie musisz mieć obu. :) –

+1

Czy 'inc' i' dec' nie mogą być zastąpione przez jedno 'add'? – Nyerguds

+1

Tak jak powiedział Alexey, konieczne jest tylko jedno z 'inc' lub' dec', ponieważ w końcu wystąpi przepełnienie. – cytinus

Odpowiedz

0

To tylko JEDNA instrukcja! tutaj dowód

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

Dlaczego? Tylko dlatego, że "instrukcja" jest pojęciem zależnym od maszyny. Nie możesz zdefiniować małego zestawu instrukcji tylko dlatego, że nie ma takich instrukcji uniwersalnych/absolutnych/atomowych: wszystko zależy od podstawowego sprzętu: W rzeczywistości "prawdziwa" maszyna jest metaforyczną koncepcją (zbiorem zasad) nie fizyczną. maszyna

+0

Nie ma to nic wspólnego z moim pytaniem, które jest bardzo szczegółowe. – cytinus

+0

ale możesz pobrać instrukcje tam i podzielić na instrukcje x86. Na przykład SBNZ można uzyskać za pomocą 'sub' i' jne', 'SUBNEG' można emulować za pomocą' sub' i 'js' ... –

1

Nie jestem pewien, czy dostaję twoje pytanie, szczególnie część o "alfanumerycznym", ale chciałbym zaznaczyć, że dobrze wiadomo, że zarówno Turinga są kompletne, jak i mov i xor.