1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: opcodes.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
34 #include "sbintern.hxx"
40 // Ein Opcode ist entweder 1, 3 oder 5 Bytes lang, je nach numerischen
41 // Wert des Opcodes (s.u.).
44 // Alle Opcodes ohne Operanden
50 // die folgenden Operatoren sind genauso angeordnet
51 // wie der enum SbxVarOp
52 _EXP
, _MUL
, _DIV
, _MOD
, _PLUS
, _MINUS
, _NEG
,
53 _EQ
, _NE
, _LT
, _GT
, _LE
, _GE
,
54 _IDIV
, _AND
, _OR
, _XOR
, _EQV
, _IMP
, _NOT
,
59 _ARGC
, // neuen Argv einrichten
60 _ARGV
, // TOS ==> aktueller Argv
61 _INPUT
, // Input ==> TOS
62 _LINPUT
, // Line Input ==> TOS
64 _SET
, // Speichern Objekt TOS ==> TOS-1
65 _PUT
, // TOS ==> TOS-1
66 _PUTC
, // TOS ==> TOS-1, dann ReadOnly
69 _REDIMP
, // REDIM PRESERVE
70 _ERASE
, // TOS loeschen
72 _STOP
, // Programmende
73 _INITFOR
, // FOR-Variable initialisieren
74 _NEXT
, // FOR-Variable inkrementieren
76 _ENDCASE
, // Ende CASE
77 _STDERROR
, // Standard-Fehlerbehandlung
78 _NOERROR
, // keine Fehlerbehandlung
79 _LEAVE
, // UP verlassen
81 _CHANNEL
, // TOS = Kanalnummer
83 _PRINTF
, // print TOS in field
85 _RENAME
, // Rename Tos+1 to Tos
86 _PROMPT
, // TOS = Prompt for Input
87 _RESTART
, // Restartpunkt definieren
88 _CHAN0
, // I/O-Kanal 0
90 _EMPTY
, // Leeren Ausdruck auf Stack
91 _ERROR
, // TOS = Fehlercode
92 _LSET
, // Speichern Objekt TOS ==> TOS-1
93 _RSET
, // Speichern Objekt TOS ==> TOS-1
94 _REDIMP_ERASE
, // Copies array to be later used by REDIM PRESERVE before erasing it
96 _VBASET
, // VBA-like Set
97 _ERASE_CLEAR
, // Erase array and clear variable
98 _ARRAYACCESS
, // Assign parameters to TOS and get value, used for array of arrays
101 // Alle Opcodes mit einem Operanden
103 _NUMBER
= 0x40, // Laden einer numerischen Konstanten (+ID)
105 SbOP1_START
= _NUMBER
,
107 _SCONST
, // Laden einer Stringkonstanten (+ID)
108 _CONST
, // Immediate Load (+Wert)
109 _ARGN
, // Speichern eines named Args in Argv (+StringID)
110 _PAD
, // String auf feste Laenge bringen (+Laenge)
112 _JUMP
, // Sprung (+Target)
113 _JUMPT
, // TOS auswerten, bedingter Sprung (+Target)
114 _JUMPF
, // TOS auswerten, bedingter Sprung (+Target)
115 _ONJUMP
, // TOS auswerten, Sprung in JUMP-Tabelle (+MaxVal)
116 _GOSUB
, // UP-Aufruf (+Target)
117 _RETURN
, // UP-Return (+0 oder Target)
118 _TESTFOR
, // FOR-Variable testen, inkrementieren (+Endlabel)
119 _CASETO
, // Tos+1 <= Case <= Tos, 2xremove (+Target)
120 _ERRHDL
, // Fehler-Handler (+Offset)
121 _RESUME
, // Resume nach Fehlern (+0 or 1 or Label)
123 _CLOSE
, // (+Kanal/0)
126 _SETCLASS
, // Set + Klassennamen testen (+StringId)
127 _TESTCLASS
, // Check TOS class (+StringId)
128 _LIB
, // Libnamen fuer Declare-Procs setzen (+StringId)
129 _BASED
, // TOS wird um BASE erhoeht, BASE davor gepusht (+base)
130 // Typanpassung im Argv
131 _ARGTYP
, // Letzten Parameter in Argv konvertieren (+Typ)
132 _VBASETCLASS
, // VBA-like Set
135 // Alle Opcodes mit zwei Operanden
137 _RTL
= 0x80, // Laden aus RTL (+StringID+Typ)
141 _FIND
, // Laden (+StringID+Typ)
142 _ELEM
, // Laden Element (+StringID+Typ)
143 _PARAM
, // Parameter (+Offset+Typ)
145 _CALL
, // DECLARE-Methode rufen (+StringID+Typ)
146 _CALLC
, // Cdecl-DECLARE-Methode rufen (+StringID+Typ)
147 _CASEIS
, // Case-Test (+Test-Opcode+True-Target)
149 _STMNT
, // Beginn eines Statements (+Line+Col)
151 _OPEN
, // (+SvStreamFlags+Flags)
153 _LOCAL
, // Lokale Variable definieren (+StringID+Typ)
154 _PUBLIC
, // Modulglobale Variable (+StringID+Typ)
155 _GLOBAL
, // Globale Variable definieren, public-Anweisung (+StringID+Typ)
156 _CREATE
, // Objekt kreieren (+StringId+StringID)
157 _STATIC
, // Statische Variabl (+StringID+Typ) JSM
158 _TCREATE
, // User Defined Objekt kreieren
159 _DCREATE
, // Objekt-Array kreieren (+StringId+StringID)
160 _GLOBAL_P
, // Globale Variable definieren, die beim Neustart von Basic
161 // nicht ueberschrieben wird, P=PERSIST (+StringID+Typ)
162 _FIND_G
, // Sucht globale Variable mit Spezialbehandlung wegen _GLOBAL_P
163 _DCREATE_REDIMP
, // Objekt-Array redimensionieren (+StringId+StringID)
164 _FIND_CM
, // Search inside a class module (CM) to enable global search in time
165 _PUBLIC_P
, // Module global Variable (persisted between calls)(+StringID+Typ)
166 _FIND_STATIC
, // local static var lookup (+StringID+Typ)