Машинен език

Машинен код е компютърна програма, написана на машинен език. Той използва набора от инструкции на определена компютърна архитектура. Обикновено се записва в двоичен код. Машинният код е най-ниското ниво на софтуера. Другите езици за програмиране се превеждат на машинен код, за да може компютърът да ги изпълнява.

Инструкцията указва на процеса каква операция да извърши. Всяка инструкция се състои от опкод (код на операцията) и операнд(и). Операндите обикновено са адреси на паметта или данни. Наборът от инструкции е списък на наличните за компютъра оперативни кодове. Машинният код е този, в който се компилират или интерпретират асемблерният код и други езици за програмиране.

Създателите на програми превръщат кода в друг език или машинен код. Машинният код понякога се нарича роден код. Това се използва, когато говорим за неща, които работят само на някои компютри.

Записване на машинен код

Машинният код може да бъде записан под различни форми:

  • Използване на няколко превключвателя. Така се генерира последователност от 1 и 0. Това е използвано в ранните дни на компютрите. От 70-те години на миналия век вече не се използва.
  • Използване на шестнайсетиченредактор. Това позволява използването на опкодове вместо номера на командата.
  • Използване на асемблер. Асемблерните езици са по-прости от операционните кодове. Техният синтаксис е по-лесен за разбиране от машинния език, но по-труден от езиците от високо ниво. Асемблерът сам ще преведе изходния код в машинен код.
  • Използването на език за програмиране от високо ниво позволява на програмите да използват код, който е по-лесен за четене и писане. Тези програми се превеждат в машинен код. Преводът може да се извърши на много етапи. Програмите на Java първо се оптимизират в байткод. След това се превеждат на машинен език, когато се използват.
Преден панел на ранен миникомпютър с превключватели за въвеждане на машинен кодZoom
Преден панел на ранен миникомпютър с превключватели за въвеждане на машинен код

Типични инструкции на машинния код

В един набор от инструкции обикновено се намират много видове инструкции:

  • Аритметични операции: Събиране, изваждане, умножение, деление.
  • Логически операции: Конюнкция, дизюнкция, отрицание.
  • Операции, действащи върху единични битове: Преместване на битовете наляво или надясно.
  • Операции, действащи върху паметта: копиране на стойност от един регистър в друг.
  • Операции за сравняване на две стойности: по-голямо от, по-малко от, равно.
  • Операции, които комбинират други операции: събиране, сравняване и копиране, ако са равни на някаква стойност (като една операция), прескачане до някаква точка в програмата, ако регистърът е нула.
  • Операции, които действат върху потока на програмата: прескачане на някакъв адрес.
  • Операции за преобразуване на типове данни: напр. преобразуване на 32-битово цяло число в 64-битово цяло число, преобразуване на стойност с плаваща запетая в цяло число (чрез съкращаване).

Много съвременни процесори използват микрокод за някои от командите. По-сложните команди обикновено го използват. Това често се прави при CISC архитектурите.

Инструкции

Всеки процесор или фамилия процесори има собствен набор от инструкции. Инструкциите са модели от битове, които съответстват на различни команди, които могат да бъдат подадени на машината. По този начин наборът от инструкции е специфичен за даден клас процесори, използващи (предимно) една и съща архитектура.

По-новите модели процесори често включват всички инструкции на предшественика си и могат да добавят допълнителни инструкции. Понякога по-новият дизайн прекратява или променя значението на даден код на инструкция (обикновено защото той е необходим за нови цели), което засяга съвместимостта на кода; дори почти напълно съвместими процесори могат да показват малко по-различно поведение за някои инструкции, но това рядко е проблем.

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

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

Проектите на процесори могат да се различават и по други начини. Различните инструкции могат да имат различна дължина. Също така те могат да имат еднаква дължина. Ако всички инструкции имат еднаква дължина, това може да опрости дизайна.

Пример

Архитектурата MIPS има инструкции с дължина 32 бита. Този раздел съдържа примери за код. Общият тип на инструкцията е в полето op (операция). Това са най-горните 6 бита. Инструкциите от тип J (скок) и I (незабавно действие) са изцяло дадени от op. Инструкциите от тип R (регистър) включват полето funct. То определя точната операция на кода. Полетата, използвани в тези типове, са:

      6 5 5 5 5 6 бита [ op | rs | rt | rd |shamt| funct] R-тип [ op | rs | rt | address/immediate] I-тип [ op | target address ] J-тип

rs, rt и rd показват операндите на регистъра. shamt дава стойността на преместването. Полетата address или immediate съдържат директно операнд.

Пример: добавете регистрите 1 и 2. Поставете резултата в регистър 6. Той е кодиран:

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 десетично 000000 00001 00010 00110 00000 100000 двоично

Зареждане на стойност в регистър 8. Вземете я от клетката на паметта 68 клетки след мястото, посочено в регистър 3:

[ op | rs | rt | address/immediate] 35 3 8 68 десетично 100011 00011 01000 00000 00001 000100 двоично

Преминаване към адреса 1024:

[ op | target address ] 2 1024 decimal 000010 00000 00000 00000 10000 000000 binary

Свързани страници

  • Двоична бройна система
  • Квантови компютри
  • Набор от инструкции
  • Компютър с намален набор инструкции

Въпроси и отговори

В: Какво е машинен код?


О: Машинният код е компютърна програма, написана на машинен език, използваща набора от инструкции на конкретна компютърна архитектура и обикновено се записва в двоичен вид.

В: Кое е най-ниското ниво на софтуера?


О: Машинният код е най-ниското ниво на софтуера.

В: Как се изпълняват други езици за програмиране от компютрите?


О: Другите езици за програмиране се превеждат в машинен код, който компютърът може да изпълнява.

В: От какво се състои една инструкция в машинния код?


О: Инструкцията в машинния код се състои от опкод (код на операцията) и операнд(и). Операндите обикновено са адреси на паметта или данни.

В: Какво представлява наборът от инструкции?


О: Наборът от инструкции е списък на операционните кодове, достъпни за компютъра.

В: Какво правят създателите на програми с кода?


О: Създателите на програми превръщат кода в друг език или машинен код.

В: Какво е другото име на машинния код?


О.: Машинният код понякога се нарича "native code" (роден код) и се използва, когато говорим за неща, които работят само на някои компютри.

AlegsaOnline.com - 2020 / 2023 - License CC3