Skip to content
Informatikk notater
GitHubLinkedIn

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;
}