Co to jest asembler?

Co to jest asembler?

Glen Beck i Betty Snyder obsługujący ENIAC w Ballistic Research Laboratory.
Glen Beck i Betty Snyder obsługujący ENIAC w Ballistic Research Laboratory.

ENIAC był pierwszym elektronicznym komputerem ogólnego przeznaczenia. Zbudowano go na Uniwersytecie Pensylwanii i ukończono w 1945 roku. Snyder była jedną z sześciu kobiet, które programowały go ręcznie.

Zanim powstały maszyny takie jak ENIAC, słowo komputer oznaczało osobę, która wykonywała obliczenia ręcznie, a sześć kobiet, które programowały ENIAC, zostało zatrudnionych właśnie do tej pracy. Aby zaprogramować maszynę, przepinały jej połączenia: podłączały kable i ustawiały przełączniki za każdym razem, gdy problem się zmieniał. To przepinanie jest historycznym powodem istnienia języka asemblera. W ciągu kilku lat inżynierowie w Europie i Ameryce zaczęli zastępować przewody i ustawienia przełączników krótkimi zapisanymi kodami oznaczającymi instrukcje, dzięki czemu można było odczytać i zmienić program bez dotykania złącza.

Po pierwsze, CPU (jednostka centralna) to układ znajdujący się w centrum twojego komputera, który wykonuje jedno zadanie: realizuje długą listę małych poleceń zwanych instrukcjami, jedno po drugim, miliardy na sekundę. Każda instrukcja jest sama w sobie łatwa, na przykład dodanie dwóch liczb, przeniesienie wartości lub skok w inne miejsce.

Asembler to forma instrukcji wykonywanych przez CPU, którą człowiek może odczytać. Każda linia to (prawie) jedna instrukcja maszynowa. Nie ma pętli, obiektów ani łańcuchów znaków. Przenosisz liczby między rejestrami, małymi miejscami przechowywania wewnątrz procesora, a pamięcią.

Maurice Wilkes badający część EDSAC na Uniwersytecie w Cambridge.
Maurice Wilkes badający część EDSAC na Uniwersytecie w Cambridge.

EDSAC uruchamiał Initial Orders Davida Wheelera, jeden z pierwszych programów, które tłumaczyły zapisane instrukcje na kod maszynowy.

Każdy procesor potrzebuje programu, który odczytuje zapisane instrukcje i tworzy surowe bity wykonywane przez sprzęt: asemblera. Asembler na tej stronie jest przeznaczony dla jednego zestawu instrukcji.

Ten symulator używa RISC-V, nowoczesnego zestawu instrukcji stosowanego w prawdziwych układach i nauczanego na uniwersytetach. To, czego się tu nauczysz, ma bezpośrednie zastosowanie w sprzęcie.

Yunsup Lee trzymający wczesny prototypowy układ RISC-V w 2013 roku.
Yunsup Lee trzymający wczesny prototypowy układ RISC-V w 2013 roku.

RISC-V to otwarta architektura zestawu instrukcji. Każdy może zaimplementować jej opublikowaną specyfikację w sprzęcie, bez opłat i pozwoleń.

Każdy projekt zestawu instrukcji musi zdecydować, ile pracy wykonuje pojedyncza instrukcja. Układy CISC (Complex Instruction Set Computer), w tym architektura x86 obecna w większości komputerów stacjonarnych i laptopów, wkładają dużą ilość pracy w każdą instrukcję. Jedna instrukcja może odczytać wartość z pamięci, wykonać na niej działanie arytmetyczne i zapisać wynik z powrotem, wszystko w jednym kroku. RISC-V podąża za projektem argumentowanym przez Patterson & Ditzel, 1980: każda instrukcja wykonuje jedną prostą operację, a każde złożone zachowanie powstaje przez łączenie wielu takich instrukcji.

RISC oznacza Reduced Instruction Set Computer. Sprzęt jest zbudowany tak, aby z dużą szybkością wykonywać niewielką grupę prostych instrukcji. Złożone zachowanie powstaje przez łączenie tych prostych, szybkich kroków.

Asembler Kathleen Booth dla ARC (Booth, 1947) oraz Initial Orders Davida Wheelera dla EDSAC (Wilkes, Wheeler & Gill, 1951) należą do najwcześniejszych działających asemblerów, a historycy wciąż spierają się, który powstał pierwszy. RISC-V, zestaw instrukcji, na którym działa ten symulator, definiuje niewielką, otwartą listę instrukcji, którą każdy może zaimplementować (Asanović & Patterson, 2014). Każda lekcja od tego miejsca uczy bezpośrednio tego zestawu instrukcji.