Files
2021-10-31 21:20:46 +02:00

135 lines
3.4 KiB
C++

// $Id: ins.hpp,v 1.6 2000/11/06 22:11:16 jeremy Exp $
//
// Copyright (c) 2000 Jeremy Cooper. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. All advertising materials mentioning features or use of this software
// must display the following acknowledgement:
// This product includes software developed by Jeremy Cooper.
// 4. The name of the author may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// IDA TMS320C1X processor module.
// Software representation of TMS320C1X instructions.
//
#ifndef _IDP_TMS320C1X_INS_H
#define _IDP_TMS320C1X_INS_H
enum nameNum
{
// Accumulator Memory Reference Instructions
I__FIRST = 0,
I_ABS = 0,
I_ADD,
I_ADDH,
I_ADDS,
I_AND,
I_LAC,
I_LACK,
I_OR,
I_SACH,
I_SACL,
I_SUB,
I_SUBC,
I_SUBH,
I_SUBS,
I_XOR,
I_ZAC,
I_ZALH,
I_ZALS,
// Auxiliary Register and Data Page Pointer Instructions
I_LAR,
I_LARK,
I_LARP,
I_LDP,
I_LDPK,
I_MAR,
I_SAR,
// T Register, P Register, and Multiply Instructions
I_APAC,
I_LT,
I_LTA,
I_LTD,
I_MPY,
I_MPYK,
I_PAC,
I_SPAC,
// Branch/Call Instructions
I_B,
I_BANZ,
I_BGEZ,
I_BGZ,
I_BIOZ,
I_BLEZ,
I_BLZ,
I_BNZ,
I_BV,
I_BZ,
I_CALA,
I_CALL,
I_RET,
// Control Instructions
I_DINT,
I_EINT,
I_LST,
I_NOP,
I_POP,
I_PUSH,
I_ROVM,
I_SOVM,
I_SST,
// I/O and Data Memory Instructions
I_DMOV,
I_IN,
I_OUT,
I_TBLR,
I_TBLW,
I__LAST
};
//
// TMS320C1X register phrases.
// These are used to represent instruction operands that are not either
// immediate values or registers.
//
enum regPhrase
{
IPH_AR, // Dereference current aux register
IPH_AR_INCR, // Dereference current aux register and post-increment
IPH_AR_DECR, // Dereference current aux register and post-decrement
};
//
// Auxilliary instruction information.
// This is information that this processor module can add to the instruction,
// only to be examined and consumed by the processor module itself.
//
#define IX_DATA_PAGE_KNOWN 0x8000 // The current data page is known
#define IX_DATA_PAGE(x) ((x) & 0x1) // Retrieves the known data page
extern const instruc_t Instructions[];
#endif // _IDP_TMS320C1X_INS_H