Layout

SynopsSynopsis
TidsenheterTime units
Stabel førstack before
Stabel etterstack after
ForklaringNorwegian description
DescriptionEnglish description

Instruksjonssettet i Batu Virtual Machine

Instructions for Batu Virtual Machine

putstatic
Synopsputstatic indeks
Tidsenheter40
Stabel før..., verdi
Stabel etter...
Forklaring Lagrer en verdi eller en tabell-referanse fra toppen av stabelen til en global variabel.
Description Pops a value or an array reference from the top of the stack and stores it in a global variable.
getstatic
Synopsgetstatic indeks
Tidsenheter24
Stabel før...
Stabel etter..., verdi
Forklaring Henter en verdi eller en tabell-referanse fra en global variabel og dytter den på toppen av stabelen.
Description Retrieves a value or an array reference from a global variable and pushes it onto the stack.
iload
Synopsiload indeks
Tidsenheter16
Stabel før...
Stabel etter..., verdi
ForklaringHenter et heltall fra en lokal variabel og dytter det på toppen av stabelen.
Description Takes one integer from a local variable and pushes it on the stack.
aload
Synopsaload indeks
Tidsenheter16
Stabel før...
Stabel etter..., referanse
ForklaringHenter en referanse til en tabell fra en lokal variabel og dytter den på toppen av stabelen.
Description Takes a referance to an array from a local variable and pushes it on the stack.
iaload
Synopsiaload
Tidsenheter18
Stabel før..., referanseindeks
Stabel etter..., verdi
ForklaringAdresserer et element i en tabell hvis referanse er gitt, og dytter verdien for dette elementet på stabelen.
Description Addresses an element in an array whose reference is given, and pushes the value of this element on the stack.
newarray
Synopsnewarray
Tidsenheter64
Stabel før..., størrelse
Stabel etter..., referanse
ForklaringSetter til side dynamisk minne for en tabell, og gir tilbake referansen til denne tabellen.
Description Reserves dynamic memory for an array and returns a reference to this array.
istore
Synopsistore indeks
Tidsenheter32
Stabel før..., verdi
Stabel etter...
ForklaringLagrer en verdi fra toppen av stabelen til en lokal variabel.
Description Stores a value popped from the stack in a local variable.
astore
Synopsastore indeks
Tidsenheter32
Stabel før..., referanse
Stabel etter...
ForklaringLagrer en referanse til en tabell fra toppen av stabelen til en lokal variabel.
Description Stores a reference to an array popped from the stack in a local variable.
iastore
Synopsiastore
Tidsenheter36
Stabel før..., referanseindeksverdi
Stabel etter...
ForklaringAdresserer et element i en tabell hvis referanse er gitt, og lagrer en verdi fra stabelen til dette elementet.
Description Addresses an element in an array whose reference is given, and stores a value popped from the stack in this element.
ldc_w
Synopsldc_w verdi
Tidsenheter4
Stabel før...
Stabel etter..., verdi
ForklaringDytter en konstant på stabelen.
Description Pushes a constant on the stack.
nop
Synopsnop
Tidsenheter1
Stabel før...
Stabel etter...
ForklaringGjør ingenting.
Description Does nothing.
pop
Synopspop
Tidsenheter1
Stabel før..., verdi
Stabel etter...
ForklaringFjerner et heltall eller en tabell-referanse fra stabelen.
Description Removes an integer or an array reference from the stack.
dup
Synopsdup
Tidsenheter1
Stabel før..., verdi
Stabel etter..., verdiverdi
ForklaringKopierer et heltall eller en tabell-referanse på stabelen.
Description Copies an integer or an array reference on the stack.
dup_x1
Synopsdup_x1
Tidsenheter3
Stabel før..., verdi 1verdi 2
Stabel etter..., verdi 2verdi 1verdi 2
ForklaringKopierer et heltall eller en tabell-referanse fra stabelen, og legger det to plasser ned.
Description Copies an integer or an array reference and puts it two elements down in the stack.
dup_x2
Synopsdup_x2
Tidsenheter5
Stabel før..., verdi 1verdi 2verdi 3
Stabel etter..., verdi 3verdi 1verdi 2verdi 3
ForklaringKopierer et heltall eller en tabell-referanse fra stabelen, og legger det tre plasser ned.
Description Copies an integer or an array reference and puts it three elements down in the stack.
swap
Synopsswap
Tidsenheter1
Stabel før..., xy
Stabel etter..., yx
ForklaringBytter to objekter på stabelen. Disse trenger ikke være av samme type.
Description Swaps the top two elements in the stack (need not be of the same type).
iconst_0
Synopsiconst_0
Tidsenheter1
Stabel før...
Stabel etter..., 0
ForklaringDytter verdien 0 på stabelen. Merk at tallverdien 0 kan brukes for å representere den logiske verdien usann.
Description Pushes the value 0 on the stack. (The number 0 is also used to represent a logical false.)
iconst_1
Synopsiconst_0
Tidsenheter1
Stabel før...
Stabel etter..., 1
ForklaringDytter verdien 1 på stabelen. Merk at tallverdien 1 kan brukes for å representere den logiske verdien sann.
Description Pushes the value 1 on the stack. (The number 1 is also used to represent a logical true.)
iadd
Synopsiadd
Tidsenheter2
Stabel før..., xy
Stabel etter..., x+y
ForklaringErstatter to heltall fra stabelen med summen mellom dem.
Description Pops two elements and pushes their sum.
isub
Synopsisub
Tidsenheter2
Stabel før..., xy
Stabel etter..., x-y
ForklaringErstatter to heltall fra stabelen med differansen mellom dem.
Description Pops two elements and pushes their difference.
imul
Synopsimul
Tidsenheter8
Stabel før..., xy
Stabel etter..., x*y
ForklaringErstatter to heltall fra stabelen med produktet mellom dem.
Description Pops two elements and pushes their product.
idiv
Synopsidiv
Tidsenheter16
Stabel før..., xy
Stabel etter..., x/y
ForklaringErstatter to heltall fra stabelen med forholdet mellom dem.
Description Pops two elements and pushes their quotient.
ineg
Synopsineg
Tidsenheter2
Stabel før..., verdi
Stabel etter..., -verdi
ForklaringSnur fortegnet på et heltall fra stabelen.
Description Inverts the sign of an integer on the stack.
iand
Synopsiand
Tidsenheter1
Stabel før..., xy
Stabel etter..., x&y
ForklaringForetar logisk-OG mellom to heltall på stabelen.
Description Pops two elements and pushes their logical AND.
ior
Synopsior
Tidsenheter1
Stabel før..., xy
Stabel etter..., x|y
ForklaringForetar logisk-ELLER mellom to heltall på stabelen.
Description Pops two elements and pushes their logical OR.
ixor
Synopsixor
Tidsenheter1
Stabel før..., xy
Stabel etter..., x^y
ForklaringForetar logisk-EKSKLUSIV ELLER mellom to heltall på stabelen. Merk at eksklusiv-eller kan brukes for å invertere logiske verdier.
Description Pops two elements and pushes their logical XOR. (May be used to invert logical values.)
goto
Synopsgoto antall
Tidsenheter16
Stabel før...
Stabel etter...
ForklaringHopper ubetinget et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt).
Description Jumps the given number of instructions forward (or backwards if the number is negative.)
ifeq
Synopsifeq antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er lik null.
Description Pops an integer from the stack, and if this is zero, then jumps the given number of instructions forward (or backwards if the number is negative).
ifne
Synopsifne antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er ulik null.
Description Pops an integer from the stack, and if this is non-zero, then jumps the given number of instructions forward (or backwards if the number is negative).
iflt
Synopsiflt antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er strengt mindre enn null.
Description Pops an integer from the stack, and if this is strictly negative, then jumps the given number of instructions forward (or backwards if the number is negative).
ifle
Synopsifle antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er mindre enn eller lik null.
Description Pops an integer from the stack, and if this is less than or equal to zero, then jumps the given number of instructions forward (or backwards if the number is negative).
ifgt
Synopsifgt antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er strengt større enn null.
Description Pops an integer from the stack, and if this is strictly positive, then jumps the given number of instructions forward (or backwards if the number is negative).
ifge
Synopsifge antall
Tidsenheter20
Stabel før..., verdi
Stabel etter...
ForklaringHopper et antall instruksjoner fremover (eller bakover hvis et negativt antall er gitt) hvis heltallet fra stabelen er større enn eller lik null.
Description Pops an integer from the stack, and if this is greater than or equal to zero, then jumps the given number of instructions forward (or backwards if the number is negative).
invokestatic
Synopsinvokestatic sammenfoldet navn
Tidsenheter28
Stabel før..., arg1arg2,...,argx
Stabel etter
Forklaring Lager en ny ramme hvor et forventet antall argumenter er hentet fra den gamle stabelen og lagt i nye lokale variabler og den nye stabelen er tom. Kontrollen overføres til funksjonen hvis sammenfoldete navn er gitt. Det sammenfoldete navnet må indikere den reelle typen til funksjonen, ikke slik som den er angitt i kildekoden. Det vil si at man må oversette signaturen for flerdimensjonale tabeller som er flatet ut.
Description Creates a new frame where the expected number of arguments is collected from the old stack and put in new local variable. The new stack is empty. Control is transferred to the function whose mangled name is given. The mangled name must indicate the real type of the function, not as it is given in the source code. This implies that one has to translate the signature for multi-dimensional arrays which are flattened.
ireturn
areturn
return
Synopsireturn
Tidsenheter28
Stabel førreturverdi
Stabel etter..., returverdi
Forklaring Gjenoppretter forrige ramme fra før funksjonskallet og overfører returverdien fra den nye rammen til den gamle (hvor den erstatter funksjonsargumentene). Kontrollen tilbakeføres til instruksjonen etter funksjonskallet. Bruk ireturn for å returnera heltall, areturn for tabellreferansar, og return for å returnera ein verdi (void); sistnemnde korkje dyttar eller poppar verdiar på stablane.
Description Recovers the previous frame from before the function call and transfers the return value from the new frame to the old one, where it replaces the function arguments. Control is transferred to the instruction after the function call. Use ireturn for returning integers, areturn for array references, and return for void. In the latter case, no value is popped nor pushed on either stack.
print
Synopsprint
Tidsenheter0
Stabel før..., verdi
Stabel etter...
ForklaringSkriver heltallet fra stabelen ut på ekstern enhet.
Description Pops an integer from the stack and prints it on an external unit.
read
Synopsread
Tidsenheter0
Stabel før...
Stabel etter..., verdi
ForklaringLeser et heltall fra ekstern enhet og dytter på stabelen.
Description Reads an integer from an external unit and pushes it on the stack.

print og read er systemkall. Disse tar ingen tid i brukermodus. I tillegg har de bieffekter. Derfor kan de ikke optimeres bort.

The instructions print and read are system calls. They don't take any time in user mode, and they have secondary effects. Hence they cannot be optimised away.

Direktivene i Batu Virtual Machine

Directives in Batu Virtual Machine

function
Synops.function sammenfoldet navn
Gyldighetglobalt
Forklaring Deklarerer startpunkt for en funksjon til å være på første instruksjon etter dette punktet.
Description Declares the start of a function declaration.
locals
Synops.locals antall variabler
Gyldighetlokalt
ForklaringSpesifiserer hvor mange lokale variabler den gjeldende funksjonen har. Lokale variabler er synlig bare innen funksjonen de er deklarert. Disse inkluderer også parametre funksjonen tar.
Description Declares the number of local variables required by the function.
stack
Synops.stack maksimal stabeldybde
Gyldighetlokalt
Forklaring Spesifiserer hvor stor stabel den gjeldende funksjonen trenger under kjøring.
Description Declares the required stack size for this function.
globals
Synops.globals antall variabler
Gyldighetglobalt
Forklaring Spesifiserer hvor mange globale variabler programmet som helhet har rådighet over. Globale variabler er synlig i alle funksjoner.
Description Declares the number of global variables required by the program.