Erlang VM彙編指令

轉載請註明,來自:http://blog.csdn.net/skyman_2001

可以用erts_debug:instructions()得到Erlang虛擬機的所有的彙編指令。以R15B01版本爲例,共有452個彙編指令:

"allocate_tt","allocate_heap_tIt","allocate_heap_zero_tIt",
 "allocate_init_tIy","allocate_zero_tt","apply_I",
 "apply_bif","apply_last_IP","badarg_j","badmatch_r",
 "badmatch_x","badmatch_y","bif1_fbsd","bif1_body_bsd",
 "bs_context_to_binary_r","bs_context_to_binary_x",
 "bs_context_to_binary_y","bs_init_writable",
 "bs_put_string_II","bs_test_tail_imm2_frI",
 "bs_test_tail_imm2_fxI","bs_test_unit_frI",
 "bs_test_unit_fxI","bs_test_unit8_fr","bs_test_unit8_fx",
 "bs_test_zero_tail2_fr","bs_test_zero_tail2_fx",
 "call_bif_e","call_error_handler","call_nif",
 "call_traced_function","case_end_r","case_end_x",
 "case_end_y","catch_yf","catch_end_y","continue_exit",
 "deallocate_I","deallocate_return_Q","error_action_code",
 "extract_next_element_x","extract_next_element_y",
 "extract_next_element2_x","extract_next_element2_y",
 "extract_next_element3_x","extract_next_element3_y",
 "fclearerror","fconv_dl","fmove_ql","fmove_ld","fmove_dl",
 "get_list_rrx","get_list_rry","get_list_rxr","get_list_rxx",
 "get_list_rxy","get_list_ryr","get_list_ryx","get_list_ryy",
 "get_list_xrx","get_list_xry","get_list_xxr","get_list_xxx",
 "get_list_xxy","get_list_xyr","get_list_xyx","get_list_xyy",
 "get_list_yrx","get_list_yry","get_list_yxr","get_list_yxx",
 "get_list_yxy","get_list_yyr","get_list_yyx","get_list_yyy",
 "hipe_call_count","hipe_trap_call","hipe_trap_call_closure",
 "hipe_trap_resume","hipe_trap_return","hipe_trap_throw",
 "i_apply","i_apply_fun","i_apply_fun_last_P",
 "i_apply_fun_only","i_apply_last_P","i_apply_only",
 "i_band_jId","i_bif2_fbd","i_bif2_body_bd","i_bor_jId",
 "i_bs_add_jId","i_bs_append_jIIId",
 "i_bs_get_binary2_frIsId","i_bs_get_binary2_fxIsId",
 "i_bs_get_binary_all2_frIId","i_bs_get_binary_all2_fxIId",
 "i_bs_get_binary_all_reuse_rfI",
 "i_bs_get_binary_all_reuse_xfI",
 "i_bs_get_binary_imm2_frIIId","i_bs_get_binary_imm2_fxIIId",
 "i_bs_get_float2_frIsId","i_bs_get_float2_fxIsId",
 "i_bs_get_integer_fIId","i_bs_get_integer_16_rfd",
 "i_bs_get_integer_16_xfd","i_bs_get_integer_32_rfId",
 "i_bs_get_integer_32_xfId","i_bs_get_integer_8_rfd",
 "i_bs_get_integer_8_xfd","i_bs_get_integer_imm_rIIfId",
 "i_bs_get_integer_imm_xIIfId",
 "i_bs_get_integer_small_imm_rIfId",
 "i_bs_get_integer_small_imm_xIfId","i_bs_get_utf16_rfId",
 "i_bs_get_utf16_xfId","i_bs_get_utf8_rfd",
 "i_bs_get_utf8_xfd","i_bs_init_IId","i_bs_init_bits_IId",
 "i_bs_init_bits_fail_rjId","i_bs_init_bits_fail_xjId",
 "i_bs_init_bits_fail_yjId","i_bs_init_bits_fail_heap_IjId",
 "i_bs_init_bits_heap_IIId","i_bs_init_fail_rjId",
 "i_bs_init_fail_xjId","i_bs_init_fail_yjId",
 "i_bs_init_fail_heap_IjId","i_bs_init_heap_IIId",
 "i_bs_init_heap_bin_IId","i_bs_init_heap_bin_heap_IIId",
 "i_bs_match_string_rfII","i_bs_match_string_xfII",
 "i_bs_private_append_jId","i_bs_put_utf16_jIs",
 "i_bs_put_utf8_js","i_bs_restore2_rI","i_bs_restore2_xI",
 "i_bs_save2_rI","i_bs_save2_xI","i_bs_skip_bits2_frxI",
 "i_bs_skip_bits2_fryI","i_bs_skip_bits2_fxrI",
 "i_bs_skip_bits2_fxxI","i_bs_skip_bits2_fxyI",
 "i_bs_skip_bits_all2_frI","i_bs_skip_bits_all2_fxI",
 "i_bs_skip_bits_imm2_frI","i_bs_skip_bits_imm2_fxI",
 "i_bs_start_match2_rfIId","i_bs_start_match2_xfIId",
 "i_bs_start_match2_yfIId","i_bs_utf16_size_sd",
 "i_bs_utf8_size_sd","i_bs_validate_unicode_js",
 "i_bs_validate_unicode_retract_j","i_bsl_jId","i_bsr_jId",
 "i_bxor_jId","i_call_f","i_call_ext_e","i_call_ext_last_eP",
 "i_call_ext_only_e","i_call_fun_I","i_call_fun_last_IP",
 "i_call_last_fP","i_call_only_f","i_count_breakpoint",
 "i_debug_breakpoint","i_element_rjsd","i_element_xjsd",
 "i_element_yjsd","i_fadd_lll","i_fast_element_rjId",
 "i_fast_element_xjId","i_fast_element_yjId","i_fcheckerror",
 "i_fdiv_lll","i_fetch_rx","i_fetch_ry","i_fetch_xr",
 "i_fetch_xx","i_fetch_xy","i_fetch_yr","i_fetch_yx",
 "i_fetch_yy","i_fetch_rc","i_fetch_xc","i_fetch_yc",
 "i_fetch_cr","i_fetch_cx","i_fetch_cy","i_fetch_cc",
 "i_fetch_ss","i_fmul_lll","i_fnegate_ll","i_fsub_lll",
 "i_func_info_IaaI","i_gc_bif1_jIsId","i_gc_bif2_jIId",
 "i_gc_bif3_jIsId","i_get_sd","i_get_tuple_element_rPr",
 "i_get_tuple_element_rPx","i_get_tuple_element_rPy",
 "i_get_tuple_element_xPr","i_get_tuple_element_xPx",
 "i_get_tuple_element_xPy","i_get_tuple_element_yPr",
 "i_get_tuple_element_yPx","i_get_tuple_element_yPy",
 "i_hibernate","i_increment_rIId","i_increment_xIId",
 "i_increment_yIId","i_int_bnot_jsId","i_int_div_jId",
 "i_is_eq_f","i_is_eq_exact_f","i_is_eq_exact_immed_frc",
 "i_is_eq_exact_immed_fxc","i_is_eq_exact_immed_fyc",
 "i_is_eq_exact_literal_rfc","i_is_eq_exact_literal_xfc",
 "i_is_eq_exact_literal_yfc","i_is_ge_f","i_is_lt_f",
 "i_is_ne_f","i_is_ne_exact_f","i_is_ne_exact_immed_frc",
 "i_is_ne_exact_immed_fxc","i_is_ne_exact_immed_fyc",
 "i_is_ne_exact_literal_rfc","i_is_ne_exact_literal_xfc",
 "i_is_ne_exact_literal_yfc","i_jump_on_val_rfII",
 "i_jump_on_val_xfII","i_jump_on_val_yfII",
 "i_jump_on_val_zero_rfI","i_jump_on_val_zero_xfI",
 "i_jump_on_val_zero_yfI","i_loop_rec_fr","i_m_div_jId",
 "i_make_fun_It","i_minus_jId","i_move_call_crf",
 "i_move_call_ext_cre","i_move_call_ext_last_ePcr",
 "i_move_call_ext_only_ecr","i_move_call_last_fPcr",
 "i_move_call_only_fcr","i_mtrace_breakpoint",
 "i_new_bs_put_binary_jsIs","i_new_bs_put_binary_all_jsI",
 "i_new_bs_put_binary_imm_jIs","i_new_bs_put_float_jsIs",
 "i_new_bs_put_float_imm_jIIs","i_new_bs_put_integer_jsIs",
 "i_new_bs_put_integer_imm_jIIs","i_plus_jId",
 "i_put_tuple_rI","i_put_tuple_xI","i_put_tuple_yI",
 "i_recv_set","i_rem_jId","i_return_time_trace",
 "i_return_to_trace","i_select_tuple_arity_rfI",
 "i_select_tuple_arity_xfI","i_select_tuple_arity_yfI",
 "i_select_tuple_arity2_rfAfAf",
 "i_select_tuple_arity2_xfAfAf",
 "i_select_tuple_arity2_yfAfAf","i_select_val_rfI",
 "i_select_val_xfI","i_select_val_yfI",
 "i_select_val2_rfcfcf","i_select_val2_xfcfcf",
 "i_select_val2_yfcfcf","i_time_breakpoint","i_times_jId",
 "i_trace_breakpoint","i_trim_I","i_wait_error",
 "i_wait_error_locked","i_wait_timeout_fI",
 "i_wait_timeout_fs","i_wait_timeout_locked_fI",
 "i_wait_timeout_locked_fs","i_yield","if_end","init_y",
 "init2_yy","init3_yyy","int_code_end","is_atom_fr",
 "is_atom_fx","is_atom_fy","is_binary_fr","is_binary_fx",
 "is_binary_fy","is_bitstring_fr","is_bitstring_fx",
 "is_bitstring_fy","is_boolean_fr","is_boolean_fx",
 "is_boolean_fy","is_float_fr","is_float_fx","is_float_fy",
 "is_function_fr","is_function_fx","is_function_fy",
 "is_function2_fss","is_integer_fr","is_integer_fx",
 "is_integer_fy","is_integer_allocate_frII",
 "is_integer_allocate_fxII","is_list_fr","is_list_fx",
 "is_list_fy","is_nil_fr","is_nil_fx","is_nil_fy",
 "is_non_empty_list_test_heap_frIt","is_nonempty_list_fr",
 "is_nonempty_list_fx","is_nonempty_list_fy",
 "is_nonempty_list_allocate_frIt",
 "is_nonempty_list_allocate_fxIt","is_number_fr",
 "is_number_fx","is_number_fy","is_pid_fr","is_pid_fx",
 "is_pid_fy","is_port_fr","is_port_fx","is_port_fy",
 "is_reference_fr","is_reference_fx","is_reference_fy",
 "is_tuple_fr","is_tuple_fx","is_tuple_fy",
 "is_tuple_of_arity_frA","is_tuple_of_arity_fxA",
 "is_tuple_of_arity_fyA","jump_f","label_L","line_I",
 "loop_rec_end_f","move_nr","move_nx","move_rx","move_ry",
 "move_xr","move_xx","move_xy","move_yr","move_yx","move_yy",
 "move_cr","move_cx","move2_xxxx","move2_xyxy","move2_yxyx",
 "move_call_xrf","move_call_yrf","move_call_last_xrfQ",
 "move_call_last_yrfQ","move_call_only_xrf",
 "move_deallocate_return_nrQ","move_deallocate_return_xrQ",
 "move_deallocate_return_yrQ","move_deallocate_return_crQ",
 "move_jump_fn","move_jump_fx","move_jump_fy","move_jump_fc",
 "move_return_nr","move_return_xr","move_return_cr",
 "move_x1_c","move_x2_c","node_r","node_x","node_y",
 "normal_exit","on_load","put_list_rnx","put_list_rxr",
 "put_list_rxx","put_list_ryx","put_list_xnx","put_list_xrr",
 "put_list_xrx","put_list_xxr","put_list_xxx","put_list_xyr",
 "put_list_xyx","put_list_ynx","put_list_yrr","put_list_yrx",
 "put_list_yxr","put_list_yxx","put_list_yyr","put_list_yyx",
 "put_list_rcr","put_list_rcx","put_list_rcy","put_list_xcr",
 "put_list_xcx","put_list_xcy","put_list_ycr","put_list_ycx",
 "put_list_ycy","put_list_crr","put_list_crx","put_list_cry",
 "put_list_cxr","put_list_cxx","put_list_cxy","put_list_cyr",
 "put_list_cyx","put_list_cyy","put_list_ssd","raise_ss",
 "recv_mark_f","remove_message","return","return_trace",
 "self_r","self_x","self_y","send","set_tuple_element_sdP",
 "system_limit_j","test_arity_frA","test_arity_fxA",
 "test_arity_fyA","test_heap_It","test_heap_1_put_list_Iy",
 "timeout","timeout_locked","try_case_end_s","try_end_y",
 "wait_f","wait_locked_f","wait_unlocked_f"

發佈了184 篇原創文章 · 獲贊 13 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章