|
|
nono 1.3.0
; ; nono ; Copyright (C) 2025 nono project ; Licensed under nono-license.txt ; ; サイクル表 ; ; '.' は該当命令がない。 ; '=' は左と同じ値。 ; '?' は不明なところ。とりあえず左と同じにしておく。 ; ; 040 はかなり適当。 ; symbol 30CC NCC 040 ; 11.6.2 FEA fea_anin 3 = 1 fea_anpi 3 = 1 fea_anpd 4 = 1 fea_andi 4 = 1 fea_absw 2 = 1 fea_absl 4 5 1 fea_immw 2 = 1 fea_imml 4 = 1 ; 11.6.3 CEA cea_anin 2 = 1 cea_anpi 2 = 1 cea_anpd 2 = 1 cea_andi 2 = 1 cea_absw 2 = 1 cea_absl 4 = 1 cea_anix_brief 4 = 6 ; 簡易フォーマット cea_anix_direct 6 = 7 ; 非メモリ間接 cea_anix_indir 10 = 9 ; メモリ間接 (アウターディスプレースメントなし) cea_anix_indir_od 12 13 10 ; メモリ間接 (アウターディスプレースメントあり) cea_anix_bd2 2 3 0 ; ベースディスプレースメントが word cea_anix_bd4 6 = 0 ; ベースディスプレースメントが long ; 11.6.6 MOVE Instruction ; 040 は表からざっくり逆算。 move_ea_dn 2 = 0 movea_w 2 = 1 ; 040 は実際は Dn/#imm を除く movea_l 2 = 0 move_ea_anin 4 5 1 ; 030 は実際は ea が Rn なら (3, 4) move_ea_anpi 4 5 1 ; 030 は実際は ea が Rn なら (3, 4) move_ea_anpd 4 5 1 ; 030 は実際は ea が Rn なら (4, 4) move_ea_andi 4 5 1 move_ea_anix 2 3 1 ; 030 は表から逆算した基礎分。 move_ea_absw 4 5 1 move_ea_absl 6 7 1 ; 11.6.7 Special Purpose MOVE Instruction ; MOVEM はコード中で加算している。 ; 040 の MOVEP はケースごとに細分出来るがレア命令なので放置。 exg 4 = 1 movec_rc_rn 6 = 11 movec_rn_rca 6 = 7 movec_rn_rcb 12 = 7 move_ccr_dn 4 = 2 move_ccr_ea 4 5 2 move_dn_ccr 4 = 2 move_ea_ccr 4 = 2 move_sr_dn 4 = 3 move_sr_ea 4 5 3 move_ea_sr 8 10 9 movem_ea_list 8 8 3 movem_ea_list_n 4 4 1 movem_list_ea 4 4 2 movem_list_ea_n 2 2 1 movep 14 = 13 moves_ea_dn 7 = 23 moves_ea_an 7 = 28 moves_rn_ea 5 6 13 move_usp_an 4 = 3 move_an_usp 4 = 7 swap 4 = 2 ; 11.6.8 Arithmetical/Logical Instructions add_ea_dn 2 = 1 adda_w 4 = 2 adda_l 2 = 2 add_dn_ea 3 4 1 and_ea_dn 2 = 1 and_dn_ea 3 4 1 eor_dn_dn 2 = 1 eor_dn_ea 3 4 1 or_ea_dn 2 = 1 or_dn_ea 3 4 1 sub_ea_dn 2 = 1 sub_dn_ea 3 4 1 suba_w 4 = 2 suba_l 2 = 2 cmp 2 = 1 cmpa 4 = 1 cmp2_max 20 = 13 muls_w_max 28 = 16 muls_l_max 44 = 20 mulu_w_max 28 = 14 mulu_l_max 44 = 20 divs_w_max 56 = 27 divs_l_max 90 = 44 divu_w_max 44 = 27 divu_l_max 78 = 44 ; 11.6.9 Immediate Arithmetical/Logical Instructions moveq 2 = 1 addq_rn 2 = 1 addq_ea 3 4 1 subq_rn 2 = 1 subq_ea 3 4 1 addi_dn 2 = 1 addi_ea 3 4 1 andi_dn 2 = 1 andi_ea 3 4 1 eori_dn 2 = 1 eori_ea 3 4 1 ori_dn 2 = 1 ori_ea 3 4 1 subi_dn 2 = 1 subi_ea 3 4 1 cmpi 2 = 1 ; 11.6.10 BCD and Extended Instructions abcd_dn 4 = 3 abcd_an 13 14 4 sbcd_dn 4 = 3 sbcd_an 13 14 4 addx_dn 2 = 1 addx_an 9 10 3 subx_dn 2 = 1 subx_an 9 10 3 cmpm 8 = 3 pack_dn 6 = 3 pack_an 11 = 5 unpk_dn 8 = 4 unpk_an 11 = 6 ; 11.6.11 Single Operand Instructions clr_dn 2 = 1 clr_ea 3 4 1 neg_dn 2 = 1 neg_ea 3 4 1 negx_dn 2 = 1 negx_ea 3 4 1 not_dn 2 = 1 not_ea 3 4 1 ext 4 = 2 extb 4 = 1 nbcd 6 = 3 scc_dn 4 = 2 scc_ea 5 = 2 tas_dn 4 = 2 tas_ea 12 = 26 tst 2 = 1 ; 11.6.12 Shift/Rotate Instructions lsd_imm_dn 4 = 2 lsd_dn_dn_less 6 = 3 lsd_dn_dn_over 8 = 3 lsd_w 4 = 2 asl_imm_dn 6 = 3 asl_dn_dn 8 = 4 asl_w 6 = 3 asr_imm_dn 4 = 2 asr_dn_dn_less 6 = 3 asr_dn_dn_over 10 = 3 asr_w 4 = 2 rod_imm_dn 6 = 3 rod_dn_dn 8 = 4 rod_w 6 = 3 roxd_dn 12 = 5 roxd_w 4 = 2 ; 11.6.13 Bit Manipulation Instructions btst_imm 4 = 1 btst_dn 4 = 2 bchg_imm 6 = 3 bchg_dn 6 = 4 bclr_imm 6 = 3 bclr_dn 6 = 4 bset_imm 6 = 3 bset_dn 6 = 4 ; 11.6.14 Bit Field Manipulation Instructions bftst_dn 8 = 4 bftst_ea_less 10 = 9 bftst_ea_over 14 = 19 bfchg_dn 14 = 7 bfchg_ea_less 14 = 10 bfchg_ea_over 22 = 20 bfclr_dn 14 = 7 bfclr_ea_less 14 = 10 bfclr_ea_over 22 = 20 bfset_dn 14 = 7 bfset_ea_less 14 = 10 bfset_ea_over 22 = 20 bfext_dn 10 = 5 bfext_ea_less 12 = 9 bfext_ea_over 18 = 19 bfins_dn 12 = 6 bfins_ea_less 12 = 9 bfins_ea_over 18 = 19 bfffo_dn 20 = 7 bfffo_ea_less 22 = 11 bfffo_ea_over 28 = 21 ; 11.6.15 Conditional Branch Instructions ; Bcc (Taken) は bra を使っている。表に BRA がなさげ。 bra 6 8 2 bcc_b_not 4 = 3 bcc_w_not 6 = 3 bcc_l_not 8 = 3 dbcc_jmp 6 8 3 dbcc_done 10 13 4 dbcc_nop 6 8 4 ; 11.6.16 Control Instructions andi_sr 12 14 9 eori_sr 12 14 9 ori_sr 12 14 9 andi_ccr 12 14 4 eori_ccr 12 14 4 ori_ccr 12 14 4 bsr 6 9 2 cas_eq 13 = 37 cas_ne 11 = 37 cas2_max 24 = 50 cas2_true_inc 0 2 5 chk 8 = 8 chk_excep_max 28 30 8 chk2 18 = 11 chk2_excep_max 40 42 11 jmp 4 6 3 jsr 4 7 3 lea 2 = 1 link_w 4 5 3 link_l 6 7 3 nop 2 = 8 pea 4 = 2 rtd 10 12 6 rtr 12 14 7 rts 9 11 5 unlk 5 = 2 ; 11.6.17 Exception-Related Instructions and Operations ; Reset は長すぎて表現できないのでコードで実装。 bkpt 9 = ? ;Interrupt ;RESET instruction stop 8 = ? ;TRACE trap 18 20 16 illegal 18 20 16 aline 18 20 16 fline 18 20 16 excep_priv 18 20 16 trapcc_excep 22 24 19 trapcc 4 = 5 trapcc_w_inc 2 = 19 trapcc_l_inc 4 = 5 trapv_excep 22 24 19 trapv 4 = 5 ; 11.6.18 Save and Restore Operations busfault 62 64 ? rte_frame0 18 20 13 rte_frame2 18 20 14 ; 11.7 MMU Instruction Timing pmove_ea_tt 12 14 . pmove_tt_ea 8 = . pflusha 12 14 11 ; PLOAD[RW] は実際には Dy と #imm なら (8, 10)、SFC と DFC なら (12, 14)。 ; さらにテーブルサーチの時間も必要。 pload 12 14 . ; PFLUSH は実際には Dy と #imm なら (16, 18)、SFC と DFC なら (20, 22)。 ; さらにテーブルサーチの時間も必要。 pflush 20 22 . ; 実際には、無効→有効が (38, 40)、有効→無効が (56, 58)、無効→無効が ; (14, 16) だと思うが、今は場合分けしてない。 pmove_ea_tc 38 40 . pmove_tc_ea 4 5 . ; 実際には、たぶん有効になる場合 (12, 14)、それ以外が (28, 30)。 pmove_ea_xrp 28 30 . pmove_xrp_ea 4 5 . pmove_ea_mmusr 6 = . pmove_mmusr_ea 4 5 . ; ptest はコードで実装してある。 ; FPU cea_fpu_anpi 6 = 1 cea_fpu_anpd 6 = 1 fpu_src_dn -5 = 0 fmove 33 = 14 fsqrt 107 = 105 fabs 35 = 2 fneg 35 = 2 fdiv 103 = 39 fadd 51 = 5 fmul 71 = 7 fsgldiv 69 = 39 ; 040UM に未記載 fsglmul 59 = 7 ; 040UM に未記載 fsub 51 = 5 fcmp 33 = 5 ftst 33 = 5 fmove_i_fp_dn 98 98 12 ; .B/.W/.L fmove_i_fp_mem 100 100 11 fmove_s_fp_dn 78 78 4 fmove_s_fp_mem 80 80 3 fmove_d_fp_ea 86 86 3 fmove_x_fp_ea 72 72 4 fmovem_rn_ctl 28 31 3 fmovem_mem_ctl 28 30 4 fmovem_imm_ctl 25 29 4 fmovem_ctl_rn 31 34 3 fmovem_ctl_mem 27 30 4 fmovem_ea2reg_dyn 49 52 15 fmovem_ea2reg_sta 35 38 14 fmovem_ea2reg_n 23 23 3 fmovem_reg2ea_dyn 51 54 15 fmovem_reg2ea_sta 37 40 14 fmovem_reg2ea_anpd 6 6 0 fmovem_reg2ea_n 25 25 3 fscc_dn 18 21 6 fscc_anp_z 21 24 6 fscc_anp_nz 22 25 6 fscc_mem 20 23 6 fdbcc_true 20 24 8 fdbcc_done 24 32 10 fdbcc_jump 20 26 10 ftrapcc_excep 39 47 ? ftrapcc_nop 18 22 6 ftrapccw_excep 41 45 ? ftrapccw_nop 20 23 6 ftrapccl_excep 43 52 ? ftrapccl_nop 22 27 6 fbcc_jump 20 23 7 fbccw_nop 18 19 6 fbccl_nop 18 21 6 fsave_null 16 18 12 fsave_idle 52 54 12 frestore_null 21 22 13 frestore_idle 57 58 13
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.