## Strongtalk Bytecodes (Version 2)

### local_access bytecodes

Code | Name | Format | Single step 00H | push_temp_0 | byte |
01H | push_temp_1 | byte |
02H | push_temp_2 | byte |
03H | push_temp_3 | byte |
04H | push_temp_4 | byte |
05H | push_temp_5 | byte |
07H | push_temp_n | byte byte |
08H | push_arg_1 | byte |
09H | push_arg_2 | byte |
0AH | push_arg_3 | byte |
0BH | push_arg_n | byte byte |
10H | store_temp_0_pop | byte | intercepted
11H | store_temp_1_pop | byte | intercepted
12H | store_temp_2_pop | byte | intercepted
13H | store_temp_3_pop | byte | intercepted
14H | store_temp_4_pop | byte | intercepted
15H | store_temp_5_pop | byte | intercepted
16H | store_temp_n | byte byte | intercepted
17H | store_temp_n_pop | byte byte | intercepted

### instVar_access bytecodes

Code | Name | Format | Single step 28H | return_instVar_name | byte oop |
2CH | return_instVar | byte long | intercepted
2DH | push_instVar | byte long |
2EH | store_instVar_pop | byte long | intercepted
2FH | store_instVar | byte long | intercepted
3DH | push_instVar_name | byte oop |
3EH | store_instVar_pop_name | byte oop |
3FH | store_instVar_name | byte oop |

### context_access bytecodes

Code | Name | Format | Single step 40H | push_temp_0_context_0 | byte |
41H | push_temp_1_context_0 | byte |
42H | push_temp_2_context_0 | byte |
43H | push_temp_n_context_0 | byte byte |
44H | store_temp_0_context_0_pop | byte | intercepted
45H | store_temp_1_context_0_pop | byte | intercepted
46H | store_temp_2_context_0_pop | byte | intercepted
47H | store_temp_n_context_0_pop | byte byte | intercepted
50H | push_temp_0_context_1 | byte |
51H | push_temp_1_context_1 | byte |
52H | push_temp_2_context_1 | byte |
53H | push_temp_n_context_1 | byte byte |
54H | store_temp_0_context_1_pop | byte | intercepted
55H | store_temp_1_context_1_pop | byte | intercepted
56H | store_temp_2_context_1_pop | byte | intercepted
57H | store_temp_n_context_1_pop | byte byte | intercepted
60H | push_temp_0_context_n | byte byte |
61H | push_temp_1_context_n | byte byte |
62H | push_temp_2_context_n | byte byte |
63H | push_temp_n_context_n | byte byte byte |
64H | store_temp_0_context_n_pop | byte byte | intercepted
65H | store_temp_1_context_n_pop | byte byte | intercepted
66H | store_temp_2_context_n_pop | byte byte | intercepted
67H | store_temp_n_context_n_pop | byte byte byte | intercepted
68H | set_self_via_context | byte |
69H | copy_1_into_context | byte byte |
6AH | copy_2_into_context | byte byte byte |
6BH | copy_n_into_context | byte byte {byte} |
6CH | copy_self_into_context | byte |
6DH | copy_self_1_into_context | byte byte |
6EH | copy_self_2_into_context | byte byte byte |
6FH | copy_self_n_into_context | byte byte {byte} |

### classVar_access bytecodes

Code | Name | Format | Single step 29H | push_classVar | byte oop |
2AH | store_classVar_pop | byte oop | intercepted
2BH | store_classVar | byte oop | intercepted
F3H | push_classVar_name | byte oop |
F4H | store_classVar_pop_name | byte oop |
F5H | store_classVar_name | byte oop |

### global_access bytecodes

Code | Name | Format | Single step F0H | push_global | byte oop |
F1H | store_global_pop | byte oop | intercepted
F2H | store_global | byte oop | intercepted

### new_closure bytecodes

Code | Name | Format | Single step 48H | push_new_closure_context_0 | byte oop |
49H | push_new_closure_context_1 | byte oop |
4AH | push_new_closure_context_2 | byte oop |
4BH | push_new_closure_context_n | byte byte oop |
58H | push_new_closure_tos_0 | byte oop |
59H | push_new_closure_tos_1 | byte oop |
5AH | push_new_closure_tos_2 | byte oop |
5BH | push_new_closure_tos_n | byte byte oop |

### new_context bytecodes

Code | Name | Format | Single step 4CH | install_new_context_method_0 | byte |
4DH | install_new_context_method_1 | byte |
4EH | install_new_context_method_2 | byte |
4FH | install_new_context_method_n | byte byte |
5CH | only_pop | byte |
5DH | install_new_context_block_1 | byte |
5EH | install_new_context_block_2 | byte |
5FH | install_new_context_block_n | byte byte |

### control_struc bytecodes

Code | Name | Format | Single step 70H | ifTrue_byte | byte byte byte |
71H | ifFalse_byte | byte byte byte |
72H | and_byte | byte byte |
73H | or_byte | byte byte |
74H | whileTrue_byte | byte byte |
75H | whileFalse_byte | byte byte |
76H | jump_else_byte | byte byte |
77H | jump_loop_byte | byte byte byte |
78H | ifTrue_word | byte byte long |
79H | ifFalse_word | byte byte long |
7AH | and_word | byte long |
7BH | or_word | byte long |
7CH | whileTrue_word | byte long |
7DH | whileFalse_word | byte long |
7EH | jump_else_word | byte long |
7FH | jump_loop_word | byte long long |
FFH | halt | byte |

### message_send bytecodes

Code | Name | Format | Single step | Send type | Arguments 80H | interpreted_send_0 | byte oop oop | intercepted | interpreted_send | receiver
81H | interpreted_send_1 | byte oop oop | intercepted | interpreted_send | receiver argument_1
82H | interpreted_send_2 | byte oop oop | intercepted | interpreted_send | receiver argument_1 argument_2
83H | interpreted_send_n | byte byte oop oop | intercepted | interpreted_send | receiver argument_1 argument_2 ... argument_n
84H | interpreted_send_0_pop | byte oop oop | intercepted | interpreted_send | receiver
85H | interpreted_send_1_pop | byte oop oop | intercepted | interpreted_send | receiver argument_1
86H | interpreted_send_2_pop | byte oop oop | intercepted | interpreted_send | receiver argument_1 argument_2
87H | interpreted_send_n_pop | byte byte oop oop | intercepted | interpreted_send | receiver argument_1 argument_2 ... argument_n
88H | interpreted_send_self | byte oop oop | intercepted | interpreted_send | argument_1 argument_2 ... argument_n
89H | interpreted_send_self_pop | byte oop oop | intercepted | interpreted_send | argument_1 argument_2 ... argument_n
8AH | interpreted_send_super | byte oop oop | intercepted | interpreted_send | argument_1 argument_2 ... argument_n
8BH | interpreted_send_super_pop | byte oop oop | intercepted | interpreted_send | argument_1 argument_2 ... argument_n
90H | polymorphic_send_0 | byte oop oop | intercepted | polymorphic_send | receiver
91H | polymorphic_send_1 | byte oop oop | intercepted | polymorphic_send | receiver argument_1
92H | polymorphic_send_2 | byte oop oop | intercepted | polymorphic_send | receiver argument_1 argument_2
93H | polymorphic_send_n | byte byte oop oop | intercepted | polymorphic_send | receiver argument_1 argument_2 ... argument_n
94H | polymorphic_send_0_pop | byte oop oop | intercepted | polymorphic_send | receiver
95H | polymorphic_send_1_pop | byte oop oop | intercepted | polymorphic_send | receiver argument_1
96H | polymorphic_send_2_pop | byte oop oop | intercepted | polymorphic_send | receiver argument_1 argument_2
97H | polymorphic_send_n_pop | byte byte oop oop | intercepted | polymorphic_send | receiver argument_1 argument_2 ... argument_n
98H | polymorphic_send_self | byte oop oop | intercepted | polymorphic_send | argument_1 argument_2 ... argument_n
99H | polymorphic_send_self_pop | byte oop oop | intercepted | polymorphic_send | argument_1 argument_2 ... argument_n
9AH | polymorphic_send_super | byte oop oop | intercepted | polymorphic_send | argument_1 argument_2 ... argument_n
9BH | polymorphic_send_super_pop | byte oop oop | intercepted | polymorphic_send | argument_1 argument_2 ... argument_n
A0H | compiled_send_0 | byte long oop | intercepted | compiled_send | receiver
A1H | compiled_send_1 | byte long oop | intercepted | compiled_send | receiver argument_1
A2H | compiled_send_2 | byte long oop | intercepted | compiled_send | receiver argument_1 argument_2
A3H | compiled_send_n | byte byte long oop | intercepted | compiled_send | receiver argument_1 argument_2 ... argument_n
A4H | compiled_send_0_pop | byte long oop | intercepted | compiled_send | receiver
A5H | compiled_send_1_pop | byte long oop | intercepted | compiled_send | receiver argument_1
A6H | compiled_send_2_pop | byte long oop | intercepted | compiled_send | receiver argument_1 argument_2
A7H | compiled_send_n_pop | byte byte long oop | intercepted | compiled_send | receiver argument_1 argument_2 ... argument_n
A8H | compiled_send_self | byte long oop | intercepted | compiled_send | argument_1 argument_2 ... argument_n
A9H | compiled_send_self_pop | byte long oop | intercepted | compiled_send | argument_1 argument_2 ... argument_n
AAH | compiled_send_super | byte long oop | intercepted | compiled_send | argument_1 argument_2 ... argument_n
ABH | compiled_send_super_pop | byte long oop | intercepted | compiled_send | argument_1 argument_2 ... argument_n
B8H | access_send_self | byte oop oop | intercepted | accessor send | argument_1 argument_2 ... argument_n
B9H | primitive_send_0 | byte oop oop | intercepted | primitive_send | receiver
BAH | primitive_send_super | byte oop oop | intercepted | primitive_send | argument_1 argument_2 ... argument_n
BBH | primitive_send_super_pop | byte oop oop | intercepted | primitive_send | argument_1 argument_2 ... argument_n
BDH | primitive_send_1 | byte oop oop | intercepted | primitive_send | receiver argument_1
BEH | primitive_send_2 | byte oop oop | intercepted | primitive_send | receiver argument_1 argument_2
BFH | primitive_send_n | byte byte oop oop | intercepted | primitive_send | receiver argument_1 argument_2 ... argument_n
C8H | access_send_0 | byte oop oop | intercepted | accessor send | receiver
C9H | primitive_send_0_pop | byte oop oop | intercepted | primitive_send | receiver
CAH | primitive_send_self | byte oop oop | intercepted | primitive_send | argument_1 argument_2 ... argument_n
CBH | primitive_send_self_pop | byte oop oop | intercepted | primitive_send | argument_1 argument_2 ... argument_n
CDH | primitive_send_1_pop | byte oop oop | intercepted | primitive_send | receiver argument_1
CEH | primitive_send_2_pop | byte oop oop | intercepted | primitive_send | receiver argument_1 argument_2
CFH | primitive_send_n_pop | byte byte oop oop | intercepted | primitive_send | receiver argument_1 argument_2 ... argument_n
D0H | megamorphic_send_0 | byte oop oop | intercepted | megamorphic_send | receiver
D1H | megamorphic_send_1 | byte oop oop | intercepted | megamorphic_send | receiver argument_1
D2H | megamorphic_send_2 | byte oop oop | intercepted | megamorphic_send | receiver argument_1 argument_2
D3H | megamorphic_send_n | byte byte oop oop | intercepted | megamorphic_send | receiver argument_1 argument_2 ... argument_n
D4H | megamorphic_send_0_pop | byte oop oop | intercepted | megamorphic_send | receiver
D5H | megamorphic_send_1_pop | byte oop oop | intercepted | megamorphic_send | receiver argument_1
D6H | megamorphic_send_2_pop | byte oop oop | intercepted | megamorphic_send | receiver argument_1 argument_2
D7H | megamorphic_send_n_pop | byte byte oop oop | intercepted | megamorphic_send | receiver argument_1 argument_2 ... argument_n
D8H | megamorphic_send_self | byte oop oop | intercepted | megamorphic_send | argument_1 argument_2 ... argument_n
D9H | megamorphic_send_self_pop | byte oop oop | intercepted | megamorphic_send | argument_1 argument_2 ... argument_n
DAH | megamorphic_send_super | byte oop oop | intercepted | megamorphic_send | argument_1 argument_2 ... argument_n
DBH | megamorphic_send_super_pop | byte oop oop | intercepted | megamorphic_send | argument_1 argument_2 ... argument_n
E0H | smi_add | byte oop oop | intercepted | predicted_send | receiver argument_1
E1H | smi_sub | byte oop oop | intercepted | predicted_send | receiver argument_1
E2H | smi_mult | byte oop oop | intercepted | predicted_send | receiver argument_1
E3H | smi_div | byte oop oop | intercepted | predicted_send | receiver argument_1
E4H | smi_mod | byte oop oop | intercepted | predicted_send | receiver argument_1
E5H | smi_create_point | byte oop oop | intercepted | predicted_send | receiver argument_1
E6H | smi_equal | byte oop oop | intercepted | predicted_send | receiver argument_1
E7H | smi_not_equal | byte oop oop | intercepted | predicted_send | receiver argument_1
E8H | smi_less | byte oop oop | intercepted | predicted_send | receiver argument_1
E9H | smi_less_equal | byte oop oop | intercepted | predicted_send | receiver argument_1
EAH | smi_greater | byte oop oop | intercepted | predicted_send | receiver argument_1
EBH | smi_greater_equal | byte oop oop | intercepted | predicted_send | receiver argument_1
ECH | objArray_at | byte oop oop | intercepted | predicted_send | receiver argument_1
EDH | objArray_at_put | byte oop oop | intercepted | predicted_send | receiver argument_1
F6H | smi_and | byte oop oop | intercepted | predicted_send | receiver argument_1
F7H | smi_or | byte oop oop | intercepted | predicted_send | receiver argument_1
F8H | smi_xor | byte oop oop | intercepted | predicted_send | receiver argument_1
F9H | smi_shift | byte oop oop | intercepted | predicted_send | receiver argument_1

### nonlocal_return bytecodes

Code | Name | Format | Single step AEH | non_local_return_tos_pop_n | byte byte | intercepted
AFH | non_local_return_self_pop_n | byte byte | intercepted

### primitive_call bytecodes

Code | Name | Format | Single step B0H | prim_call | byte long | intercepted
B1H | predict_prim_call | byte long | intercepted
B2H | prim_call_failure | byte long long | intercepted
B3H | predict_prim_call_failure | byte long long | intercepted
B5H | prim_call_self | byte long | intercepted
B6H | prim_call_self_failure | byte long long | intercepted
C0H | prim_call_lookup | byte oop |
C1H | predict_prim_call_lookup | byte oop |
C2H | prim_call_failure_lookup | byte oop long |
C3H | predict_prim_call_failure_lookup | byte oop long |
C5H | prim_call_self_lookup | byte oop |
C6H | prim_call_self_failure_lookup | byte oop long |

### dll_call bytecodes

Code | Name | Format | Single step B4H | dll_call_sync | byte oop oop long byte | intercepted
C4H | dll_call_async | byte oop oop long byte | intercepted

### float_operation bytecodes

Code | Name | Format | Single step 30H | float_allocate | byte byte byte byte |
31H | float_floatify_pop | byte byte |
32H | float_move | byte byte byte |
33H | float_set | byte byte oop |
34H | float_nullary_op | byte byte byte |
35H | float_unary_op | byte byte byte |
36H | float_binary_op | byte byte byte |
37H | float_unary_op_to_oop | byte byte byte |
38H | float_binary_op_to_oop | byte byte byte |

### miscellaneous bytecodes

Code | Name | Format | Single step 0CH | allocate_temp_1 | byte |
0DH | allocate_temp_2 | byte |
0EH | allocate_temp_3 | byte |
0FH | allocate_temp_n | byte byte |
18H | push_neg_n | byte byte |
19H | push_succ_n | byte byte |
1AH | push_literal | byte oop |
1BH | push_tos | byte |
1CH | push_self | byte |
1DH | push_nil | byte |
1EH | push_true | byte |
1FH | push_false | byte |
8CH | return_tos_pop_0 | byte | intercepted
8DH | return_tos_pop_1 | byte | intercepted
8EH | return_tos_pop_2 | byte | intercepted
8FH | return_tos_pop_n | byte byte | intercepted
9CH | return_self_pop_0 | byte | intercepted
9DH | return_self_pop_1 | byte | intercepted
9EH | return_self_pop_2 | byte | intercepted
9FH | return_self_pop_n | byte byte | intercepted
ACH | return_tos_zap_pop_n | byte byte | intercepted
ADH | return_self_zap_pop_n | byte byte | intercepted
DDH | special_primitive_send_1_hint | byte byte |
EEH | double_equal | byte | intercepted
EFH | double_tilde | byte | intercepted

(c) 1994-1997 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
Use and distribution of this software is subject to the terms of the
source license.