Llamada a un método. Llamada a métodos en Mic-1. Llamada a un método. Paso de parámetros. Instrucciones InvokeVirtual e ireturn

10  Download (0)

Full text

(1)

Llamada a métodos

en Mic-1

Instrucciones

InvokeVirtual

e

iReturn

1

Llamada a un método

public class demo {

public void main() { int p1, p2; ... p2 = 10; p1 = func(5, 3, p2); ... }

public int func(int x, int y, int z) { int a, b; b = x + y; ... return a; } } .constant OBJREF 0x00 .end-constant .main .var p1 p2 .end-var ... BIPUSH 10 ISTORE p2 // p2 = 10 LDC_W OBJREF BIPUSH 5 BIPUSH 3 ILOAD p2 INVOKEVIRTUAL func ISTORE p1 ... end: HALT .end-main .method func(x, y, z) .var a b .end-var ILOAD x ILOAD y IADD ISTORE b ... ILOAD a IRETURN .end-method 2

Llamada a un método

La dirección de comienzo del método se guarda en la

reserva de constantes.

El código de operación de InvokeVirtual es seguido por un

índice de 2 bytes que apunta a la reserva de constantes.

Los cuatro primeros bytes del método contienen dos

números de 2 bytes que indican la cantidad de

parámetros que espera el método y el número de

variables locales que éste emplea.

Inicio: MSB # de param. LSB # de param. MSB # de v. loc. MSB # de v. loc. Op. Code 3

Paso de parámetros

4

(2)

InvokeVirtual 1

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP LV MBR 0xB6 H 5 PC 0xB6 desp1 desp2 0x36

InvokeVirtual 2

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP MBR desp1 H LV 6 PC 0xB6 desp1 desp2 0x36

InvokeVirtual 3

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR desp2 H desp1<<8 LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 0xB6 desp1 desp2 0x36 PC

InvokeVirtual 4

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR desp2 H indice LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 0xB6 desp1 desp2 0x36 PC

(3)

InvokeVirtual 5

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR desp2 LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 9 0xB6 desp1 desp2 0x36 PC

InvokeVirtual 6

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR desp2 MDR inicio LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 10 OPC 0xB6 desp1 desp2 0x36

InvokeVirtual 7

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR desp2 PC inicio LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 11

npar1 npar2 nvar1 nvar2

PC

InvokeVirtual 8

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR npar1 LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 12

npar1 npar2 nvar1 nvar2

(4)

InvokeVirtual 9

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR npar2 H npar1<<8 LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 13

npar1 npar2 nvar1 nvar2

PC

InvokeVirtual 10

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR npar2 H num. par. LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 14

npar1 npar2 nvar1 nvar2

PC

InvokeVirtual 11

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR npar2 H num. par. LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

npar1 npar2 nvar1 nvar2

PC

InvokeVirtual 12

invokevirtual1 PC = PC + 1; fetch invokevirtual2 H = MBRU << 8 invokevirtual3 H = MBRU OR H invokevirtual4 MAR = CPP + H; rd invokevirtual5 OPC = PC + 1 invokevirtual6 PC = MDR; fetch invokevirtual7 PC = PC + 1; fetch invokevirtual8 H = MBRU << 8 invokevirtual9 H = MBRU OR H invokevirtual10 PC = PC + 1; fetch invokevirtual11 TOS = SP - H

invokevirtual12 TOS = MAR = TOS + 1

SP MBR nvar1 H num. par. LV Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

npar1 npar2 nvar1 nvar2

PC

(5)

InvokeVirtual 13

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP LV MBR nvar1 Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 17

npar1 npar2 nvar1 nvar2

PC

TOS

InvokeVirtual 14

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar1 Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 18

npar1 npar2 nvar1 nvar2

PC

TOS

LV

InvokeVirtual 15

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 H nvar1<<8 Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 19

npar1 npar2 nvar1 nvar2

PC

TOS

LV

InvokeVirtual 16

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 H num. var. Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 20

npar1 npar2 nvar1 nvar2

PC

MAR

(6)

InvokeVirtual 17

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 OBJREF LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 21

npar1 npar2 nvar1 nvar2

PC MDR

MAR

LV

InvokeVirtual 18

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 OPC viejo PC Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 22

npar1 npar2 nvar1 nvar2

PC

LV TOS

InvokeVirtual 19

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

npar1 npar2 nvar1 nvar2

PC

LV TOS

InvokeVirtual 20

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

npar1 npar2 nvar1 nvar2

PC

LV TOS

(7)

InvokeVirtual 21

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

SP MBR nvar2 PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 25

npar1 npar2 nvar1 nvar2

PC

LV TOS

InvokeVirtual 22

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP MBR nvar2 26

npar1 npar2 nvar1 nvar2

PC

LV TOS

InvokeVirtual 23

invokevirtual12 TOS = MAR = TOS + 1 invokevirtual13 PC = PC + 1; fetch invokevirtual14 H = MBRU << 8 invokevirtual15 H = MBRU OR H invokevirtual16 MDR = SP + H + 1; wr invokevirtual17 MAR = SP = MDR; invokevirtual18 MDR = OPC; wr invokevirtual19 MAR = SP = SP + 1 invokevirtual20 MDR = LV; wr invokevirtual21 PC = PC + 1; fetch invokevirtual22 LV = TOS; goto Main1

Main1 PC = PC + 1; fetch; goto (MBR)

LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP LV MBR OpCode 27

npar1 npar2 nvar1 nvar2

PC

Retorno

El método invocado debe guardar en la pila su resultado

antes de ejecutar la instrucción IRETURN.

Un método declarado como

void

debe colocar también un

valor en la pila; es responsabilidad del método invocador

desechar ese valor con una instrucción

POP

.

La ejecución del programa continúa con la instrucción

que sigue a INVOKEVIRTUAL en el método invocador.

(8)

Retorno

29

iReturn 1

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

0xAC MBR 0xAC Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP LV 30

iReturn 2

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

0xAC MBR ?? SP, LV Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

iReturn 3

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

0xAC MBR ?? MDR Link ptr. SP, LV Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr

(9)

iReturn 4

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

0xAC MBR ?? MDR Link ptr. SP LV Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 33

iReturn 5

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

0xAC MBR ??

MDR PC de llam.

SP LV

MAR LV de llam.Resultado PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 34

iReturn 6

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

MBR ?? MDR PC de llam. SP LV Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 35 0xB6 desp1 desp2 0x36 PC

iReturn 7

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

LV MBR 0x36 MDR LV de llam. MAR, SP Resultado LV de llam. PC de llam. Var. loc. 2 Var. loc. 1 Param. 3 Param. 2 Param. 1 Link ptr LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr 36 0xB6 desp1 desp2 0x36 PC

(10)

iReturn 8

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1

LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr LV 37 0xB6 desp1 desp2 0x36 PC MBR 0x36 MDR LV de llam. TOS Resultado MAR, SP

iReturn 9

ireturn1 MAR = SP = LV; rd ireturn2 nop ireturn3 LV = MAR = MDR; rd ireturn4 MAR = LV + 1 ireturn5 PC = MDR; rd; fetch ireturn6 MAR = SP ireturn7 LV = MDR

ireturn8 MDR = TOS; wr; goto Main1 Main1 PC = PC + 1; fetch; goto (MBR)

Resultado LV anterior PC anterior Var. loc. 2 Var. loc. 1 Param. 2 Param. 1 Link ptr SP LV 38 0xB6 desp1 desp2 0x36 PC MBR 0x36

Figure

Updating...

References

Related subjects :