📄 opcodes.h
字号:
/* * opcodes - opcode execution module definition * * Copyright (C) 1999-2006 David I. Bell * * Calc is open software; you can redistribute it and/or modify it under * the terms of the version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * Calc is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * Public License for more details. * * A copy of version 2.1 of the GNU Lesser General Public License is * distributed with calc under the filename COPYING-LGPL. You should have * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * @(#) $Revision: 29.7 $ * @(#) $Id: opcodes.h,v 29.7 2006/06/25 20:33:26 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $ * * Under source code control: 1990/02/15 01:48:35 * File existed as early as: before 1990 * * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ */#if !defined(__OPCODES_H__)#define __OPCODES_H__#if defined(CALC_SRC) /* if we are building from the calc source tree */# include "win32dll.h"#else# include <calc/win32dll.h>#endif/* * Opcodes */#define OP_NOP 0L /* no operation */#define OP_LOCALADDR 1L /* load address of local variable */#define OP_GLOBALADDR 2L /* load address of global variable */#define OP_PARAMADDR 3L /* load address of paramater variable */#define OP_LOCALVALUE 4L /* load value of local variable */#define OP_GLOBALVALUE 5L /* load value of global variable */#define OP_PARAMVALUE 6L /* load value of paramater variable */#define OP_NUMBER 7L /* load constant real numeric value */#define OP_INDEXADDR 8L /* load array index address */#define OP_PRINTRESULT 9L /* print result of top-level expression */#define OP_ASSIGN 10L /* assign value to variable */#define OP_ADD 11L /* add top two values */#define OP_SUB 12L /* subtract top two values */#define OP_MUL 13L /* multiply top two values */#define OP_DIV 14L /* divide top two values */#define OP_MOD 15L /* take mod of top two values */#define OP_SAVE 16L /* save value for later use */#define OP_NEGATE 17L /* negate top value */#define OP_INVERT 18L /* invert top value */#define OP_INT 19L /* take integer part of top value */#define OP_FRAC 20L /* take fraction part of top value */#define OP_NUMERATOR 21L /* take numerator of top value */#define OP_DENOMINATOR 22L /* take denominator of top value */#define OP_DUPLICATE 23L /* duplicate top value on stack */#define OP_POP 24L /* pop top value from stack */#define OP_RETURN 25L /* return value of function */#define OP_JUMPZ 26L /* jump if top value is zero */#define OP_JUMPNZ 27L /* jump if top value is nonzero */#define OP_JUMP 28L /* jump unconditionally */#define OP_USERCALL 29L /* call a user-defined function */#define OP_GETVALUE 30L /* convert address to value */#define OP_EQ 31L /* test top two elements for equality */#define OP_NE 32L /* test top two elements for inequality */#define OP_LE 33L /* test top two elements for <= */#define OP_GE 34L /* test top two elements for >= */#define OP_LT 35L /* test top two elements for < */#define OP_GT 36L /* test top two elements for > */#define OP_PREINC 37L /* add one to variable (++x) */#define OP_PREDEC 38L /* subtract one from variable (--x) */#define OP_POSTINC 39L /* add one to variable (x++) */#define OP_POSTDEC 40L /* subtract one from variable (x--) */#define OP_DEBUG 41L /* debugging point */#define OP_PRINT 42L /* print value */#define OP_ASSIGNPOP 43L /* assign to variable and remove it */#define OP_ZERO 44L /* put zero on the stack */#define OP_ONE 45L /* put one on the stack */#define OP_PRINTEOL 46L /* print end of line */#define OP_PRINTSPACE 47L /* print a space */#define OP_PRINTSTRING 48L /* print constant string */#define OP_DUPVALUE 49L /* duplicate value of top value */#define OP_OLDVALUE 50L /* old calculation value */#define OP_QUO 51L /* integer quotient of top two values */#define OP_POWER 52L /* number raised to a power */#define OP_QUIT 53L /* quit program */#define OP_CALL 54L /* call built-in routine */#define OP_GETEPSILON 55L /* get allowed error for calculations */#define OP_AND 56L /* arithmetic and */#define OP_OR 57L /* arithmetic or */#define OP_NOT 58L /* logical not */#define OP_ABS 59L /* absolute value */#define OP_SGN 60L /* sign of number */#define OP_ISINT 61L /* whether top value is integer */#define OP_CONDORJUMP 62L /* conditional or jump */#define OP_CONDANDJUMP 63L /* conditional and jump */#define OP_SQUARE 64L /* square top value */#define OP_STRING 65L /* load constant string value */#define OP_ISNUM 66L /* whether top value is a number */#define OP_UNDEF 67L /* load undefined value on stack */#define OP_ISNULL 68L /* whether variable is the null value */#define OP_ARGVALUE 69L /* load value of argument (parameter) n */#define OP_MATCREATE 70L /* create matrix */#define OP_ISMAT 71L /* whether variable is a matrix */#define OP_ISSTR 72L /* whether variable is a string */#define OP_GETCONFIG 73L /* get value of configuration parameter */#define OP_LEFTSHIFT 74L /* left shift of integer */#define OP_RIGHTSHIFT 75L /* right shift of integer */#define OP_CASEJUMP 76L /* test case and jump if not matched */#define OP_ISODD 77L /* whether value is an odd integer */#define OP_ISEVEN 78L /* whether value is even integer */#define OP_FIADDR 79L /* 'fast index' matrix value address */#define OP_FIVALUE 80L /* 'fast index' matrix value */#define OP_ISREAL 81L /* test value for real number */#define OP_IMAGINARY 82L /* load imaginary numeric constant */#define OP_RE 83L /* real part of complex number */#define OP_IM 84L /* imaginary part of complex number */#define OP_CONJUGATE 85L /* complex conjugate of complex number */#define OP_OBJCREATE 86L /* create object */#define OP_ISOBJ 87L /* whether value is an object */#define OP_NORM 88L /* norm of value (square of abs) */#define OP_ELEMADDR 89L /* address of element of object */#define OP_ELEMVALUE 90L /* value of element of object */#define OP_ISTYPE 91L /* whether two values are the same type */#define OP_SCALE 92L /* scale value by a power of two */#define OP_ISLIST 93L /* whether value is a list */#define OP_SWAP 94L /* swap values of two variables */#define OP_ISSIMPLE 95L /* whether value is a simple type */#define OP_CMP 96L /* compare values returning -1, 0, or 1 */#define OP_SETCONFIG 97L /* set configuration parameter */#define OP_SETEPSILON 98L /* set allowed error for calculations */#define OP_ISFILE 99L /* whether value is a file */#define OP_ISASSOC 100L /* whether value is an association */#define OP_INITSTATIC 101L /* once only code for static initialization */#define OP_ELEMINIT 102L /* assign element of matrix or object */#define OP_ISCONFIG 103L /* whether value is a configuration state */#define OP_ISHASH 104L /* whether value is a hash state */#define OP_ISRAND 105L /* whether value is additive 55 random state */#define OP_ISRANDOM 106L /* whether value is a Blum random state */#define OP_SHOW 107L /* show data about current state */#define OP_INITFILL 108L /* fill new matrix with copies of a value */#define OP_ASSIGNBACK 109L /* assign in reverse order */#define OP_TEST 110L /* test whether value is "nonzero" */#define OP_ISDEFINED 111L /* whether string names a function */#define OP_ISOBJTYPE 112L /* whether string names an object type */#define OP_ISBLK 113L /* whether value is a block */#define OP_PTR 114L /* octet pointer */#define OP_DEREF 115L /* dereference an octet pointer */#define OP_ISOCTET 116L /* whether value is an octet */#define OP_ISPTR 117L /* whether value is a pointer */#define OP_SAVEVAL 118L /* activate updating */#define OP_LINKS 119L /* return links for numbers and strings */#define OP_BIT 120L /* whether specified bit is set */#define OP_COMP 121L /* complement value */#define OP_XOR 122L /* xor (~) of values */#define OP_HIGHBIT 123L /* index of high bit of value */#define OP_LOWBIT 124L /* index of low bit of value */#define OP_CONTENT 125L /* value returned by unary # */#define OP_HASHOP 126L /* binary # */#define OP_BACKSLASH 127L /* unary backslash */#define OP_SETMINUS 128L /* binary backslash */#define OP_PLUS 129L /* unary + */#define OP_JUMPNN 130L /* jump if top value is non-null */#define OP_ABORT 131L /* abort operation */#define MAX_OPCODE 131L /* highest legal opcode *//* * external declarations */extern DLL char *funcname; /* function being executed */extern DLL long funcline; /* function line being executed */#endif /* !__OPCODES_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -