CPU förstår inte kommandon på det sätt som en människa förstår ord. Istället förstår det
maskinkod , som är en sekvens av binära siffror (0s och 1s). Dessa binära sekvenser representerar instruktioner om att CPU:s kretsar är utformade för att utföra. Dessa instruktioner är mycket grundläggande och involverar vanligtvis operationer som:
* aritmetiska och logiska operationer: Lägga till, subtrahera, multiplicera, dela, andning, oring, xoring, jämföra värden.
* Data Movement: Ladda data från minnet till register, lagra data från register till minne, flytta data mellan register.
* Kontrollflöde: Förgrening (hoppning) till olika delar av programmet baserat på förhållanden, looping (upprepar instruktioner), ringer subroutiner (funktioner).
* Input/Output (I/O): Kommunicera med kringutrustning som hårddisk, tangentbord, display, etc.
Dessa grundläggande instruktioner benämns kollektivt instruktionsuppsättningsarkitekturen (ISA) av CPU. Olika CPU-arkitekturer (som x86, ARM, RISC-V) har olika ISA:er, vilket innebär att de har olika uppsättningar av maskinkodinstruktioner.
Det är viktigt att notera:
* Monteringsspråk: Programmerare skriver sällan direkt i maskinkod. Istället använder de monteringsspråk, som är en mänsklig läsbar representation av maskinkod. En montering översätter sedan monteringskod till maskinkod.
* Språk på högre nivå: De flesta programmering görs på språk på högre nivå (som C ++, Java, Python) som ytterligare abstraheras från maskinkoden. Kompilatorer eller tolkar översätter dessa språk på hög nivå till maskinkod som CPU kan köra.
Så även om CPU endast "förstår" binära maskinkodinstruktioner, involverar processen för att skapa och genomföra program flera lager av abstraktion för att göra programmering mer hanterbar för människor.