jvm hardcode - part 01 - how frames work
TRANSCRIPT
Cadre 1 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
ra PC
Cadre 1 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
ra
PC
1
Cadre 1 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
ra
PC
2
1
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
2
1
Cadre inactif
Cadre 1 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
ra
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
2
1
Cadre inactif
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
1
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
2
1
Cadre inactif
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
2
1
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
2
1
Cadre inactif
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
3
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
2
1
Cadre inactif
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
Cadre 2 Classe
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
public static int add(int i1, int i2) { empile vl0 empile vl1 additionne le sommet de la pile retourne le sommet de la pile }
1
PC
2
3
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
3
Cadre inactif
Classe
public static void main(String[] a) { empile la littérale 1 empile la littérale 2 appelle la méthode static add() stocke le résultat dans vl1 // … }
PC
Cadre 1
Variables Locales
0 1 2 3 4 5 6 7 8
Pile
ra
3
3