115 lines
7.4 KiB
C++
115 lines
7.4 KiB
C++
|
|
#ifndef __ins_hpp
|
|
#define __ins_hpp
|
|
|
|
extern const instruc_t Instructions[];
|
|
|
|
enum nameNum ENUM_SIZE(uint16)
|
|
{
|
|
fr_null = 0, // null instruction
|
|
|
|
fr_add, // add word data of source register / 4-bit immediate data to destination register
|
|
fr_add2, // add 4-bit immediate data to destination register
|
|
fr_addc, // add word data of source register and carry bit to destination register
|
|
fr_addn, // add word data of source register / immediate data to destination register
|
|
fr_addn2, // add immediate data to destination register
|
|
fr_sub, // subtract word data in source register from destination register
|
|
fr_subc, // subtract word data in source register and carry bit from destination register
|
|
fr_subn, // subtract word data in source register from destination register
|
|
fr_cmp, // compare word / immediate data in source register and destination register
|
|
fr_cmp2, // compare immediate data and destination register
|
|
fr_and, // and word data of source register to destination register / data in memory
|
|
fr_andh, // and half-word data of source register to data in memory
|
|
fr_andb, // and byte data of source register to data in memory
|
|
fr_or, // or word data of source register to destination register / data in memory
|
|
fr_orh, // or half-word data of source register to data in memory
|
|
fr_orb, // or byte data of source register to data in memory
|
|
fr_eor, // exclusive or word data of source register to destination register / data in memory
|
|
fr_eorh, // exclusive or half-word data of source register to data in memory
|
|
fr_eorb, // exclusive or byte data of source register to data in memory
|
|
fr_bandl, // and 4-bit immediate data to lower 4 bits of byte data in memory
|
|
fr_bandh, // and 4-bit immediate data to higher 4 bits of byte data in memory
|
|
fr_borl, // or 4-bit immediate data to lower 4 bits of byte data in memory
|
|
fr_borh, // or 4-bit immediate data to higher 4 bits of byte data in memory
|
|
fr_beorl, // eor 4-bit immediate data to lower 4 bits of byte data in memory
|
|
fr_beorh, // eor 4-bit immediate data to higher 4 bits of byte data in memory
|
|
fr_btstl, // test lower 4 bits of byte data in memory
|
|
fr_btsth, // test higher 4 bits of byte data in memory
|
|
fr_mul, // multiply word data
|
|
fr_mulu, // multiply unsigned word data
|
|
fr_mulh, // multiply half-word data
|
|
fr_muluh, // multiply unsigned half-word data
|
|
fr_div0s, // initial setting up for signed division
|
|
fr_div0u, // initial setting up for unsigned division
|
|
fr_div1, // main process of division
|
|
fr_div2, // correction when remainder is 0
|
|
fr_div3, // correction when remainder is 0
|
|
fr_div4s, // correction answer for signed division
|
|
fr_lsl, // logical shift to the left direction
|
|
fr_lsl2, // logical shift to the left direction
|
|
fr_lsr, // logical shift to the right direction
|
|
fr_lsr2, // logical shift to the right direction
|
|
fr_asr, // arithmetic shift to the right direction
|
|
fr_asr2, // arithmetic shift to the right direction
|
|
fr_ldi_32, // load immediate 32-bit data to destination register
|
|
fr_ldi_20, // load immediate 20-bit data to destination register
|
|
fr_ldi_8, // load immediate 8-bit data to destination register
|
|
fr_ld, // load word data in memory to register / program status register
|
|
fr_lduh, // load half-word data in memory to register
|
|
fr_ldub, // load byte data in memory to register
|
|
fr_st, // store word data in register / program status register to memory
|
|
fr_sth, // store half-word data in register to memory
|
|
fr_stb, // store byte data in register to memory
|
|
fr_mov, // move word data in source register / program status register to destination register / program status register
|
|
fr_jmp, // jump
|
|
fr_call, // call subroutine
|
|
fr_ret, // return from subroutine
|
|
fr_int, // software interrupt
|
|
fr_inte, // software interrupt for emulator
|
|
fr_reti, // return from interrupt
|
|
fr_bra, // branch relative if condition satisfied
|
|
fr_bno, // branch relative if condition satisfied
|
|
fr_beq, // branch relative if condition satisfied
|
|
fr_bne, // branch relative if condition satisfied
|
|
fr_bc, // branch relative if condition satisfied
|
|
fr_bnc, // branch relative if condition satisfied
|
|
fr_bn, // branch relative if condition satisfied
|
|
fr_bp, // branch relative if condition satisfied
|
|
fr_bv, // branch relative if condition satisfied
|
|
fr_bnv, // branch relative if condition satisfied
|
|
fr_blt, // branch relative if condition satisfied
|
|
fr_bge, // branch relative if condition satisfied
|
|
fr_ble, // branch relative if condition satisfied
|
|
fr_bgt, // branch relative if condition satisfied
|
|
fr_bls, // branch relative if condition satisfied
|
|
fr_bhi, // branch relative if condition satisfied
|
|
fr_dmov, // move word data from register / address to register / address
|
|
fr_dmovh, // move half-word data from register / address to register / address
|
|
fr_dmovb, // move byte data from register / address to register / address
|
|
fr_ldres, // load word data in memory to resource
|
|
fr_stres, // store word data in resource to memory
|
|
fr_copop, // coprocessor operation
|
|
fr_copld, // load 32-bit data from register to coprocessor register
|
|
fr_copst, // store 32-bit data from coprocessor register to register
|
|
fr_copsv, // save 32-bit data from coprocessor register to register
|
|
fr_nop, // no operation
|
|
fr_andccr, // and condition code register and immediate data
|
|
fr_orccr, // or condition code register and immediate data
|
|
fr_stilm, // set immediate data to interrupt level mask register
|
|
fr_addsp, // add stack pointer and immediate data
|
|
fr_extsb, // sign extend from byte data to word data
|
|
fr_extub, // unsign extend from byte data to word data
|
|
fr_extsh, // sign extend from byte data to word data
|
|
fr_extuh, // unsigned extend from byte data to word data
|
|
fr_ldm0, // load multiple registers
|
|
fr_ldm1, // load multiple registers
|
|
fr_stm0, // store multiple registers
|
|
fr_stm1, // store multiple registers
|
|
fr_enter, // enter function
|
|
fr_leave, // leave function
|
|
fr_xchb, // exchange byte data
|
|
fr_last // last instruction
|
|
};
|
|
|
|
#endif /* __ins_hpp */
|