aboutsummaryrefslogblamecommitdiffstats
path: root/lib/compiler/src/genop.tab
blob: 6874054495f364981195f8544d27faf8af0c48c8 (plain) (tree)



















































































































































































































































































                                                                                 
#
# %CopyrightBegin%
# 
# Copyright Ericsson AB 1998-2009. All Rights Reserved.
# 
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
# 
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
# 
# %CopyrightEnd%
#
BEAM_FORMAT_NUMBER=0

#
# Generic instructions, generated by the compiler.  If any of them change number,
# arity or semantics, the format number above must be bumped.
#

1: label/1
2: func_info/3
3: int_code_end/0

#
# Function and BIF calls.
#
4: call/2
5: call_last/3
6: call_only/2

7: call_ext/2
8: call_ext_last/3

9: bif0/2
10: bif1/4
11: bif2/5

#
# Allocating, deallocating and returning.
#
12: allocate/2
13: allocate_heap/3
14: allocate_zero/2
15: allocate_heap_zero/3
16: test_heap/2
17: init/1
18: deallocate/1
19: return/0

#
# Sending & receiving.
#
20: send/0
21: remove_message/0
22: timeout/0
23: loop_rec/2
24: loop_rec_end/1
25: wait/1
26: wait_timeout/2

#
# Arithmethic opcodes.
#
27: -m_plus/4
28: -m_minus/4
29: -m_times/4
30: -m_div/4
31: -int_div/4
32: -int_rem/4
33: -int_band/4
34: -int_bor/4
35: -int_bxor/4
36: -int_bsl/4
37: -int_bsr/4
38: -int_bnot/3

#
# Comparision operators.
#
39: is_lt/3
40: is_ge/3
41: is_eq/3
42: is_ne/3
43: is_eq_exact/3
44: is_ne_exact/3

#
# Type tests.
#
45: is_integer/2
46: is_float/2
47: is_number/2
48: is_atom/2
49: is_pid/2
50: is_reference/2
51: is_port/2
52: is_nil/2
53: is_binary/2
54: -is_constant/2
55: is_list/2
56: is_nonempty_list/2
57: is_tuple/2
58: test_arity/3

#
# Indexing & jumping.
#
59: select_val/3
60: select_tuple_arity/3
61: jump/1

#
# Catch.
#
62: catch/2
63: catch_end/1

#
# Moving, extracting, modifying.
#
64: move/2
65: get_list/3
66: get_tuple_element/3
67: set_tuple_element/3

#
# Building terms.
#
68: put_string/3
69: put_list/3
70: put_tuple/2
71: put/1

#
# Raising errors.
#
72: badmatch/1
73: if_end/0
74: case_end/1

#
# 'fun' support.
#
75: call_fun/1
76: -make_fun/3
77: is_function/2

#
# Late additions to R5.
#
78: call_ext_only/2

#
# Binary matching (R7).
#
79: -bs_start_match/2
80: -bs_get_integer/5
81: -bs_get_float/5
82: -bs_get_binary/5
83: -bs_skip_bits/4
84: -bs_test_tail/2
85: -bs_save/1
86: -bs_restore/1

#
# Binary construction (R7A).
#
87: -bs_init/2
88: -bs_final/2
89: bs_put_integer/5
90: bs_put_binary/5
91: bs_put_float/5
92: bs_put_string/2

#
# Binary construction (R7B).
#
93: -bs_need_buf/1

#
# Floating point arithmetic (R8).
#
94: fclearerror/0
95: fcheckerror/1
96: fmove/2
97: fconv/2
98: fadd/4
99: fsub/4
100: fmul/4
101: fdiv/4
102: fnegate/3

# New fun construction (R8).
103: make_fun2/1

# Try/catch/raise (R10B).
104: try/2
105: try_end/1
106: try_case/1
107: try_case_end/1
108: raise/2

# New instructions in R10B.
109: bs_init2/6
110: bs_bits_to_bytes/3
111: bs_add/5
112: apply/1
113: apply_last/2
114: is_boolean/2

# New instructions in R10B-6.
115: is_function2/3

# New bit syntax matching in R11B.

116: bs_start_match2/5
117: bs_get_integer2/7
118: bs_get_float2/7
119: bs_get_binary2/7
120: bs_skip_bits2/5
121: bs_test_tail2/3
122: bs_save2/2
123: bs_restore2/2

# New GC bifs introduced in R11B.
124: gc_bif1/5
125: gc_bif2/6

# Experimental new bit_level bifs introduced in R11B.
# NOT used in R12B.
126: -bs_final2/2
127: -bs_bits_to_bytes2/2

# R11B-4
128: -put_literal/2

# R11B-5
129: is_bitstr/2

# R12B
130: bs_context_to_binary/1
131: bs_test_unit/3
132: bs_match_string/4
133: bs_init_writable/0
134: bs_append/8
135: bs_private_append/6
136: trim/2
137: bs_init_bits/6

# R12B-5
138: bs_get_utf8/5
139: bs_skip_utf8/4

140: bs_get_utf16/5
141: bs_skip_utf16/4

142: bs_get_utf32/5
143: bs_skip_utf32/4

144: bs_utf8_size/3
145: bs_put_utf8/3

146: bs_utf16_size/3
147: bs_put_utf16/3

148: bs_put_utf32/3

# R13B03

149: on_load/0