summaryrefslogtreecommitdiff
path: root/misc/pascal/include/podefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'misc/pascal/include/podefs.h')
-rw-r--r--misc/pascal/include/podefs.h408
1 files changed, 204 insertions, 204 deletions
diff --git a/misc/pascal/include/podefs.h b/misc/pascal/include/podefs.h
index 25d0042b6..9d372b402 100644
--- a/misc/pascal/include/podefs.h
+++ b/misc/pascal/include/podefs.h
@@ -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 */