Avatar billede trp79 Nybegynder
21. januar 2006 - 09:40 Der er 6 kommentarer og
2 løsninger

Microcode, bytecode osv.

Hejsa
Jeg er lidt i tvivl om det forskellige kodelag, der bliver brugt.

Altså når man kompiler sig klasse, så får man bytecode. Hvor sker der så derfra og til vi havner i nuller og et-taller? Bevirker JVM'en så, at der ud fra bytecode instrukserne, at der afvikles microcode eller? og er er microcode assembler code?

Jeg er lidt rundt på gulvet, så jeg håber nogen kan skildre de forskellige lag for mig(helt ned til afviklingen på CPU'en), og evt komme med eksempler på, hvordan de ser ud...

På forhånd tak, mvh
Torben
Avatar billede soreno Praktikant
21. januar 2006 - 09:50 #1
Java kode kompileres til bytecode.
Bytecode er den kode som Java Virtual Machine forstår og kan eksekvere.
Bytecode kan betragtes som assemblerkode. Blot er bytecode baseret på en stakbaseret maskine, modsat x86 som er en registerbaseret maskine.

Når JVM under Windows eksekvere bytecode så oversætter JVM'en bytecoden til kode som kan køre under Windows (tilsvarende en JVM over andre Operativ Systemer).

Der er i princippet ikke noget i vejen for at konstruere en CPU som kan eksekvere bytecode direkte.

"Structured Computer Organization" af Tannenbaum giver det store overblik.. :-)
Avatar billede soreno Praktikant
21. januar 2006 - 09:53 #2
Tannenbaum har defineret en arkitektur der hedder MIC som er mikrokode niveauet for en maskine der kan afvikle (et subset af) bytecode.

Kig evt. lidt på
http://www.daimi.au.dk/dMasArk/materiale/noter/dmasark-7-mic1/dmasark-7-mic1.html
http://www.daimi.au.dk/dMasArk/materiale/noter/dmasark-2-ijvm/dmasark-2-ijvm.html
Avatar billede jakoba Nybegynder
21. januar 2006 - 10:15 #3
microcode er et helt andet emne. og ret irrelevant mutildags.
I ældre CPU chips var de instruktioner chippen kunne udføre ret complexe som fx
  ADD A, B, C  ; adder A til B og læg resultatet i C
for at udføre sådan nogen komplexe instruktioner brugte man microcode instruktioner der kører mange gange hurtigere og var ekstremt simple
fx:
    hent A
    læg B til
    gem i C
men så fandt folk ud af at man kinne lave programmerne meget hurtigere ved at kompilere direkte til microcode (hvis nu C skulle bruges in næste instruktion var det spild af tid at gemme den) det blev til RISK CPU'erne som er noget nær det eneste der bruges idag. Der er stadig et par instruktioner der er for komplicerede til at udføre i eet hug (fx kald subroutine og gem returpunkt på stakken) så del i RISC maskiner er der ofte lidt microkode, men det er ikke meget.

så:
Bytekode  er et niveau OVER CPUens naturlige instruktionssæt
microkode er et nuveau UNDER CPUens naturlige instruktionssæt
Avatar billede soreno Praktikant
21. januar 2006 - 12:38 #4
jakoba:
Hvad er "CPUens naturlige instruktionssæt" ?
Gerne eksemplificeret til x86.
Avatar billede jakoba Nybegynder
21. januar 2006 - 14:02 #5
Det instruktionssæt producenten fortæller den CPU chip har.
http://www.penguin.cz/~literakl/intel/intel.html
http://koti.mbnet.fi/~atjs/mc6809/Information/6809.htm

mvh JakobA
Avatar billede trp79 Nybegynder
24. januar 2006 - 11:34 #6
Det var da dejligt brugbart :)
Microcode er så aktuelt i mit tilfælde - det var så ikke til at vide for jer. Men det er i forbindelse med afvikling af kode på et JOP-board (http://www.jopdesign.com). JOP står for java optimized processor, og der er altså en lille JVM på et sådant board.

Er i ikke begge venlige og smide et svar, så er der lidt point til jer.
Mange tak for hjælpen
Avatar billede soreno Praktikant
24. januar 2006 - 11:59 #7
ok.
Avatar billede jakoba Nybegynder
24. januar 2006 - 12:10 #8
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester