Какво е набор от инструкции?

Всеки CPU е проектиран от самото начало да поддържа определен набор от инструкции. Наборът от инструкции е набор от твърдо кодирани операции, които процесорът може да изпълнява. Тези операции могат да бъдат например събиране на две числа заедно, преминаване към различна част от програмата или сравняване на две стойности. Всяка операция, която компютърът може да извърши, е уникално представена от код на операцията.

Операционни кодове

Когато изпълнява програма, процесорът използва програмен брояч, за да проследи коя инструкция трябва да бъде изпълнена следващата. Когато се извлече инструкция, програмният брояч се увеличава с дължината на инструкцията, така че да сочи към началото на следващата инструкция. Всяка инструкция се състои от код за операция. В зависимост от инструкцията, тя може или не може да включва операнди. Операндите могат да бъдат постоянна стойност или указател към местоположението на стойност в регистъра на процесора или в системната RAM.

След като бъде извлечена пълната инструкция, тя трябва да бъде декодирана. Това е процесът, при който процесорът разделя кода на операцията и всички операнди. Декодираният операционен код се използва за активиране или деактивиране на специфични електрически пътища в процесора, които ще доведат до правилна работа.

След като инструкцията бъде декодирана, тя ще бъде изпълнена. Точното поведение на процесора ще зависи от операцията. Операция за добавяне ще сумира две стойности заедно. Операция за прескачане ще изчисли къде в програмата да скочи. Операцията за сравнение ще сравни две стойности. Операция NOP ще остане неактивна, тъй като NOP означава Без операция.

След това повечето инструкции ще изведат резултата от операцията. Този изход може да отиде в регистрите на процесора и, ако е необходимо, в системната RAM. Завършването на всяка от тези операции отнема един такт.

Незаконни кодове за операции

Всяка CPU архитектура има свой специфичен списък с кодове за операции, публикуван от производителя. Стойностите на тези кодове за операции не са непременно еднакви за различни платформи, поради което софтуерът трябва да бъде компилиран за различни архитектури. В някои случаи производителят включва и недокументирани кодове за операции. Те се наричат ​​„незаконни кодове за операции“. Незаконните кодове за операции, макар и недокументирани, ще изпълняват една и съща функция всеки път, когато бъдат извикани. Като недокументирани и нестандартни функции обаче актуализациите на архитектурата на процесора могат просто да ги премахнат.

Някои ранни компютърни игри на Apple II разчитаха на специфични незаконни кодове за операции. След това те претърпяха проблеми с производителността и стабилността на по-късната ревизия на процесора на Apple IIc, тъй като IIc премахна незаконните кодове за операции, изисквани от игрите. Незаконните кодове за операции също бяха използвани в кръговете за защита на авторските права като метод за сигурност чрез неизвестност в борбата им срещу пиратите, които кракват тяхното съдържание. Някои незаконни кодове за операции са просто предназначени като инструменти за отстраняване на грешки и манипулатори на грешки.

Наборът от инструкции x86 съдържа голям брой недокументирани незаконни операционни кодове. Интересното е, че някои от тях се споделят между процесорите на Intel и AMD, което показва, че и двете компании са публично запознати с тяхната цел, докато не са документирани.

Компилатори и асемблиране

Повечето програми са написани на езици от високо ниво. Те са относително лесни за четене, често използват английски думи или стенограма, за да се минимизират кривите на учене. За да може компютърът да изпълни тези програми, те трябва да бъдат компилирани. Компилаторът е основно преводач. Той взема кода от високо ниво и го преобразува в компютърен код, инструкциите, които процесорът може да разбере.

На някои езици също е възможно да се изпълнява некомпилиран код чрез предварително компилирана програма, която генерира машинен код в движение. Асемблирането е език за програмиране на ниско ниво, който използва стенограма, за да позволи на разработчиците директна видимост и контрол върху извършваните операции. NOP е пример за стенограма на сглобяване.

Заключение

Наборът от инструкции е списък от официални функции, които една CPU архитектура може да изпълнява. Това е списък с операции, които могат да бъдат извършени. Тези операции са твърдо кодирани в процесора и се извикват с помощта на съответните им кодове за операции.

Софтуерът обикновено използва компилатор за превод от четим от човека код на високо ниво в машинния код, който процесорът може да прочете. Понякога архитектурата на CPU може да има недокументирани кодове за операции, наречени незаконни кодове за операции. Незаконните кодове за операции технически са част от набора от инструкции. Те обаче може да не са надеждно налични в бъдещи итерации на платформата. Не забравяйте да оставите вашите мисли в коментарите по-долу.