argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: One Instruction Set Computer (OISC) - SUBLEQ  (Прочетена 737 пъти)

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
One Instruction Set Computer (OISC) - SUBLEQ
« -: 09.04.2010, 20:57:16 »

Какъв е минималният брой инструкции, които трябва да подържа един процесор, за да бъде той Turing complete?

Отговор: една инструкция! Само че специална!

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

Направи ми впечатление SUBLEQ OISC архитектурата, защото е лесна за схващане и сравнително лесна за програмиране дори на лист харитя (или в Notepad).

Самата SUBLEQ инструкция на пръв поглед изглежда сложна, но това е заблуждаващо. На практика не би могло да бъде по-лесно! А и командата, която изпълнява този процесор е само една.

SUBLEQ A, B, C

A, B и C са адреси в паметта. Взимаме стойността, записана в клетка B, от нея изваждаме стойността, записана в клетка A и крайният резултат го записваме в клетка B. Ако резултатът от операцията е положителен, продължаваме със следващата инструкция, в противен случай изпълнението продължава от клетка C.

Ако в момента изпълняваме инструкция и текущият указател на инструкциите сочи към клетка P, то SUBLEQ инструкцията добива следния вид:

SUBLEQ P, P+1, P+2

Примерът със събирането, който го има в линка по-горе е идеален за навлизане в материята. Ще дам малко по-подробно обяснение какво се случва.

SUBLEQ ADD (Y = X + Y)
SUBLEQ JMP (Z = Z - Z)

                                    X  Y  Z
MEMORY: 00 01 02 03 04 05 06 07 08 09 10 11 12
                                              
DATA:   09 11 03 11 10 06 11 11 12 04 05 00 ...other data & memory pointers


INITIAL DATA:

X = 4
Y = 5
Z = 0


SUBLEQ OPERATIONS:

SUBLEQ 09, 11, 03 : Z = Z - X =  0 -   4  = -4
SUBLEQ 11, 10, 06 : Y = Y - Z =  5 - (-4) =  9
SUBLEQ 11, 11, 12 : Z = Z - Z = -4 - (-4) =  0
SUBLEQ ...


FINAL DATA:

X = 4
Y = 9
Z = 0

Данните за изпълнението на програмата започват от клетка 00. Като първа операция получаваме:

SUBLEQ 09, 11, 03

A = 09, B = 11, C = 03

В превод на чист български език тази команда се превежда така: взимаме стойността, която се намира в клетка 11 и от нея изваждаме стойноста, която се намира в клетка 09. Резултатът записваме в клетка 11.

Малко по-подробно...

Взимаме стойността, записана в клетка B (0), от нея изваждаме стойността, записана в клетка A (4) и крайният резултат го записваме в клетка B (-4). Ако резултатът от операцията е положителен, продължаваме със следващата инструкция (пропускаме), в противен случай изпълнението продължава от клетка C (03).

Данните за следващата инструкция започват от клетка 03:

SUBLEQ 11, 10, 06

A = 11, B = 10, C = 06

Аритметичната операция, която получаваме е 5 - (-4) = 9. Този езултат се записва в клетка 10 и данните за следващата команда започват от клетка 06.

SUBLEQ 11, 11, 12

A = 11, B = 11, C = 12

Крайният резултат е, че нулираме съдържанието на клетка 11, каквато беше стойността първоначално. Тъй като резултатът от операцията е отрицателен, информацията за следващата команда започва от клетка 12.

---   ---   ---

Целта на подобни архитектури с една единствена команда е даде максимално опростена концепция за процесор, който може да се използва в Turing complete машини, което означава, че SUBLEQ процесорът може да прави всичко, което и един Intel Core i7 процесор например.
« Последна редакция: 09.04.2010, 21:11:48 от Иван Давидов »
Активен