mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-09-25 23:55:28 +08:00
I learned how to spell PSEUDO
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5010 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
+204
-204
@@ -1,204 +1,204 @@
|
||||
/***********************************************************************
|
||||
* podefs.h
|
||||
* Logical P-code operation code definitions
|
||||
*
|
||||
* Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* 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. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "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
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS 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.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#ifndef __PODEFS_H
|
||||
#define __PODEFS_H
|
||||
|
||||
/* These definitions represent logical operations as needed by the
|
||||
* the compiler. The specific INSN generation layer must interpret
|
||||
* these requests as is appropriate to the supported INSNS.
|
||||
*/
|
||||
|
||||
enum pcode_e
|
||||
{
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
* OPCODES WITH NO ARGUMENTS
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Program control (No stack arguments) */
|
||||
|
||||
opNOP = 0,
|
||||
|
||||
/* Arithmetic & logical & and integer conversions (One stack argument) */
|
||||
|
||||
opNEG, opABS, opINC, opDEC, opNOT,
|
||||
|
||||
/* Arithmetic & logical (Two stack arguments) */
|
||||
|
||||
opADD, opSUB, opMUL, opDIV, opMOD, opSLL, opSRL, opSRA, opOR, opAND,
|
||||
|
||||
/* Comparisons (One stack argument) */
|
||||
|
||||
opEQUZ, opNEQZ, opLTZ, opGTEZ, opGTZ, opLTEZ,
|
||||
|
||||
/* Comparisons (Two stack arguments) */
|
||||
|
||||
opEQU, opNEQ, opLT, opGTE, opGT, opLTE,
|
||||
opBIT,
|
||||
|
||||
/* Load Immediate */
|
||||
|
||||
opLDI, opLDIB, opLDIM,
|
||||
|
||||
/* Store Immediate */
|
||||
|
||||
opSTI, opSTIB, opSTIM,
|
||||
|
||||
/* Data stack */
|
||||
|
||||
opDUP, opPUSHS, opPOPS,
|
||||
|
||||
/* Program control (No stack arguments)
|
||||
* Behavior:
|
||||
* Pop return address
|
||||
* Pop saved base register (BR)
|
||||
* Discard saved base address
|
||||
* Set program counter (PC) to return address
|
||||
*/
|
||||
|
||||
opRET,
|
||||
|
||||
/* System Functions (No stack arguments) */
|
||||
|
||||
opEND,
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
** OPCODES WITH ONE ARGUMENT
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Floating point operations: arg = FP op-code */
|
||||
|
||||
opFLOAT,
|
||||
|
||||
/* Program control: arg = unsigned label (One stack argument) */
|
||||
|
||||
opJEQUZ, opJNEQZ,
|
||||
|
||||
/* Program control: arg = unsigned label (no stack arguments) */
|
||||
|
||||
opJMP,
|
||||
|
||||
/* Program control: arg = unsigned label (One stack argument) */
|
||||
|
||||
opJEQU, opJNEQ, opJLT, opJGTE, opJGT, opJLTE,
|
||||
|
||||
/* Load: arg = unsigned base offset */
|
||||
|
||||
opLD, opLDH, opLDB, opLDM,
|
||||
|
||||
/* Store: arg = unsigned base offset */
|
||||
|
||||
opST, opSTB, opSTM,
|
||||
|
||||
/* Load Indexed: arg = unsigned base offset */
|
||||
|
||||
opLDX, opLDXB, opLDXM,
|
||||
|
||||
/* Store Indexed: arg16 = unsigned base offset */
|
||||
|
||||
opSTX, opSTXB, opSTXM,
|
||||
|
||||
/* Load address relative to stack base: arg = unsigned offset */
|
||||
|
||||
opLA,
|
||||
|
||||
/* Load absolute stack address: arg = RODATA offset (No stack arguments) */
|
||||
|
||||
opLAC,
|
||||
|
||||
/* Data stack: arg = 16 bit signed data (no stack arguments) */
|
||||
|
||||
opPUSH, opINDS,
|
||||
|
||||
/* Load address relative to stack base: arg1 = unsigned offset, TOS=index */
|
||||
|
||||
opLAX,
|
||||
|
||||
/* System functions: arg = 16-bit library call identifier */
|
||||
|
||||
opLIB,
|
||||
|
||||
/* Program control: arg = unsigned label (no stack arguments) */
|
||||
|
||||
opLABEL,
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
** OPCODES WITH TWO ARGUMENTS
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Program Control: arg1 = level; arg2 = unsigned label */
|
||||
|
||||
opPCAL,
|
||||
|
||||
/* Load: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opLDS, opLDSH, opLDSB, opLDSM,
|
||||
|
||||
/* Store: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opSTS, opSTSB, opSTSM,
|
||||
|
||||
/* Load Indexed: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opLDSX, opLDSXB, opLDSXM,
|
||||
|
||||
/* Store Indexed: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opSTSX, opSTSXB, opSTSXM,
|
||||
|
||||
/* FOR LAS/LASX arg1 = level; arg2 = signed frame offset
|
||||
* (no stack arguments)
|
||||
*/
|
||||
|
||||
opLAS, opLASX,
|
||||
|
||||
/* System calls:
|
||||
* For SYSIO: arg1 = file number; arg2 = sub-function code
|
||||
*/
|
||||
|
||||
opSYSIO,
|
||||
|
||||
/* Psuedo-operations:
|
||||
* For LINE: arg1 = file number; arg2 = line number
|
||||
*/
|
||||
|
||||
opLINE,
|
||||
|
||||
NUM_OPCODES
|
||||
};
|
||||
|
||||
#endif /* __PODEFS_H */
|
||||
/***********************************************************************
|
||||
* podefs.h
|
||||
* Logical P-code operation code definitions
|
||||
*
|
||||
* Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* 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. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "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
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS 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.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#ifndef __PODEFS_H
|
||||
#define __PODEFS_H
|
||||
|
||||
/* These definitions represent logical operations as needed by the
|
||||
* the compiler. The specific INSN generation layer must interpret
|
||||
* these requests as is appropriate to the supported INSNS.
|
||||
*/
|
||||
|
||||
enum pcode_e
|
||||
{
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
* OPCODES WITH NO ARGUMENTS
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Program control (No stack arguments) */
|
||||
|
||||
opNOP = 0,
|
||||
|
||||
/* Arithmetic & logical & and integer conversions (One stack argument) */
|
||||
|
||||
opNEG, opABS, opINC, opDEC, opNOT,
|
||||
|
||||
/* Arithmetic & logical (Two stack arguments) */
|
||||
|
||||
opADD, opSUB, opMUL, opDIV, opMOD, opSLL, opSRL, opSRA, opOR, opAND,
|
||||
|
||||
/* Comparisons (One stack argument) */
|
||||
|
||||
opEQUZ, opNEQZ, opLTZ, opGTEZ, opGTZ, opLTEZ,
|
||||
|
||||
/* Comparisons (Two stack arguments) */
|
||||
|
||||
opEQU, opNEQ, opLT, opGTE, opGT, opLTE,
|
||||
opBIT,
|
||||
|
||||
/* Load Immediate */
|
||||
|
||||
opLDI, opLDIB, opLDIM,
|
||||
|
||||
/* Store Immediate */
|
||||
|
||||
opSTI, opSTIB, opSTIM,
|
||||
|
||||
/* Data stack */
|
||||
|
||||
opDUP, opPUSHS, opPOPS,
|
||||
|
||||
/* Program control (No stack arguments)
|
||||
* Behavior:
|
||||
* Pop return address
|
||||
* Pop saved base register (BR)
|
||||
* Discard saved base address
|
||||
* Set program counter (PC) to return address
|
||||
*/
|
||||
|
||||
opRET,
|
||||
|
||||
/* System Functions (No stack arguments) */
|
||||
|
||||
opEND,
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
** OPCODES WITH ONE ARGUMENT
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Floating point operations: arg = FP op-code */
|
||||
|
||||
opFLOAT,
|
||||
|
||||
/* Program control: arg = unsigned label (One stack argument) */
|
||||
|
||||
opJEQUZ, opJNEQZ,
|
||||
|
||||
/* Program control: arg = unsigned label (no stack arguments) */
|
||||
|
||||
opJMP,
|
||||
|
||||
/* Program control: arg = unsigned label (One stack argument) */
|
||||
|
||||
opJEQU, opJNEQ, opJLT, opJGTE, opJGT, opJLTE,
|
||||
|
||||
/* Load: arg = unsigned base offset */
|
||||
|
||||
opLD, opLDH, opLDB, opLDM,
|
||||
|
||||
/* Store: arg = unsigned base offset */
|
||||
|
||||
opST, opSTB, opSTM,
|
||||
|
||||
/* Load Indexed: arg = unsigned base offset */
|
||||
|
||||
opLDX, opLDXB, opLDXM,
|
||||
|
||||
/* Store Indexed: arg16 = unsigned base offset */
|
||||
|
||||
opSTX, opSTXB, opSTXM,
|
||||
|
||||
/* Load address relative to stack base: arg = unsigned offset */
|
||||
|
||||
opLA,
|
||||
|
||||
/* Load absolute stack address: arg = RODATA offset (No stack arguments) */
|
||||
|
||||
opLAC,
|
||||
|
||||
/* Data stack: arg = 16 bit signed data (no stack arguments) */
|
||||
|
||||
opPUSH, opINDS,
|
||||
|
||||
/* Load address relative to stack base: arg1 = unsigned offset, TOS=index */
|
||||
|
||||
opLAX,
|
||||
|
||||
/* System functions: arg = 16-bit library call identifier */
|
||||
|
||||
opLIB,
|
||||
|
||||
/* Program control: arg = unsigned label (no stack arguments) */
|
||||
|
||||
opLABEL,
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
** OPCODES WITH TWO ARGUMENTS
|
||||
**-------------------------------------------------------------------**/
|
||||
|
||||
/* Program Control: arg1 = level; arg2 = unsigned label */
|
||||
|
||||
opPCAL,
|
||||
|
||||
/* Load: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opLDS, opLDSH, opLDSB, opLDSM,
|
||||
|
||||
/* Store: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opSTS, opSTSB, opSTSM,
|
||||
|
||||
/* Load Indexed: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opLDSX, opLDSXB, opLDSXM,
|
||||
|
||||
/* Store Indexed: arg1 = level; arg2 = signed frame offset */
|
||||
|
||||
opSTSX, opSTSXB, opSTSXM,
|
||||
|
||||
/* FOR LAS/LASX arg1 = level; arg2 = signed frame offset
|
||||
* (no stack arguments)
|
||||
*/
|
||||
|
||||
opLAS, opLASX,
|
||||
|
||||
/* System calls:
|
||||
* For SYSIO: arg1 = file number; arg2 = sub-function code
|
||||
*/
|
||||
|
||||
opSYSIO,
|
||||
|
||||
/* Pseudo-operations:
|
||||
* For LINE: arg1 = file number; arg2 = line number
|
||||
*/
|
||||
|
||||
opLINE,
|
||||
|
||||
NUM_OPCODES
|
||||
};
|
||||
|
||||
#endif /* __PODEFS_H */
|
||||
|
||||
Reference in New Issue
Block a user