Instruksjonssett
Skal handle om kalkulering
(C-kode) -> [Kompilator] -> (Assembly) -> [Assembler] -> (Binærdata)
Intel x86, ARM,
dialekter av assembler? ^
Assembly er så nært maskinkode vi kommer før det blir uleselig for mennesker
Hva betyr “binærdata”?
2 verdier
Hvorfor ikke bruke kondensator for å representere enda flere verdier?
- Veldig ustabilt
- Mye støy
Minne == gigantisk nettverk av brytere som er av eller på
Instruksjonssettarkitektur
Hvordan vet kompilatoren hvilke instruksjoner den skal spytte ut?
InstruksjonsSettArkitekturen (ISA) En gigantisk manual/ordbok kompilatoren bruker til å oversette fra C til Assembly(?)
ISA er:
- En kontrakt på hvordan du skal legge opp programmet ditt i minnet, og hva de ulike bitsa og bytsa tyder
- Et ord er en samling med bits
Ting å avklare i kontrakten
- Hvilke registere finnes?
- Hvilke instruksjoner finnes?
- Hva skjer om du prøver å gjøre noe ulovlig?
Typiske instruksjoner
- Aritmetiske operasjoner (add)
- Dataflytting (mov/load)
- Programflyt (jmp/goto)
1096 sider med ISA kontrakter i RISC-V instruksjonsmanualen
Simulering
- Instruksjonsminne
- Dataminne
Crossover til mikroarkitektur
Samlebåndsarkitektur
Etc
int main(void)
{
int a = 0;
for (int i = 0; i < 0; ++i)
{
++a;
}
return a;
}