De CPU begrijpt opdrachten niet zoals een mens woorden begrijpt. In plaats daarvan begrijpt het machinecode , wat een reeks binaire cijfers is (0s en 1s). Deze binaire reeksen vertegenwoordigen instructies waarvoor de circuits van de CPU zijn ontworpen om uit te voeren. Deze instructies zijn erg eenvoudig en omvatten meestal handelingen zoals:
* Rekenkundige en logische bewerkingen: Optellen, aftrekken, vermenigvuldigen, delen, AND-en, OR-en, XOR-en, waarden vergelijken.
* Gegevensverplaatsing: Gegevens uit het geheugen in registers laden, gegevens uit registers in het geheugen opslaan, gegevens tussen registers verplaatsen.
* Controlestroom: Vertakken (springen) naar verschillende delen van het programma op basis van voorwaarden, looping (herhalen van instructies), oproepen van subroutines (functies).
* Invoer/uitvoer (I/O): Communiceren met randapparatuur zoals de harde schijf, toetsenbord, beeldscherm, enz.
Deze basisinstructies worden gezamenlijk de instructiesetarchitectuur (ISA) genoemd van de CPU. Verschillende CPU-architecturen (zoals x86, ARM, RISC-V) hebben verschillende ISA's, wat betekent dat ze verschillende sets machinecode-instructies hebben.
Het is belangrijk op te merken:
* Assemblagetaal: Programmeurs schrijven zelden rechtstreeks in machinecode. In plaats daarvan gebruiken ze assembleertaal, een door mensen leesbare weergave van machinecode. Een assembler vertaalt vervolgens de assemblagecode naar machinecode.
* Talen op een hoger niveau: Het meeste programmeren gebeurt in talen van een hoger niveau (zoals C++, Java, Python) die verder zijn geabstraheerd van de machinecode. Compilers of tolken vertalen deze talen op hoog niveau naar machinecode die de CPU kan uitvoeren.
Dus terwijl de CPU alleen binaire machinecode-instructies "begrijpt", omvat het proces van het maken en uitvoeren van programma's meerdere abstractielagen om het programmeren voor mensen beter beheersbaar te maken. |