Existem muitas maneiras de implementar algo em que se pode implementar uma máquina de turing.
Enquanto você olha para os processadores, o mais aplicável é provavelmente o modelo da máquina de registro . O mais simples deles (em termos de símbolos) é o símbolo mulit-tape two ( mark
e blank
). Se você ir para algo não tão esotérico, a inc(r)
, dec(r)
e jz(r,z)
(salto se o registrador r
é zero a instrução z
) ou a clr(r)
(claro r
), inc
, je(i,j,z)
(salto se registar i e j são iguais a instrução z).
Eu já vi menção de uma máquina de registro que é:
- inc (i, m) - incremente o registro ie vá para a linha m
- jzdec (i, m1, m2) - se o registro i for 0, vá para a linha m, então diminua i e vá para a linha m2
que também está completo - é uma máquina de registro Minsky, embora tenha outras restrições nos dados da fita (deve ser um número de Gödel que armazena o estado em vez de registros individuais)
É isso aí. Nada mais.
Então, por que esses processadores ultra-risc não são usados? É realmente difícil escrever um compilador para eles e você desiste de muitas outras coisas que o processador pode fazer. É realmente bom ter um pouco de detalhes and
, e um add
pouco do que tentar fazer tudo com incrementos de registros e loop. Essa é a base de uma linguagem de programação favorita, chamada Brainfuck, que possui 8 instruções.
>
incrementar o ponteiro de dados
<
diminuir o ponteiro de dados
+
incrementar os dados no ponteiro de dados
-
diminuir os dados no ponteiro de dados
.
emitir os dados no ponteiro de dados
,
entrada de leitura, armazenando os dados no ponteiro de dados
[
se os dados no ponteiro forem zero, em vez de mover o ponteiro de instrução para frente, pule-o para o comando após o ]
comando correspondente
]
se os dados no ponteiro forem diferentes de zero, em vez de avançar o ponteiro de instruções, volte para o comando após o ]
comando correspondente
Pode-se encontrar compiladores para o Brainfuck, embora não seja realmente divertido fazer coisas simples nele. A menos que você goste da frustração, que é o objetivo do idioma.
Leitura relacionada: