skok na adresu
Jasmin Syntax
goto <label>
<label> je identifikátor návestia. Definuje miesto označenia, použí <návestie> meno dvojbodka :
<label>:
<label> Teraz nastane
a asociácia adresy s nasledujćou inštrukciou. Návestia môžu mať len pridelené jedno miesto v metóde. Na
druhej strane, jednoduché <návestie> môže byť cieľom mnohonásobných
inštrukcií skoku.
Zásobník
Pred |
Po |
... |
... |
Popis
Spôsobuje skok inštrukcií na adresu (pc + branchofset), kde pc
je adresa skoku goto v bajtkóde a branchofset je 16-bit číslo
so znamienkom parameter po ktorom hneď
následuje skok v bajtkóde. V Jasmine Branchoffset sa vypočíta použitím
adresy združenej s návestím.
Príklad
; while (true) { i++; }
Label:
incr 1 1 ; Inkrementuje lokálnu premennú 1 jednotkou
goto Label ; skočí späť na návestie (Label)
Bajtkód
Typ |
Popis |
u1 |
Goto opcode = 0xA7 (167) |
s2 |
branchoffset |
Tiež
pozri:
goto_w, jsr, jsr_w
Poznámky
Adresy sú merané v bajtoch zo začiatku bajtového kódu - t.j . adrese 0 prislúchajú prvé bajty bajtového kódu aktuálne vykonávanej
metódy. Maximálna adresa v metóde
je 65535.