; This is a emacs lisp programm. ; To execute open this file within a emacs editor. ; Then go to the end of this file and press: ctrl-x ctrl-e ; You probable have to append the root path of this file to your ; emacs load-path env-variable. This can be best done inside your ; .emacs config file: i.e: ; (setq load-path (append (list nil \"/home/eiselekd/vhdl_0.8/soft/cdef\") load-path)))")) (progn (load "cdef_lib_b1") (load "cdef_lib_c1") (load "cdef_lib_g1") (load "cdef_lib_l1") (load "cdef_lib_m1") (load "cdef_lib_i1") (load "cdef_lib_h1") (load "cdef_lib_pc") (load "cdef_lib_pv") ) (progn (if (load "cdef_lib_b1") ()(message "You have to set your elisp load-path variable, i.e: (setq load-path (append (list nil \"/home/eiselekd/vhdl_0.8/soft/cdef\") load-path)))")) (load "cdef_lib_c1") (load "cdef_lib_g1") (load "cdef_lib_l1") (load "cdef_lib_m1") (load "cdef_lib_i1") (load "cdef_lib_h1") (load "cdef_lib_pc") (load "cdef_lib_pv") (setq insn-help '( (ss "subx,addx,abcd: source select '0'=dn '1'='(an)'") (dr "destination register") (sr "source register") (de "destination effective address") (se "source effective address") (eE "source/destination efficient address") (DA "sub/add/a: Date register/Address register") (AD "Date register/Address register") (Q "quick immidiate address") (D "data register") (A "address register") (SD "and/or:dest/src select") (f "direction: '0'=right '1'=left") (sh_ir "sl/sr: '0'=immidiate '1'=register") (al "arithmetic/logical shieft: '00'=arithmetic '01'=logical" '10'=logical rox" '11'=logical rot") (rq "destinationregister/quick immidiate data") (bit_sl "bchg/bclr/bset/btst: select") (dm "destination ea mode") (addsub "addq/subq: '0'=addq") (subadd "add/sub/x: '1'=addq") (imm "iop '011'=add '001'=and '000'=or '101'=eor '110'=cmpi '100'=bit") (tv "trap vector") (jmp "jmp/jsr '1'=jmp") (bra "bra/bsr '0'=bra") (P "Displacement") (cc "condition code") (unlnk "unlnk/link '1' = unlnk") ) ) ;; list order 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ;; list order 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ;; 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 ;---- adders ---- (setq insn_abcd '( 1 subadd 0 0 dr dr dr 1 0 0 0 0 ss sr sr sr udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_add '( 1 subadd 0 1 DA DA DA 1 S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_addx '( 1 subadd 0 1 dr dr dr 1 S S 0 0 ss sr sr sr udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_addq '( 0 1 0 1 Q Q Q addsub S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- logical ---- (setq insn_and '( 1 1 0 0 D D D SD S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_or '( 1 0 0 0 D D D SD S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_eor '( 1 0 1 1 sr sr sr 1 S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- logical/arithmetic shieft ---- (setq insn_sh '( 1 1 1 0 rq rq rq f S S sh_ir al al D D D udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_shm '( 1 1 1 0 0 al al f 1 1 eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- single ops ---- (setq insn_chk '( 0 1 0 0 D D D 1 1 0 eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_clr '( 0 1 0 0 0 0 1 0 S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_neg '( 0 1 0 0 0 1 0 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_negx '( 0 1 0 0 0 0 0 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_not '( 0 1 0 0 0 1 1 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- cmp ---- (setq insn_cmp '( 1 0 1 1 D D D 0 1 1 se se se se se se udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_cmpa '( 1 0 1 1 A A A S 1 1 se se se se se se udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_cmpm '( 1 0 1 1 dr dr dr 1 S S 0 0 1 sr sr sr udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- arithmetic shieft ---- (setq insn_bitr '( 0 0 0 0 sr sr sr 1 bit_sl bit_sl eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- memory ---- (setq insn_mov '( 0 0 S S dr dr dr dm dm dm eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- immidiates ---- ;(setq insn_addi '( 0 0 0 0 0 1 1 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;(setq insn_andi '( 0 0 0 0 0 0 1 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;(setq insn_ori '( 0 0 0 0 0 0 0 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;(setq insn_eori '( 0 0 0 0 1 0 1 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;(setq insn_cmpi '( 0 0 0 0 1 1 0 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;(setq insn_biti '( 0 0 0 0 1 0 0 0 bit_sl bit_sl eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_im '( 0 0 0 0 iop iop iop 0 S S eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- ctrl ---- (setq insn_jmp '( 0 1 0 0 1 1 1 0 1 jmp eE eE eE eE eE eE udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_bcc '( 0 1 1 0 cc cc cc bra P P P P P P P P udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_dbcc '( 0 1 0 1 cc cc cc cc 1 1 0 0 1 D D D udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_dbcc '( 0 1 0 0 1 0 0 0 0 1 0 0 0 D D D udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_tas '( 0 1 0 0 1 0 1 0 1 1 de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_tst '( 0 1 0 0 1 0 1 0 S S de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_lnk '( 0 1 0 0 1 1 1 0 0 1 0 1 unlnk A A A udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_pea '( 0 1 0 0 1 0 0 0 0 1 de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_lea '( 0 1 0 0 A A A 1 1 1 de de de de de de udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_ext '( 0 1 0 0 1 0 0 0 1 S 0 0 0 D D D udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;todo: check exg (setq insn_exg '( 1 1 0 0 DA DA DA 1 x x x x SD AD AD AD udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) ;---- spec ---- (setq insn_nop '( 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_rst '( 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_rte '( 0 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_rtr '( 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_rts '( 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_stop '( 0 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_trap '( 0 1 0 0 1 1 1 0 0 1 0 0 tv tv tv tv udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn_trapv '( 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 0 udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef udef )) (setq insn '( insn_abcd insn_add insn_addx insn_addq insn_and insn_or insn_eor insn_sh insn_shm insn_chk insn_clr insn_neg insn_negx insn_not insn_cmp insn_cmpa insn_cmpm insn_bitr insn_mov insn_im insn_jmp insn_bcc insn_dbcc insn_tas insn_tst insn_lnk insn_pea insn_lea insn_ext insn_exg insn_nop insn_rst insn_rte insn_rtr insn_rts insn_stop insn_trap insn_trapv )) (setq h (create-decoder-setenc (or-insn-set insn) insn 0)) ;(insert (print-decoder h 0)) ;(insert (print-decoder-c-pre h)) ;(insert (print-decoder-c-structs insn insn-help)) (insert (print-decoder-vhd-pre h)) )