getting closer

This commit is contained in:
Ash Wolf
2023-01-11 22:29:53 +00:00
parent aec1b8dddc
commit 0bec4f557a
133 changed files with 10146 additions and 3285 deletions

View File

@@ -8,298 +8,591 @@
#define CError_FATAL(line) do { CError_Internal(__FILE__, line); } while (0)
enum {
// "illegal character constant"
CErrorStr100 = 100,
// "illegal string constant"
CErrorStr101 = 101,
// "unexpected end of file"
CErrorStr102 = 102,
// "unterminated comment"
CErrorStr103 = 103,
// "undefined preprocessor directive"
CErrorStr104 = 104,
// "illegal token"
CErrorStr105 = 105,
// "string too long"
CErrorStr106 = 106,
// "identifier expected"
CErrorStr107 = 107,
// "macro '%u' redefined"
CErrorStr108 = 108,
// "illegal argument list"
CErrorStr109 = 109,
// "too many macro arguments"
CErrorStr110 = 110,
// "macro(s) too complex"
CErrorStr111 = 111,
// "unexpected end of line"
CErrorStr112 = 112,
// "end of line expected"
CErrorStr113 = 113,
// "'(' expected"
CErrorStr114 = 114,
// "')' expected"
CErrorStr115 = 115,
// "',' expected"
CErrorStr116 = 116,
// "preprocessor syntax error"
CErrorStr117 = 117,
// "preceding #if is missing"
CErrorStr118 = 118,
// "unterminated #if / macro"
CErrorStr119 = 119,
// "unexpected token"
CErrorStr120 = 120,
// "declaration syntax error"
CErrorStr121 = 121,
// "identifier '%u' redeclared"
CErrorStr122 = 122,
// "';' expected"
CErrorStr123 = 123,
// "illegal constant expression"
CErrorStr124 = 124,
// "']' expected"
CErrorStr125 = 125,
// "illegal use of 'void'"
CErrorStr126 = 126,
// "illegal function definition"
CErrorStr127 = 127,
// "illegal function return type"
CErrorStr128 = 128,
// "illegal array definition"
CErrorStr129 = 129,
// "'}' expected"
CErrorStr130 = 130,
// "illegal struct/union/enum/class definition"
CErrorStr131 = 131,
// "struct/union/enum/class tag '%u' redefined"
CErrorStr132 = 132,
// "struct/union/class member '%u' redefined"
CErrorStr133 = 133,
// "declarator expected"
CErrorStr134 = 134,
// "'{' expected"
CErrorStr135 = 135,
// "illegal use of incomplete struct/union/class '%t'"
CErrorStr136 = 136,
// "struct/union/class size exceeds 32K"
CErrorStr137 = 137,
// "illegal bitfield declaration"
CErrorStr138 = 138,
// "division by 0"
CErrorStr139 = 139,
// "undefined identifier '%u'"
CErrorStr140 = 140,
// "expression syntax error"
CErrorStr141 = 141,
// "not an lvalue"
CErrorStr142 = 142,
// "illegal operation"
CErrorStr143 = 143,
// "illegal operand"
CErrorStr144 = 144,
// "data type is incomplete"
CErrorStr145 = 145,
// "illegal type"
CErrorStr146 = 146,
// "too many initializers"
CErrorStr147 = 147,
// "pointer/array required"
CErrorStr148 = 148,
// "not a struct/union/class"
CErrorStr149 = 149,
// "'%u' is not a struct/union/class member"
CErrorStr150 = 150,
// "the file '%u' cannot be opened"
CErrorStr151 = 151,
// "illegal instruction for this processor"
CErrorStr152 = 152,
// "illegal operands for this processor"
CErrorStr153 = 153,
// "number is out of range"
CErrorStr154 = 154,
// "illegal addressing mode"
CErrorStr155 = 155,
// "illegal data size"
CErrorStr156 = 156,
// "illegal register list"
CErrorStr157 = 157,
// "branch out of range"
CErrorStr158 = 158,
// "undefined label '%u'"
CErrorStr159 = 159,
// "reference to label '%u' is out of range"
CErrorStr160 = 160,
// "call of non-function"
CErrorStr161 = 161,
// "function call does not match prototype"
CErrorStr162 = 162,
// "illegal use of register variable"
CErrorStr163 = 163,
// "illegal type cast"
CErrorStr164 = 164,
// "function already has a stackframe"
CErrorStr165 = 165,
// "function has no initialized stackframe"
CErrorStr166 = 166,
// "value is not stored in register"
CErrorStr167 = 167,
// "function nesting too complex"
CErrorStr168 = 168,
// "illegal use of keyword"
CErrorStr169 = 169,
// "':' expected"
CErrorStr170 = 170,
// "label '%u' redefined"
CErrorStr171 = 171,
// "case constant defined more than once"
CErrorStr172 = 172,
// "default label defined more than once"
CErrorStr173 = 173,
// "illegal initialization"
CErrorStr174 = 174,
// "illegal use of inline function"
CErrorStr175 = 175,
// "illegal type qualifier(s)"
CErrorStr176 = 176,
// "illegal storage class"
CErrorStr177 = 177,
// "function has no prototype"
CErrorStr178 = 178,
// "illegal assignment to constant"
CErrorStr179 = 179,
// "illegal use of precompiled header"
CErrorStr180 = 180,
// "illegal data in precompiled header"
CErrorStr181 = 181,
// "variable / argument '%u' is not used in function"
CErrorStr182 = 182,
// "illegal use of direct parameters"
CErrorStr183 = 183,
// "return value expected"
CErrorStr184 = 184,
// "variable '%u' is not initialized before being used"
CErrorStr185 = 185,
// "illegal #pragma"
CErrorStr186 = 186,
// "illegal access to protected/private member"
CErrorStr187 = 187,
// "ambiguous access to class/struct/union member"
CErrorStr188 = 188,
// "illegal use of 'this'"
CErrorStr189 = 189,
// "unimplemented C++ feature"
CErrorStr190 = 190,
// "illegal use of 'HandleObject'"
CErrorStr191 = 191,
// "illegal access qualifier"
CErrorStr192 = 192,
// "illegal 'operator' declaration"
CErrorStr193 = 193,
// "illegal use of abstract class ('%o')"
CErrorStr194 = 194,
// "illegal use of pure function"
CErrorStr195 = 195,
// "illegal '&' reference"
CErrorStr196 = 196,
// "illegal function overloading"
CErrorStr197 = 197,
// "illegal operator overloading"
CErrorStr198 = 198,
// "ambiguous access to overloaded function "
CErrorStr199 = 199,
// "illegal access/using declaration"
CErrorStr200 = 200,
// "illegal 'friend' declaration"
CErrorStr201 = 201,
// "illegal 'inline' function definition"
CErrorStr202 = 202,
// "class has no default constructor"
CErrorStr203 = 203,
// "illegal operator"
CErrorStr204 = 204,
// "illegal default argument(s)"
CErrorStr205 = 205,
// "possible unwanted ';'"
CErrorStr206 = 206,
// "possible unwanted assignment"
CErrorStr207 = 207,
// "possible unwanted compare"
CErrorStr208 = 208,
// "illegal implicit conversion from '%t' to\n'%t'"
CErrorStr209 = 209,
// "local data >32k"
CErrorStr210 = 210,
// "illegal jump past initializer"
CErrorStr211 = 211,
// "illegal ctor initializer"
CErrorStr212 = 212,
// "cannot construct %t's base class '%t'"
CErrorStr213 = 213,
// "cannot construct %t's direct member '%u'"
CErrorStr214 = 214,
// "#if nesting overflow"
CErrorStr215 = 215,
// "illegal empty declaration"
CErrorStr216 = 216,
// "illegal implicit enum conversion from '%t' to\n'%t'"
CErrorStr217 = 217,
// "illegal use of #pragma parameter"
CErrorStr218 = 218,
// "virtual functions cannot be pascal functions"
CErrorStr219 = 219,
// "illegal implicit const/volatile pointer conversion from '%t' to\n'%t'"
CErrorStr220 = 220,
// "illegal use of non-static member"
CErrorStr221 = 221,
// "illegal precompiled header version"
CErrorStr222 = 222,
// "illegal precompiled header compiler flags or target"
CErrorStr223 = 223,
// "'const' or '&' variable needs initializer"
CErrorStr224 = 224,
// "'%o' hides inherited virtual function '%o'"
CErrorStr225 = 225,
// "pascal function cannot be overloaded"
CErrorStr226 = 226,
// "derived function differs from virtual base function in return type only"
CErrorStr227 = 227,
// "non-const '&' reference initialized to temporary"
CErrorStr228 = 228,
// "illegal template declaration"
CErrorStr229 = 229,
// "'<' expected"
CErrorStr230 = 230,
// "'>' expected"
CErrorStr231 = 231,
// "illegal template argument(s)"
CErrorStr232 = 232,
// "cannot instantiate '%o'"
CErrorStr233 = 233,
// "template redefined"
CErrorStr234 = 234,
// "template parameter mismatch"
CErrorStr235 = 235,
// "cannot pass const/volatile data object to non-const/volatile member function"
CErrorStr236 = 236,
// "preceding '#pragma push' is missing"
CErrorStr237 = 237,
// "illegal explicit template instantiation"
CErrorStr238 = 238,
// "illegal X::X(X) copy constructor"
CErrorStr239 = 239,
// "function defined 'inline' after being called"
CErrorStr240 = 240,
// "illegal constructor/destructor declaration"
CErrorStr241 = 241,
// "'catch' expected"
CErrorStr242 = 242,
// "#include nesting overflow"
CErrorStr243 = 243,
// "cannot convert\n'%t' to\n'%t'"
CErrorStr244 = 244,
// "type mismatch\n'%t' and\n'%t'"
CErrorStr245 = 245,
// "class type expected"
CErrorStr246 = 246,
// "illegal explicit conversion from '%t' to\n'%t'"
CErrorStr247 = 247,
// "function call '*' does not match"
CErrorStr248 = 248,
// "identifier '%u' redeclared\nwas declared as: '%t'\nnow declared as: '%t'"
CErrorStr249 = 249,
// "cannot throw class with ambiguous base class ('%u')"
CErrorStr250 = 250,
// "class '%t': '%o' has more than one final overrider:\n'%o'\nand '%o'"
CErrorStr251 = 251,
// "exception handling option is disabled"
CErrorStr252 = 252,
// "cannot delete pointer to const"
CErrorStr253 = 253,
// "cannot destroy const object"
CErrorStr254 = 254,
// "const member '%u' is not initialized"
CErrorStr255 = 255,
// "'&' reference member '%u' is not initialized"
CErrorStr256 = 256,
// "RTTI option is disabled"
CErrorStr257 = 257,
// "constness casted away"
CErrorStr258 = 258,
// "illegal const/volatile '&' reference initialization"
CErrorStr259 = 259,
// "inconsistent linkage: 'extern' object redeclared as 'static'"
CErrorStr260 = 260,
// "unknown assembler instruction mnemonic"
CErrorStr261 = 261,
// "local data > 224 bytes"
CErrorStr262 = 262,
// "'%u' could not be assigned to a register"
CErrorStr263 = 263,
// "illegal exception specification"
CErrorStr264 = 264,
// "exception specification list mismatch"
CErrorStr265 = 265,
// "the parameter(s) of the '%n' function must be immediate value(s)"
CErrorStr266 = 266,
// "SOM classes can only inherit from other SOM based classes"
CErrorStr267 = 267,
// "SOM classes inhertiance must be virtual"
CErrorStr268 = 268,
// "SOM class data members must be private"
CErrorStr269 = 269,
// "illegal SOM function overload '%o'"
CErrorStr270 = 270,
// "no static members allowed in SOM classes"
CErrorStr271 = 271,
// "no parameters allowed in SOM class constructors"
CErrorStr272 = 272,
// "illegal SOM function parameters or return type"
CErrorStr273 = 273,
// "SOM runtime function '%u' not defined (should be defined in somobj.hh)"
CErrorStr274 = 274,
// "SOM runtime function '%u' has unexpected type"
CErrorStr275 = 275,
// "'%u' is not a SOM class"
CErrorStr276 = 276,
// "illegal use of #pragma outside of SOM class definition"
CErrorStr277 = 277,
// "introduced method '%o' is not specified in release order list"
CErrorStr278 = 278,
// "SOM class access qualification only allowed to direct parent or own class"
CErrorStr279 = 279,
// "SOM class must have one non-inline member function"
CErrorStr280 = 280,
// "SOM type '%u' undefined"
CErrorStr281 = 281,
// "new SOM callstyle method '%o' must have explicit 'Environment *' parameter"
CErrorStr282 = 282,
// "functions cannot return SOM classes"
CErrorStr283 = 283,
// "functions cannot have SOM class arguments"
CErrorStr284 = 284,
// "assignment is not supported for SOM classes"
CErrorStr285 = 285,
// "sizeof() is not supported for SOM classes"
CErrorStr286 = 286,
// "SOM classes cannot be class members"
CErrorStr287 = 287,
// "global SOM class objects are not supported"
CErrorStr288 = 288,
// "SOM class arrays are not supported"
CErrorStr289 = 289,
// "'pointer to member' is not supported for SOM classes"
CErrorStr290 = 290,
// "SOM class has no release order list"
CErrorStr291 = 291,
// "'%u' is not an Objective-C class"
CErrorStr292 = 292,
// "method '%m' redeclared"
CErrorStr293 = 293,
// "undefined method '%m'"
CErrorStr294 = 294,
// "class '%u' redeclared"
CErrorStr295 = 295,
// "class '%u' redefined"
CErrorStr296 = 296,
// "Objective-C type '%u' is undefined (should be defined in objc.h)"
CErrorStr297 = 297,
// "Objective-C type '%u' has unexpected type"
CErrorStr298 = 298,
// "method '%m' not defined"
CErrorStr299 = 299,
// "method '%m' redefined"
CErrorStr300 = 300,
// "illegal use of 'self'"
CErrorStr301 = 301,
// "illegal use of 'super'"
CErrorStr302 = 302,
// "illegal message receiver"
CErrorStr303 = 303,
// "receiver cannot handle this message"
CErrorStr304 = 304,
// "ambiguous message selector\nused: '%m'\nalso had: '%m'"
CErrorStr305 = 305,
// "unknown message selector"
CErrorStr306 = 306,
// "illegal use of Objective-C object"
CErrorStr307 = 307,
// "protocol '%u' redefined"
CErrorStr308 = 308,
// "protocol '%u' is undefined"
CErrorStr309 = 309,
// "protocol '%u' is already in protocol list"
CErrorStr310 = 310,
// "category '%u' redefined"
CErrorStr311 = 311,
// "category '%u' is undefined"
CErrorStr312 = 312,
// "illegal use of '%u'"
CErrorStr313 = 313,
// "template too complex or recursive"
CErrorStr314 = 314,
// "illegal return value in void/constructor/destructor function"
CErrorStr315 = 315,
// "assigning a non-int numeric value to an unprototyped function"
CErrorStr316 = 316,
// "implicit arithmetic conversion from '%t' to '%t'"
CErrorStr317 = 317,
// "preprocessor #error directive"
CErrorStr318 = 318,
// "ambiguous access to name found '%u' and '%u'"
CErrorStr319 = 319,
// "illegal namespace"
CErrorStr320 = 320,
// "illegal use of namespace name"
CErrorStr321 = 321,
// "illegal name overloading"
CErrorStr322 = 322,
// "instance variable list does not match @interface"
CErrorStr323 = 323,
// "protocol list does not match @interface"
CErrorStr324 = 324,
// "super class does not match @interface"
CErrorStr325 = 325,
// "function result is a pointer/reference to an automatic variable"
CErrorStr326 = 326,
// "cannot allocate initialized objects in the scratchpad"
CErrorStr327 = 327,
// "illegal class member access"
CErrorStr328 = 328,
// "data object '%o' redefined"
CErrorStr329 = 329,
// "illegal access to local variable from other function"
CErrorStr330 = 330,
// "illegal implicit member pointer conversion"
CErrorStr331 = 331,
// "typename redefined"
CErrorStr332 = 332,
// "object '%o' redefined"
CErrorStr333 = 333,
// "'main' not defined as external 'int main()' function"
CErrorStr334 = 334,
// "illegal explicit template specialization"
CErrorStr335 = 335,
// "name has not been declared in namespace/class"
CErrorStr336 = 336,
// "preprocessor #warning directive"
CErrorStr337 = 337,
// "illegal use of asm inline function"
CErrorStr338 = 338,
// "illegal use of C++ feature in EC++"
CErrorStr339 = 339,
// "illegal use template argument dependent type 'T::%u'"
CErrorStr340 = 340,
// "illegal use of alloca() in function argument"
CErrorStr341 = 341,
// "inline function call '%o' not inlined"
CErrorStr342 = 342,
// "inconsistent use of 'class' and 'struct' keywords"
CErrorStr343 = 343,
// "illegal partial specialization"
CErrorStr344 = 344,
// "illegal partial specialization argument list"
CErrorStr345 = 345,
// "ambiguous use of partial specialization"
CErrorStr346 = 346,
// "local classes shall not have member templates"
CErrorStr347 = 347,
// "illegal template argument dependent expression"
CErrorStr348 = 348,
// "implicit 'int' is no longer supported in C++"
CErrorStr349 = 349,
// "%i pad byte(s) inserted after data member '%u'"
CErrorStr350 = 350,
// "pure function '%o' is not virtual"
CErrorStr351 = 351,
// "illegal virtual function '%o' in 'union'"
CErrorStr352 = 352,
// "cannot pass 'void' or 'function' parameter"
CErrorStr353 = 353,
// "illegal static const member '%u' initialization"
CErrorStr354 = 354,
// "'typename' is missing in template argument dependent qualified type"
CErrorStr355 = 355,
// "more than one expression in non-class type conversion"
CErrorStr356 = 356,
// "template non-type argument objects shall have external linkage"
CErrorStr357 = 357,
// "illegal inline assembly operand: %u"
CErrorStr358 = 358,
// "illegal or unsupported __attribute__"
CErrorStr359 = 359,
// "cannot create object file '%f'"
CErrorStr360 = 360,
// "error writing to object file '%f'"
CErrorStr361 = 361,
// "printf-family format string doesn't match arguments"
CErrorStr362 = 362,
// "scanf-family format string doesn't match arguments"
CErrorStr363 = 363,
// "__alignof__() is not supported for SOM classes"
CErrorStr364 = 364,
// "illegal macro argument name '%u'"
CErrorStr365 = 365,
// "case has an empty range of values"
CErrorStr366 = 366,
// "'long long' switch() is not supported"
CErrorStr367 = 367,
// "'long long' case range is not supported"
CErrorStr368 = 368,
// "expression has no side effect"
CErrorStr369 = 369,
// "result of function call is not used"
CErrorStr370 = 370,
// "illegal non-type template argument"
CErrorStr371 = 371,
// "illegal use of abstract class ('%t')"
CErrorStr372 = 372,
// "illegal use of 'template' prefix"
CErrorStr373 = 373,
// "template parameter/argument list mismatch"
CErrorStr374 = 374,
// "cannot find matching deallocation function for '%t'"
CErrorStr375 = 375,
// "illegal operand '%t'"
CErrorStr376 = 376,
// "illegal operands '%t' %u '%t'"
CErrorStr377 = 377,
// "illegal use of default template-argument"
CErrorStr378 = 378,
// "illegal UUID syntax"
CErrorStr379 = 379,
// "__uuidof() is not supported for SOM classes"
CErrorStr380 = 380,
// "illegal access from '%t' to protected/private member '%o'"
CErrorStr381 = 381,
// "integral type is not large enough to hold pointer"
CErrorStr382 = 382,
// "unknown x86 assembler instruction mnemonic"
CErrorStr383 = 383,
// "illegal use of const/volatile function qualifier sequence"
CErrorStr384 = 384,
// "illegal optimization level for this limited version of CodeWarrior"
CErrorStr385 = 385,
// "no UUID defined for type '%t'"
CErrorStr386 = 386,
// "using implicit copy assigment for class with const or reference member ('%t')"
CErrorStr387 = 387,
// "unimplemented assembler instruction/directive"
CErrorStr388 = 388,
// "override of dllimport function '%u' only has application scope"
CErrorStr389 = 389,
// "illegal combination of operands in inline statement at line %i"
CErrorStr390 = 390,
// "illegal operand in inline statement at line %i"
CErrorStr391 = 391,
// "function call '*' is ambiguous"
CErrorStr392 = 392,
CErrorStrMAX = 393
};
@@ -316,12 +609,12 @@ extern char cerror_synchdata[32];
extern short cerror_synchoffset;
extern int CError_BreakPointcount;
extern void CError_Init();
extern void CError_Init(void);
extern void CError_SetErrorToken(TStreamElement *token);
extern void CError_SetNullErrorToken();
extern void CError_SetNullErrorToken(void);
extern void CError_LockErrorPos(TStreamElement *token, TStreamElement **saved);
extern void CError_UnlockErrorPos(TStreamElement **saved);
extern void CError_ResetErrorSkip();
extern void CError_ResetErrorSkip(void);
extern void CError_GetErrorString(char *buf, short code);
extern void CError_BufferInit(CErrorBuffer *eb, char *buf, SInt32 bufSize);
extern void CError_BufferGrow(CErrorBuffer *eb, SInt32 amount);
@@ -360,10 +653,10 @@ extern void CError_AbstractClassError(TypeClass *tclass);
extern void CError_Warning(int code, ...);
extern void CError_BreakPoint(const char *a, const char *b);
extern void CError_Internal(char *filename, int line);
extern void CError_ExpressionTooComplex();
extern void CError_NoMem();
extern void CError_UserBreak();
extern void CError_CannotOpen();
extern void CError_ExpressionTooComplex(void);
extern void CError_NoMem(void);
extern void CError_UserBreak(void);
extern void CError_CannotOpen(void);
extern void CError_QualifierCheck(UInt32 qual);
#endif

View File

@@ -115,7 +115,7 @@ typedef struct CI_Action {
union {
struct {
FileOffsetInfo fileoffset;
TStream stream;
TokenStream stream;
TypeClass *tclass;
} inlinefunc;
struct {
@@ -151,7 +151,7 @@ extern SInt16 CInline_GetStatementNumber(Statement *first, Statement *stmt);
extern void CInline_PackIFunctionData(CI_FuncData *packed, Statement *stmt, Object *object);
extern void CInline_UnpackIFunctionData(Object *object, CI_FuncData *packed, Statement *firstStmt);
extern void CInline_AddDefaultFunctionAction(Object *object);
extern void CInline_AddInlineFunctionAction(Object *object, TypeClass *tclass, FileOffsetInfo *fileoffset, TStream *stream, Boolean flag);
extern void CInline_AddInlineFunctionAction(Object *object, TypeClass *tclass, FileOffsetInfo *fileoffset, TokenStream *stream, Boolean flag);
extern void CInline_AddMemberFunctionAction(Object *object, TemplClass *templ, TemplClassInst *inst, TemplateMember *tmemb);
extern void CInline_AddTemplateFunctionAction(Object *object, TemplateFunction *func, TemplFuncInstance *inst);
extern void CInline_ObjectAddrRef(Object *object);

View File

@@ -40,7 +40,7 @@ inline void CInt64_Extend32(CInt64 *n) { // assumed name
n->hi = (n->lo >> 31) ? 0xFFFFFFFF : 0;
}
extern void CInt64_Init();
extern void CInt64_Init(void);
extern CInt64 CInt64_Not(CInt64 input);
extern CInt64 CInt64_Inv(CInt64 input);
extern CInt64 CInt64_Add(CInt64 lhs, CInt64 rhs);

View File

@@ -60,7 +60,7 @@ extern Boolean CMach_FloatIsNegOne(Float fval);
extern void CMach_InitFloatMem(Type *type, Float val, void *mem);
extern void CMach_PrintFloat(char *buf, Float val);
extern void CMach_PragmaParams(void);
extern void CMach_AdjustFuntionArgs(void);
extern void CMach_AdjustFuntionArgs(/* unknown args */);
extern SInt16 CMach_GetStructAlign(TypeStruct *tstruct);
extern SInt16 CMach_GetClassAlign(TypeClass *tclass);
extern SInt16 CMach_GetTypeAlign(Type *type);

View File

@@ -30,7 +30,7 @@ extern void CObjC_ParseInterface(void);
extern void CObjC_ParseImplementation(void);
extern void CObjC_ParseProtocol(void);
extern void CObjC_ParseClassDeclaration(void);
extern void *CObjC_ParseIdentifier();
extern void *CObjC_ParseIdentifier(/* unknown args */);
extern ENode *CObjC_MakeSendMsgExpr(ENode *objexpr, TypeClass *tclass, ObjCNamedArg *namedArgs, ENodeList *unnamedArgs, UInt8 calltype, Boolean isSuper);
extern ENode *CObjC_ParseMessageExpression(void);
extern ENode *CObjC_ParseEncodeExpression(void);

View File

@@ -3,7 +3,9 @@
#include "compiler/common.h"
extern void SetupPrecompiler(void);
extern char *precomp_target_str;
extern void SetupPrecompiler(Boolean isPrecompiling);
extern void CleanupPrecompiler(void);
extern void PreComp_StaticData(Object *obj, const void *data, OLinkList *links, SInt32 size);
extern void PrecompilerWrite(void);

View File

@@ -15,7 +15,7 @@ struct Macro {
unsigned short xC;
Boolean is_special;
Boolean xF;
HashNameNode *names[1];
HashNameNode *names[0];
};
typedef struct TokenStack {
char *pos;
@@ -25,7 +25,7 @@ typedef struct TokenStack {
} TokenStack;
//#define OPT_OFFSET(optname) ((short) (((char *) (&copts.optname)) - ((char *) &copts)))
#define OPT_OFFSET(optname) ((short) ( &((COpts *)0)->optname ))
#define OPT_OFFSET(optname) ((UInt16) ( &((COpts *)0)->optname ))
enum {
OPT_OFFSET_MASK = 0x1FFF,
OPT_FLAG_2000 = 0x2000,
@@ -89,11 +89,11 @@ extern void CPrep_UnLex(void);
// this is actually an arg of `const PrepState *`
extern void CPrep_TokenStreamSetCurState(SInt32 *state);
typedef void (*CPrepStreamFuncPtr)(TStreamElement *);
extern void CPrep_StreamGetBlock(TStream *stream, CPrepStreamFuncPtr func, int arg);
extern void CPrep_StreamGetSemicolon(TStream *stream, CPrepStreamFuncPtr func);
extern void CPrep_StreamGetTemplate(TStream *stream, CPrepStreamFuncPtr func);
extern void CPrep_StreamInsert(TStream *stream, SInt32 *state);
extern void CPrep_StreamRemove(TStream *stream, SInt32 *state);
extern void CPrep_StreamGetBlock(TokenStream *stream, CPrepStreamFuncPtr func, int arg);
extern void CPrep_StreamGetSemicolon(TokenStream *stream, CPrepStreamFuncPtr func);
extern void CPrep_StreamGetTemplate(TokenStream *stream, CPrepStreamFuncPtr func);
extern void CPrep_StreamInsert(TokenStream *stream, SInt32 *state);
extern void CPrep_StreamRemove(TokenStream *stream, SInt32 *state);
extern void CPrep_RemoveTokens(SInt32 amount);
extern void CPrep_TokenStreamFlush(void);
extern TStreamElement *CPrep_CurStreamElement(void);

View File

@@ -97,7 +97,7 @@ extern NameSpaceObjectList *CScope_GetLocalObject(NameSpace *nspace, HashNameNod
extern BClassList *CScope_GetClassAccessPath(BClassList *list, TypeClass *tclass);
extern Boolean CScope_ParseMemberName(TypeClass *tclass, CScopeParseResult *result, Boolean flag);
extern void CScope_AddClassUsingDeclaration(TypeClass *tclass, TypeClass *tclass2, HashNameNode *name, AccessType access);
extern void CScope_ParseUsingDeclaration(NameSpace *nspace, short access, Boolean flag);
extern void CScope_ParseUsingDeclaration(NameSpace *nspace, AccessType access, Boolean flag);
extern void CScope_ParseNameSpaceAlias(HashNameNode *name);
extern void CScope_ParseUsingDirective(NameSpace *nspace);

View File

@@ -13,7 +13,7 @@ extern void CTemplClass_RegisterObjectInit(TemplClass *tmclass, Object *object,
extern void CTemplClass_RegisterObjectDef(TemplClass *tmclass, ObjBase *refobj);
extern void CTemplClass_CompleteClass(TemplClass *templ, DeclE *de);
extern TemplClassInst *CTemplClass_GetInstance(TemplClass *tmclass, TemplArg *args1, TemplArg *args2);
extern TemplateMember *CTemplClass_DefineMember(TemplClass *tmclass, Object *object, FileOffsetInfo *foi, TStream *stream);
extern TemplateMember *CTemplClass_DefineMember(TemplClass *tmclass, Object *object, FileOffsetInfo *foi, TokenStream *stream);
extern void CTemplClass_ParsePartialSpecialization(DeclFucker *what_is_this, TemplParam *params, short mode, SInt32 *offset);
extern void CTemplClass_ParseClass(DeclFucker *what_is_this, TemplParam *params, short mode, SInt32 *offset);
extern Boolean CTemplClass_FindPartialTemplate(TemplArg *args, TemplClass **resultTempl, TemplArg **resultArgs);

View File

@@ -49,7 +49,7 @@ struct GList {
extern long hash_name_id;
extern HashNameNode **name_hash_nodes;
extern void (*GListErrorProc)();
extern void (*GListErrorProc)(void);
extern short InitGList(GList *gl, SInt32 size);
extern void FreeGList(GList *gl);
@@ -79,34 +79,34 @@ extern HashNameNode *GetHashNameNodeHash2(const char *name, SInt16 hashval);
extern HashNameNode *GetHashNameNodeExport(const char *name);
extern SInt32 GetHashNameNodeExportID(HashNameNode *node);
extern HashNameNode *GetHashNameNodeByID(SInt32 id);
extern void NameHashExportReset();
extern void NameHashExportReset(void);
extern void NameHashWriteNameTable(GList *glist);
extern void NameHashWriteTargetEndianNameTable(GList *glist);
extern void InitNameHash();
extern void InitNameHash(void);
typedef void (*heaperror_t)();
typedef void (*heaperror_t)(void);
extern SInt32 CTool_TotalHeapSize();
extern SInt32 CTool_TotalHeapSize(void);
extern void CTool_GetHeapInfo(HeapInfo *result, unsigned char heapID);
extern short initheaps(heaperror_t heaperrorproc);
extern short initgheap(heaperror_t heaperrorproc);
extern heaperror_t getheaperror();
extern heaperror_t getheaperror(void);
extern void setheaperror(heaperror_t heaperrorproc);
extern void releaseheaps();
extern void releasegheap();
extern void releaseoheap();
extern void releaseheaps(void);
extern void releasegheap(void);
extern void releaseoheap(void);
extern void *galloc(SInt32 s);
extern void *lalloc(SInt32 s);
extern void *aalloc(SInt32 s);
extern void *oalloc(SInt32 s);
extern void *balloc(SInt32 s);
extern void locklheap();
extern void unlocklheap();
extern void freelheap();
extern void freeaheap();
extern void freeoheap();
extern void freebheap();
extern void locklheap(void);
extern void unlocklheap(void);
extern void freelheap(void);
extern void freeaheap(void);
extern void freeoheap(void);
extern void freebheap(void);
extern char *ScanHex(char *string, UInt32 *result, Boolean *overflow);
extern char *ScanOct(char *string, UInt32 *result, Boolean *overflow);

View File

@@ -47,7 +47,7 @@ extern void ObjGen_SrcBreakName(HashNameNode *name, SInt32 fileModDate, Boolean
extern GList *ObjGen_GetSectionGList(MachOSection *section);
extern MachOSection *ObjGen_DeclareFunction(Object *object);
extern MachOSection *ObjGen_DeclareCode(Object *object);
extern MachOSection *ObjGen_DeclareMachSection();
extern MachOSection *ObjGen_DeclareMachSection(/* unknown args */);
extern void ObjGen_Relocate(MachOSection *section, SInt32 offset, SInt32 relocID, RelocType relocType, MWReloc mwRelType);
extern void ObjGen_RelocateObj(MachOSection *section, SInt32 offset, Object *object, MWReloc mwRelType);
extern SInt32 ObjGen_DeclareLiteralString(UInt32 len, char *data, SInt32 align);
@@ -68,7 +68,7 @@ extern void ObjGen_DeclareSymInfo(void);
extern void ObjGen_Line(UInt32 line, UInt32 offset);
extern void ObjGen_OutputDebugInfo(Object *funcobj);
extern SInt32 ObjGen_OutputStab(SymbolData *symbol, SInt32 strIdx);
extern void ObjGen_SetSectName();
extern void ObjGen_SetSectName(/* unknown args */);
extern void ObjGen_DeclareInitFunction(Object *funcobj);
extern Boolean ObjGen_IsExported(Object *object);

View File

@@ -61,15 +61,15 @@ extern void combine(Operand *opA, Operand *opB, short output_reg, Operand *opOut
extern void coerce_to_addressable(Operand *op);
extern void Coerce_to_register(Operand *op, Type *type, short output_reg);
extern void coerce_to_register_pair(Operand *op, Type *type, short output_reg, short output_regHi);
extern void Coerce_to_fp_register(Operand *op, Type *tint, short output_reg);
extern void Coerce_to_v_register(Operand *op, Type *tstruct, short output_reg);
extern void Coerce_to_fp_register(Operand *op, Type *type, short output_reg);
extern void Coerce_to_v_register(Operand *op, Type *type, short output_reg);
extern void store(short reg, Operand *op, Type *type);
extern void store_pair(short reg, short regHi, Operand *op, Type *type);
extern void store_fp(short reg, Operand *op, Type *tint);
extern void store_v(short reg, Operand *op, Type *tstruct);
extern void extend32(Operand *op, Type *type, short output_reg);
extern void extend64(Operand *op, Type *type, short output_reg, short output_regHi);
extern void load_floating_constant(short reg, Type *type, double *data);
extern void load_floating_constant(short reg, Type *type, Float *data);
extern void convert_integer_to_floating(Operand *op, Boolean is_single, short output_reg);
extern void convert_unsigned_to_floating(Operand *op, Boolean is_single, short output_reg);
extern void convert_floating_to_integer(Operand *op, short output_reg);

View File

@@ -8,11 +8,11 @@
#pragma options align=mac68k
#endif
#define FLAG_SET_T(flags) (((flags) & (fPCodeFlag1 | fPCodeFlag8)) ? (flags) : 0)
#define FLAG_SET_F(flags) (((flags) & (fPCodeFlag1 | fPCodeFlag8)) ? 0 : (flags))
#define FLAG_SET_T(flags) (((flags) & (fIsBranch | fIsCall)) ? (flags) : 0)
#define FLAG_SET_F(flags) (((flags) & (fIsBranch | fIsCall)) ? 0 : (flags))
#define PCODE_FLAG_SET_T(pcode) (((pcode)->flags & (fPCodeFlag1 | fPCodeFlag8)) ? (pcode)->flags : 0)
#define PCODE_FLAG_SET_F(pcode) (((pcode)->flags & (fPCodeFlag1 | fPCodeFlag8)) ? 0 : (pcode)->flags)
#define PCODE_FLAG_SET_T(pcode) (((pcode)->flags & (fIsBranch | fIsCall)) ? (pcode)->flags : 0)
#define PCODE_FLAG_SET_F(pcode) (((pcode)->flags & (fIsBranch | fIsCall)) ? 0 : (pcode)->flags)
enum {
EffectRead = 1,
@@ -22,16 +22,6 @@ enum {
Effect40 = 0x40 // spilled register?
};
/*typedef enum {
PCOp_REGISTER,
PCOp_SYSREG,
PCOp_IMMEDIATE,
PCOp_MEMORY,
PCOp_LABEL,
PCOp_LABELDIFF,
PCOp_PLACEHOLDEROPERAND
} PCOpKind;*/
typedef enum {
RefType_0,
RefType_1, // like D, but 32-bit?
@@ -158,12 +148,11 @@ struct PCodeBlock {
/* PCode Flags */
enum {
fPCodeFlag1 = 1, // some kinds of branches
fPCodeFlag2 = 2, // read from memory
fPCodeFlag4 = 4, // write to memory
fPCodeFlag8 = 8, // other kinds of branches
fPCodeFlag10 = 0x10, // moves
fPCodeFlag20 = 0x20, // indexed operations
fIsBranch = 1,
fIsRead = 2, // read from memory
fIsWrite = 4, // write to memory
fIsCall = 8,
fIsMove = 0x10, // moves register (mcrf, mr, fmr, vmr, vmrp)
// Always valid
fIsConst = 0x40,
fIsVolatile = 0x80,
@@ -174,36 +163,39 @@ enum {
fPCodeFlag1000 = 0x1000, // ?
fCommutative = 0x2000,
fIsCSE = 0x4000,
fPCodeFlag8000 = 0x8000,
fIsArgInit = 0x8000, // instruction that stores varargs from GPRs to the stack
fPCodeFlag20000 = 0x20000, // some kinda load?
fPCodeFlag40000 = 0x40000, // some kinda store?
// Set 1 (branches) only
fLink = 0x1000000,
fCanLink = 0x2000000, // is capable of being a link branch
fBranchNotTaken = 0x4000000,
fBranchTaken = 0x8000000,
fAbsolute = 0x10000000,
fCanBeAbsolute = 0x20000000, // is capable of having fAbsolute set
// Set 2 (non-branches) only
fIsPtrOp = 0x20,
fPCodeFlag200000 = 0x200000,
fPCodeFlag400000 = 0x400000,
fOverflow = 0x800000,
fUpdatesPtr = 0x2000000, // lbzu, lbzux, lwzu, stbu, stbux, etc
fCanSetCarry = 0x4000000, // is capable of having fSetsCarry set
fCanSetRecordBit = 0x8000000, // is capable of having fRecordBit set
fSetsCarry = 0x10000000,
fPCodeFlag20000000 = 0x20000000, // record bit?
// ??
fPCodeFlag2000000 = 0x2000000,
fPCodeFlag4000000 = 0x4000000,
fPCodeFlag8000000 = 0x8000000,
fPCodeFlag10000000 = 0x10000000,
fPCodeFlag40000000 = 0x40000000,
fPCodeFlag80000000 = 0x80000000,
fPCodeFlagC0000000 = 0xC0000000
fRecordBit = 0x20000000,
fOpTypeFPR = 0x40000000,
fOpTypeGPR = 0x80000000,
fOpTypeVR = 0xC0000000,
fOpTypeMask = 0xC0000000
};
enum {
fPCBlockFlag1 = 1, // fIsProlog
fPCBlockFlag2 = 2, // fIsEpilogue
fPCBlockFlag4 = 4, // fVisited
fPCBlockFlag8 = 8, // fScheduled
fIsProlog = 1, // fIsProlog
fIsEpilogue = 2, // fIsEpilogue
fVisited = 4, // fVisited
fScheduled = 8, // fScheduled
fPCBlockFlag10 = 0x10, // maybe fIsSwitch based off v3?
fPCBlockFlag20 = 0x20, // fDeleted
fDeleted = 0x20,
fPCBlockFlag2000 = 0x2000,
fPCBlockFlag4000 = 0x4000,
fPCBlockFlag6000 = 0x6000,

View File

@@ -463,870 +463,9 @@ typedef enum Opcode {
PC_RRIB = 0x1AB,
OPCODE_MAX = 0x1AC
} Opcode;
//#define PC_B 0x0
//#define PC_BL 0x1
//#define PC_BC 0x2
//#define PC_BCLR 0x3
//#define PC_BCCTR 0x4
//#define PC_BT 0x5
//#define PC_BTLR 0x6
//#define PC_BTCTR 0x7
//#define PC_BF 0x8
//#define PC_BFLR 0x9
//#define PC_BFCTR 0xA
//#define PC_BDNZ 0xB
//#define PC_BDNZT 0xC
//#define PC_BDNZF 0xD
//#define PC_BDZ 0xE
//#define PC_BDZT 0xF
//#define PC_BDZF 0x10
//#define PC_BLR 0x11
//#define PC_BCTR 0x12
//#define PC_BCTRL 0x13
//#define PC_BLRL 0x14
//#define PC_LBZ 0x15
//#define PC_LBZU 0x16
//#define PC_LBZX 0x17
//#define PC_LBZUX 0x18
//#define PC_LHZ 0x19
//#define PC_LHZU 0x1A
//#define PC_LHZX 0x1B
//#define PC_LHZUX 0x1C
//#define PC_LHA 0x1D
//#define PC_LHAU 0x1E
//#define PC_LHAX 0x1F
//#define PC_LHAUX 0x20
//#define PC_LHBRX 0x21
//#define PC_LWZ 0x22
//#define PC_LWZU 0x23
//#define PC_LWZX 0x24
//#define PC_LWZUX 0x25
//#define PC_LWBRX 0x26
//#define PC_LMW 0x27
//#define PC_STB 0x28
//#define PC_STBU 0x29
//#define PC_STBX 0x2A
//#define PC_STBUX 0x2B
//#define PC_STH 0x2C
//#define PC_STHU 0x2D
//#define PC_STHX 0x2E
//#define PC_STHUX 0x2F
//#define PC_STHBRX 0x30
//#define PC_STW 0x31
//#define PC_STWU 0x32
//#define PC_STWX 0x33
//#define PC_STWUX 0x34
//#define PC_STWBRX 0x35
//#define PC_STMW 0x36
//#define PC_DCBF 0x37
//#define PC_DCBST 0x38
//#define PC_DCBT 0x39
//#define PC_DCBTST 0x3A
//#define PC_DCBZ 0x3B
//#define PC_ADD 0x3C
//#define PC_ADDC 0x3D
//#define PC_ADDE 0x3E
//#define PC_ADDI 0x3F
//#define PC_ADDIC 0x40
//#define PC_ADDICR 0x41
//#define PC_ADDIS 0x42
//#define PC_ADDME 0x43
//#define PC_ADDZE 0x44
//#define PC_DIVW 0x45
//#define PC_DIVWU 0x46
//#define PC_MULHW 0x47
//#define PC_MULHWU 0x48
//#define PC_MULLI 0x49
//#define PC_MULLW 0x4A
//#define PC_NEG 0x4B
//#define PC_SUBF 0x4C
//#define PC_SUBFC 0x4D
//#define PC_SUBFE 0x4E
//#define PC_SUBFIC 0x4F
//#define PC_SUBFME 0x50
//#define PC_SUBFZE 0x51
//#define PC_CMPI 0x52
//#define PC_CMP 0x53
//#define PC_CMPLI 0x54
//#define PC_CMPL 0x55
//#define PC_ANDI 0x56
//#define PC_ANDIS 0x57
//#define PC_ORI 0x58
//#define PC_ORIS 0x59
//#define PC_XORI 0x5A
//#define PC_XORIS 0x5B
//#define PC_AND 0x5C
//#define PC_OR 0x5D
//#define PC_XOR 0x5E
//#define PC_NAND 0x5F
//#define PC_NOR 0x60
//#define PC_EQV 0x61
//#define PC_ANDC 0x62
//#define PC_ORC 0x63
//#define PC_EXTSB 0x64
//#define PC_EXTSH 0x65
//#define PC_CNTLZW 0x66
//#define PC_RLWINM 0x67
//#define PC_RLWNM 0x68
//#define PC_RLWIMI 0x69
//#define PC_SLW 0x6A
//#define PC_SRW 0x6B
//#define PC_SRAWI 0x6C
//#define PC_SRAW 0x6D
//#define PC_CRAND 0x6E
//#define PC_CRANDC 0x6F
//#define PC_CREQV 0x70
//#define PC_CRNAND 0x71
//#define PC_CRNOR 0x72
//#define PC_CROR 0x73
//#define PC_CRORC 0x74
//#define PC_CRXOR 0x75
//#define PC_MCRF 0x76
//#define PC_MTXER 0x77
//#define PC_MTCTR 0x78
//#define PC_MTLR 0x79
//#define PC_MTCRF 0x7A
//#define PC_MTMSR 0x7B
//#define PC_MTSPR 0x7C
//#define PC_MFMSR 0x7D
//#define PC_MFSPR 0x7E
//#define PC_MFXER 0x7F
//#define PC_MFCTR 0x80
//#define PC_MFLR 0x81
//#define PC_MFCR 0x82
//#define PC_MFFS 0x83
//#define PC_MTFSF 0x84
//#define PC_EIEIO 0x85
//#define PC_ISYNC 0x86
//#define PC_SYNC 0x87
//#define PC_RFI 0x88
//#define PC_LI 0x89
//#define PC_LIS 0x8A
//#define PC_MR 0x8B
//#define PC_NOP 0x8C
//#define PC_NOT 0x8D
//#define PC_LFS 0x8E
//#define PC_LFSU 0x8F
//#define PC_LFSX 0x90
//#define PC_LFSUX 0x91
//#define PC_LFD 0x92
//#define PC_LFDU 0x93
//#define PC_LFDX 0x94
//#define PC_LFDUX 0x95
//#define PC_STFS 0x96
//#define PC_STFSU 0x97
//#define PC_STFSX 0x98
//#define PC_STFSUX 0x99
//#define PC_STFD 0x9A
//#define PC_STFDU 0x9B
//#define PC_STFDX 0x9C
//#define PC_STFDUX 0x9D
//#define PC_FMR 0x9E
//#define PC_FABS 0x9F
//#define PC_FNEG 0xA0
//#define PC_FNABS 0xA1
//#define PC_FADD 0xA2
//#define PC_FADDS 0xA3
//#define PC_FSUB 0xA4
//#define PC_FSUBS 0xA5
//#define PC_FMUL 0xA6
//#define PC_FMULS 0xA7
//#define PC_FDIV 0xA8
//#define PC_FDIVS 0xA9
//#define PC_FMADD 0xAA
//#define PC_FMADDS 0xAB
//#define PC_FMSUB 0xAC
//#define PC_FMSUBS 0xAD
//#define PC_FNMADD 0xAE
//#define PC_FNMADDS 0xAF
//#define PC_FNMSUB 0xB0
//#define PC_FNMSUBS 0xB1
//#define PC_FRES 0xB2
//#define PC_FRSQRTE 0xB3
//#define PC_FSEL 0xB4
//#define PC_FRSP 0xB5
//#define PC_FCTIW 0xB6
//#define PC_FCTIWZ 0xB7
//#define PC_FCMPU 0xB8
//#define PC_FCMPO 0xB9
//#define PC_LWARX 0xBA
//#define PC_LSWI 0xBB
//#define PC_LSWX 0xBC
//#define PC_STFIWX 0xBD
//#define PC_STSWI 0xBE
//#define PC_STSWX 0xBF
//#define PC_STWCX 0xC0
//#define PC_ECIWX 0xC1
//#define PC_ECOWX 0xC2
//#define PC_DCBI 0xC3
//#define PC_ICBI 0xC4
//#define PC_MCRFS 0xC5
//#define PC_MCRXR 0xC6
//#define PC_MFTB 0xC7
//#define PC_MFSR 0xC8
//#define PC_MTSR 0xC9
//#define PC_MFSRIN 0xCA
//#define PC_MTSRIN 0xCB
//#define PC_MTFSB0 0xCC
//#define PC_MTFSB1 0xCD
//#define PC_MTFSFI 0xCE
//#define PC_SC 0xCF
//#define PC_FSQRT 0xD0
//#define PC_FSQRTS 0xD1
//#define PC_TLBIA 0xD2
//#define PC_TLBIE 0xD3
//#define PC_TLBLD 0xD4
//#define PC_TLBLI 0xD5
//#define PC_TLBSYNC 0xD6
//#define PC_TW 0xD7
//#define PC_TRAP 0xD8
//#define PC_TWI 0xD9
//#define PC_OPWORD 0xDA
//#define PC_MFROM 0xDB
//#define PC_DSA 0xDC
//#define PC_ESA 0xDD
//#define PC_DCCCI 0xDE
//#define PC_DCREAD 0xDF
//#define PC_ICBT 0xE0
//#define PC_ICCCI 0xE1
//#define PC_ICREAD 0xE2
//#define PC_RFCI 0xE3
//#define PC_TLBRE 0xE4
//#define PC_TLBSX 0xE5
//#define PC_TLBWE 0xE6
//#define PC_WRTEE 0xE7
//#define PC_WRTEEI 0xE8
//#define PC_MFDCR 0xE9
//#define PC_MTDCR 0xEA
//#define PC_DCBA 0xEB
//#define PC_DSS 0xEC
//#define PC_DSSALL 0xED
//#define PC_DST 0xEE
//#define PC_DSTT 0xEF
//#define PC_DSTST 0xF0
//#define PC_DSTSTT 0xF1
//#define PC_LVEBX 0xF2
//#define PC_LVEHX 0xF3
//#define PC_LVEWX 0xF4
//#define PC_LVSL 0xF5
//#define PC_LVSR 0xF6
//#define PC_LVX 0xF7
//#define PC_LVXL 0xF8
//#define PC_STVEBX 0xF9
//#define PC_STVEHX 0xFA
//#define PC_STVEWX 0xFB
//#define PC_STVX 0xFC
//#define PC_STVXL 0xFD
//#define PC_MFVSCR 0xFE
//#define PC_MTVSCR 0xFF
//#define PC_VADDCUW 0x100
//#define PC_VADDFP 0x101
//#define PC_VADDSBS 0x102
//#define PC_VADDSHS 0x103
//#define PC_VADDSWS 0x104
//#define PC_VADDUBM 0x105
//#define PC_VADDUBS 0x106
//#define PC_VADDUHM 0x107
//#define PC_VADDUHS 0x108
//#define PC_VADDUWM 0x109
//#define PC_VADDUWS 0x10A
//#define PC_VAND 0x10B
//#define PC_VANDC 0x10C
//#define PC_VAVGSB 0x10D
//#define PC_VAVGSH 0x10E
//#define PC_VAVGSW 0x10F
//#define PC_VAVGUB 0x110
//#define PC_VAVGUH 0x111
//#define PC_VAVGUW 0x112
//#define PC_VCFSX 0x113
//#define PC_VCFUX 0x114
//#define PC_VCMPBFP 0x115
//#define PC_VCMPEQFP 0x116
//#define PC_VCMPEQUB 0x117
//#define PC_VCMPEQUH 0x118
//#define PC_VCMPEQUW 0x119
//#define PC_VCMPGEFP 0x11A
//#define PC_VCMPGTFP 0x11B
//#define PC_VCMPGTSB 0x11C
//#define PC_VCMPGTSH 0x11D
//#define PC_VCMPGTSW 0x11E
//#define PC_VCMPGTUB 0x11F
//#define PC_VCMPGTUH 0x120
//#define PC_VCMPGTUW 0x121
//#define PC_VCTSXS 0x122
//#define PC_VCTUXS 0x123
//#define PC_VEXPTEFP 0x124
//#define PC_VLOGEFP 0x125
//#define PC_VMAXFP 0x126
//#define PC_VMAXSB 0x127
//#define PC_VMAXSH 0x128
//#define PC_VMAXSW 0x129
//#define PC_VMAXUB 0x12A
//#define PC_VMAXUH 0x12B
//#define PC_VMAXUW 0x12C
//#define PC_VMINFP 0x12D
//#define PC_VMINSB 0x12E
//#define PC_VMINSH 0x12F
//#define PC_VMINSW 0x130
//#define PC_VMINUB 0x131
//#define PC_VMINUH 0x132
//#define PC_VMINUW 0x133
//#define PC_VMRGHB 0x134
//#define PC_VMRGHH 0x135
//#define PC_VMRGHW 0x136
//#define PC_VMRGLB 0x137
//#define PC_VMRGLH 0x138
//#define PC_VMRGLW 0x139
//#define PC_VMULESB 0x13A
//#define PC_VMULESH 0x13B
//#define PC_VMULEUB 0x13C
//#define PC_VMULEUH 0x13D
//#define PC_VMULOSB 0x13E
//#define PC_VMULOSH 0x13F
//#define PC_VMULOUB 0x140
//#define PC_VMULOUH 0x141
//#define PC_VNOR 0x142
//#define PC_VOR 0x143
//#define PC_VPKPX 0x144
//#define PC_VPKSHSS 0x145
//#define PC_VPKSHUS 0x146
//#define PC_VPKSWSS 0x147
//#define PC_VPKSWUS 0x148
//#define PC_VPKUHUM 0x149
//#define PC_VPKUHUS 0x14A
//#define PC_VPKUWUM 0x14B
//#define PC_VPKUWUS 0x14C
//#define PC_VREFP 0x14D
//#define PC_VRFIM 0x14E
//#define PC_VRFIN 0x14F
//#define PC_VRFIP 0x150
//#define PC_VRFIZ 0x151
//#define PC_VRLB 0x152
//#define PC_VRLH 0x153
//#define PC_VRLW 0x154
//#define PC_VRSQRTEFP 0x155
//#define PC_VSL 0x156
//#define PC_VSLB 0x157
//#define PC_VSLH 0x158
//#define PC_VSLO 0x159
//#define PC_VSLW 0x15A
//#define PC_VSPLTB 0x15B
//#define PC_VSPLTH 0x15C
//#define PC_VSPLTW 0x15D
//#define PC_VSPLTISB 0x15E
//#define PC_VSPLTISH 0x15F
//#define PC_VSPLTISW 0x160
//#define PC_VSR 0x161
//#define PC_VSRAB 0x162
//#define PC_VSRAH 0x163
//#define PC_VSRAW 0x164
//#define PC_VSRB 0x165
//#define PC_VSRH 0x166
//#define PC_VSRO 0x167
//#define PC_VSRW 0x168
//#define PC_VSUBCUW 0x169
//#define PC_VSUBFP 0x16A
//#define PC_VSUBSBS 0x16B
//#define PC_VSUBSHS 0x16C
//#define PC_VSUBSWS 0x16D
//#define PC_VSUBUBM 0x16E
//#define PC_VSUBUBS 0x16F
//#define PC_VSUBUHM 0x170
//#define PC_VSUBUHS 0x171
//#define PC_VSUBUWM 0x172
//#define PC_VSUBUWS 0x173
//#define PC_VSUMSWS 0x174
//#define PC_VSUM2SWS 0x175
//#define PC_VSUM4SBS 0x176
//#define PC_VSUM4SHS 0x177
//#define PC_VSUM4UBS 0x178
//#define PC_VUPKHPX 0x179
//#define PC_VUPKHSB 0x17A
//#define PC_VUPKHSH 0x17B
//#define PC_VUPKLPX 0x17C
//#define PC_VUPKLSB 0x17D
//#define PC_VUPKLSH 0x17E
//#define PC_VXOR 0x17F
//#define PC_VMADDFP 0x180
//#define PC_VMHADDSHS 0x181
//#define PC_VMHRADDSHS 0x182
//#define PC_VMLADDUHM 0x183
//#define PC_VMSUMMBM 0x184
//#define PC_VMSUMSHM 0x185
//#define PC_VMSUMSHS 0x186
//#define PC_VMSUMUBM 0x187
//#define PC_VMSUMUHM 0x188
//#define PC_VMSUMUHS 0x189
//#define PC_VNMSUBFP 0x18A
//#define PC_VPERM 0x18B
//#define PC_VSEL 0x18C
//#define PC_VSLDOI 0x18D
//#define PC_VMR 0x18E
//#define PC_VMRP 0x18F
//#define PC_SLE 0x190
//#define PC_SLEQ 0x191
//#define PC_SLIQ 0x192
//#define PC_SLLIQ 0x193
//#define PC_SLLQ 0x194
//#define PC_SLQ 0x195
//#define PC_SRAIQ 0x196
//#define PC_SRAQ 0x197
//#define PC_SRE 0x198
//#define PC_SREA 0x199
//#define PC_SREQ 0x19A
//#define PC_SRIQ 0x19B
//#define PC_SRLIQ 0x19C
//#define PC_SRLQ 0x19D
//#define PC_SRQ 0x19E
//#define PC_MASKG 0x19F
//#define PC_MASKIR 0x1A0
//#define PC_LSCBX 0x1A1
//#define PC_DIV 0x1A2
//#define PC_DIVS 0x1A3
//#define PC_DOZ 0x1A4
//#define PC_MUL 0x1A5
//#define PC_NABS 0x1A6
//#define PC_ABS 0x1A7
//#define PC_CLCS 0x1A8
//#define PC_DOZI 0x1A9
//#define PC_RLMI 0x1AA
//#define PC_RRIB 0x1AB
//#define PC_PENTRY 0x1AC
//#define PC_PEXIT 0x1AD
//#define OPCODE_MAX 0x1AE
//const short PC_B = 0x0;
//const short PC_BL = 0x1;
//const short PC_BC = 0x2;
//const short PC_BCLR = 0x3;
//const short PC_BCCTR = 0x4;
//const short PC_BT = 0x5;
//const short PC_BTLR = 0x6;
//const short PC_BTCTR = 0x7;
//const short PC_BF = 0x8;
//const short PC_BFLR = 0x9;
//const short PC_BFCTR = 0xA;
//const short PC_BDNZ = 0xB;
//const short PC_BDNZT = 0xC;
//const short PC_BDNZF = 0xD;
//const short PC_BDZ = 0xE;
//const short PC_BDZT = 0xF;
//const short PC_BDZF = 0x10;
//const short PC_BLR = 0x11;
//const short PC_BCTR = 0x12;
//const short PC_BCTRL = 0x13;
//const short PC_BLRL = 0x14;
//const short PC_LBZ = 0x15;
//const short PC_LBZU = 0x16;
//const short PC_LBZX = 0x17;
//const short PC_LBZUX = 0x18;
//const short PC_LHZ = 0x19;
//const short PC_LHZU = 0x1A;
//const short PC_LHZX = 0x1B;
//const short PC_LHZUX = 0x1C;
//const short PC_LHA = 0x1D;
//const short PC_LHAU = 0x1E;
//const short PC_LHAX = 0x1F;
//const short PC_LHAUX = 0x20;
//const short PC_LHBRX = 0x21;
//const short PC_LWZ = 0x22;
//const short PC_LWZU = 0x23;
//const short PC_LWZX = 0x24;
//const short PC_LWZUX = 0x25;
//const short PC_LWBRX = 0x26;
//const short PC_LMW = 0x27;
//const short PC_STB = 0x28;
//const short PC_STBU = 0x29;
//const short PC_STBX = 0x2A;
//const short PC_STBUX = 0x2B;
//const short PC_STH = 0x2C;
//const short PC_STHU = 0x2D;
//const short PC_STHX = 0x2E;
//const short PC_STHUX = 0x2F;
//const short PC_STHBRX = 0x30;
//const short PC_STW = 0x31;
//const short PC_STWU = 0x32;
//const short PC_STWX = 0x33;
//const short PC_STWUX = 0x34;
//const short PC_STWBRX = 0x35;
//const short PC_STMW = 0x36;
//const short PC_DCBF = 0x37;
//const short PC_DCBST = 0x38;
//const short PC_DCBT = 0x39;
//const short PC_DCBTST = 0x3A;
//const short PC_DCBZ = 0x3B;
//const short PC_ADD = 0x3C;
//const short PC_ADDC = 0x3D;
//const short PC_ADDE = 0x3E;
//const short PC_ADDI = 0x3F;
//const short PC_ADDIC = 0x40;
//const short PC_ADDICR = 0x41;
//const short PC_ADDIS = 0x42;
//const short PC_ADDME = 0x43;
//const short PC_ADDZE = 0x44;
//const short PC_DIVW = 0x45;
//const short PC_DIVWU = 0x46;
//const short PC_MULHW = 0x47;
//const short PC_MULHWU = 0x48;
//const short PC_MULLI = 0x49;
//const short PC_MULLW = 0x4A;
//const short PC_NEG = 0x4B;
//const short PC_SUBF = 0x4C;
//const short PC_SUBFC = 0x4D;
//const short PC_SUBFE = 0x4E;
//const short PC_SUBFIC = 0x4F;
//const short PC_SUBFME = 0x50;
//const short PC_SUBFZE = 0x51;
//const short PC_CMPI = 0x52;
//const short PC_CMP = 0x53;
//const short PC_CMPLI = 0x54;
//const short PC_CMPL = 0x55;
//const short PC_ANDI = 0x56;
//const short PC_ANDIS = 0x57;
//const short PC_ORI = 0x58;
//const short PC_ORIS = 0x59;
//const short PC_XORI = 0x5A;
//const short PC_XORIS = 0x5B;
//const short PC_AND = 0x5C;
//const short PC_OR = 0x5D;
//const short PC_XOR = 0x5E;
//const short PC_NAND = 0x5F;
//const short PC_NOR = 0x60;
//const short PC_EQV = 0x61;
//const short PC_ANDC = 0x62;
//const short PC_ORC = 0x63;
//const short PC_EXTSB = 0x64;
//const short PC_EXTSH = 0x65;
//const short PC_CNTLZW = 0x66;
//const short PC_RLWINM = 0x67;
//const short PC_RLWNM = 0x68;
//const short PC_RLWIMI = 0x69;
//const short PC_SLW = 0x6A;
//const short PC_SRW = 0x6B;
//const short PC_SRAWI = 0x6C;
//const short PC_SRAW = 0x6D;
//const short PC_CRAND = 0x6E;
//const short PC_CRANDC = 0x6F;
//const short PC_CREQV = 0x70;
//const short PC_CRNAND = 0x71;
//const short PC_CRNOR = 0x72;
//const short PC_CROR = 0x73;
//const short PC_CRORC = 0x74;
//const short PC_CRXOR = 0x75;
//const short PC_MCRF = 0x76;
//const short PC_MTXER = 0x77;
//const short PC_MTCTR = 0x78;
//const short PC_MTLR = 0x79;
//const short PC_MTCRF = 0x7A;
//const short PC_MTMSR = 0x7B;
//const short PC_MTSPR = 0x7C;
//const short PC_MFMSR = 0x7D;
//const short PC_MFSPR = 0x7E;
//const short PC_MFXER = 0x7F;
//const short PC_MFCTR = 0x80;
//const short PC_MFLR = 0x81;
//const short PC_MFCR = 0x82;
//const short PC_MFFS = 0x83;
//const short PC_MTFSF = 0x84;
//const short PC_EIEIO = 0x85;
//const short PC_ISYNC = 0x86;
//const short PC_SYNC = 0x87;
//const short PC_RFI = 0x88;
//const short PC_LI = 0x89;
//const short PC_LIS = 0x8A;
//const short PC_MR = 0x8B;
//const short PC_NOP = 0x8C;
//const short PC_NOT = 0x8D;
//const short PC_LFS = 0x8E;
//const short PC_LFSU = 0x8F;
//const short PC_LFSX = 0x90;
//const short PC_LFSUX = 0x91;
//const short PC_LFD = 0x92;
//const short PC_LFDU = 0x93;
//const short PC_LFDX = 0x94;
//const short PC_LFDUX = 0x95;
//const short PC_STFS = 0x96;
//const short PC_STFSU = 0x97;
//const short PC_STFSX = 0x98;
//const short PC_STFSUX = 0x99;
//const short PC_STFD = 0x9A;
//const short PC_STFDU = 0x9B;
//const short PC_STFDX = 0x9C;
//const short PC_STFDUX = 0x9D;
//const short PC_FMR = 0x9E;
//const short PC_FABS = 0x9F;
//const short PC_FNEG = 0xA0;
//const short PC_FNABS = 0xA1;
//const short PC_FADD = 0xA2;
//const short PC_FADDS = 0xA3;
//const short PC_FSUB = 0xA4;
//const short PC_FSUBS = 0xA5;
//const short PC_FMUL = 0xA6;
//const short PC_FMULS = 0xA7;
//const short PC_FDIV = 0xA8;
//const short PC_FDIVS = 0xA9;
//const short PC_FMADD = 0xAA;
//const short PC_FMADDS = 0xAB;
//const short PC_FMSUB = 0xAC;
//const short PC_FMSUBS = 0xAD;
//const short PC_FNMADD = 0xAE;
//const short PC_FNMADDS = 0xAF;
//const short PC_FNMSUB = 0xB0;
//const short PC_FNMSUBS = 0xB1;
//const short PC_FRES = 0xB2;
//const short PC_FRSQRTE = 0xB3;
//const short PC_FSEL = 0xB4;
//const short PC_FRSP = 0xB5;
//const short PC_FCTIW = 0xB6;
//const short PC_FCTIWZ = 0xB7;
//const short PC_FCMPU = 0xB8;
//const short PC_FCMPO = 0xB9;
//const short PC_LWARX = 0xBA;
//const short PC_LSWI = 0xBB;
//const short PC_LSWX = 0xBC;
//const short PC_STFIWX = 0xBD;
//const short PC_STSWI = 0xBE;
//const short PC_STSWX = 0xBF;
//const short PC_STWCX = 0xC0;
//const short PC_ECIWX = 0xC1;
//const short PC_ECOWX = 0xC2;
//const short PC_DCBI = 0xC3;
//const short PC_ICBI = 0xC4;
//const short PC_MCRFS = 0xC5;
//const short PC_MCRXR = 0xC6;
//const short PC_MFTB = 0xC7;
//const short PC_MFSR = 0xC8;
//const short PC_MTSR = 0xC9;
//const short PC_MFSRIN = 0xCA;
//const short PC_MTSRIN = 0xCB;
//const short PC_MTFSB0 = 0xCC;
//const short PC_MTFSB1 = 0xCD;
//const short PC_MTFSFI = 0xCE;
//const short PC_SC = 0xCF;
//const short PC_FSQRT = 0xD0;
//const short PC_FSQRTS = 0xD1;
//const short PC_TLBIA = 0xD2;
//const short PC_TLBIE = 0xD3;
//const short PC_TLBLD = 0xD4;
//const short PC_TLBLI = 0xD5;
//const short PC_TLBSYNC = 0xD6;
//const short PC_TW = 0xD7;
//const short PC_TRAP = 0xD8;
//const short PC_TWI = 0xD9;
//const short PC_OPWORD = 0xDA;
//const short PC_MFROM = 0xDB;
//const short PC_DSA = 0xDC;
//const short PC_ESA = 0xDD;
//const short PC_DCCCI = 0xDE;
//const short PC_DCREAD = 0xDF;
//const short PC_ICBT = 0xE0;
//const short PC_ICCCI = 0xE1;
//const short PC_ICREAD = 0xE2;
//const short PC_RFCI = 0xE3;
//const short PC_TLBRE = 0xE4;
//const short PC_TLBSX = 0xE5;
//const short PC_TLBWE = 0xE6;
//const short PC_WRTEE = 0xE7;
//const short PC_WRTEEI = 0xE8;
//const short PC_MFDCR = 0xE9;
//const short PC_MTDCR = 0xEA;
//const short PC_DCBA = 0xEB;
//const short PC_DSS = 0xEC;
//const short PC_DSSALL = 0xED;
//const short PC_DST = 0xEE;
//const short PC_DSTT = 0xEF;
//const short PC_DSTST = 0xF0;
//const short PC_DSTSTT = 0xF1;
//const short PC_LVEBX = 0xF2;
//const short PC_LVEHX = 0xF3;
//const short PC_LVEWX = 0xF4;
//const short PC_LVSL = 0xF5;
//const short PC_LVSR = 0xF6;
//const short PC_LVX = 0xF7;
//const short PC_LVXL = 0xF8;
//const short PC_STVEBX = 0xF9;
//const short PC_STVEHX = 0xFA;
//const short PC_STVEWX = 0xFB;
//const short PC_STVX = 0xFC;
//const short PC_STVXL = 0xFD;
//const short PC_MFVSCR = 0xFE;
//const short PC_MTVSCR = 0xFF;
//const short PC_VADDCUW = 0x100;
//const short PC_VADDFP = 0x101;
//const short PC_VADDSBS = 0x102;
//const short PC_VADDSHS = 0x103;
//const short PC_VADDSWS = 0x104;
//const short PC_VADDUBM = 0x105;
//const short PC_VADDUBS = 0x106;
//const short PC_VADDUHM = 0x107;
//const short PC_VADDUHS = 0x108;
//const short PC_VADDUWM = 0x109;
//const short PC_VADDUWS = 0x10A;
//const short PC_VAND = 0x10B;
//const short PC_VANDC = 0x10C;
//const short PC_VAVGSB = 0x10D;
//const short PC_VAVGSH = 0x10E;
//const short PC_VAVGSW = 0x10F;
//const short PC_VAVGUB = 0x110;
//const short PC_VAVGUH = 0x111;
//const short PC_VAVGUW = 0x112;
//const short PC_VCFSX = 0x113;
//const short PC_VCFUX = 0x114;
//const short PC_VCMPBFP = 0x115;
//const short PC_VCMPEQFP = 0x116;
//const short PC_VCMPEQUB = 0x117;
//const short PC_VCMPEQUH = 0x118;
//const short PC_VCMPEQUW = 0x119;
//const short PC_VCMPGEFP = 0x11A;
//const short PC_VCMPGTFP = 0x11B;
//const short PC_VCMPGTSB = 0x11C;
//const short PC_VCMPGTSH = 0x11D;
//const short PC_VCMPGTSW = 0x11E;
//const short PC_VCMPGTUB = 0x11F;
//const short PC_VCMPGTUH = 0x120;
//const short PC_VCMPGTUW = 0x121;
//const short PC_VCTSXS = 0x122;
//const short PC_VCTUXS = 0x123;
//const short PC_VEXPTEFP = 0x124;
//const short PC_VLOGEFP = 0x125;
//const short PC_VMAXFP = 0x126;
//const short PC_VMAXSB = 0x127;
//const short PC_VMAXSH = 0x128;
//const short PC_VMAXSW = 0x129;
//const short PC_VMAXUB = 0x12A;
//const short PC_VMAXUH = 0x12B;
//const short PC_VMAXUW = 0x12C;
//const short PC_VMINFP = 0x12D;
//const short PC_VMINSB = 0x12E;
//const short PC_VMINSH = 0x12F;
//const short PC_VMINSW = 0x130;
//const short PC_VMINUB = 0x131;
//const short PC_VMINUH = 0x132;
//const short PC_VMINUW = 0x133;
//const short PC_VMRGHB = 0x134;
//const short PC_VMRGHH = 0x135;
//const short PC_VMRGHW = 0x136;
//const short PC_VMRGLB = 0x137;
//const short PC_VMRGLH = 0x138;
//const short PC_VMRGLW = 0x139;
//const short PC_VMULESB = 0x13A;
//const short PC_VMULESH = 0x13B;
//const short PC_VMULEUB = 0x13C;
//const short PC_VMULEUH = 0x13D;
//const short PC_VMULOSB = 0x13E;
//const short PC_VMULOSH = 0x13F;
//const short PC_VMULOUB = 0x140;
//const short PC_VMULOUH = 0x141;
//const short PC_VNOR = 0x142;
//const short PC_VOR = 0x143;
//const short PC_VPKPX = 0x144;
//const short PC_VPKSHSS = 0x145;
//const short PC_VPKSHUS = 0x146;
//const short PC_VPKSWSS = 0x147;
//const short PC_VPKSWUS = 0x148;
//const short PC_VPKUHUM = 0x149;
//const short PC_VPKUHUS = 0x14A;
//const short PC_VPKUWUM = 0x14B;
//const short PC_VPKUWUS = 0x14C;
//const short PC_VREFP = 0x14D;
//const short PC_VRFIM = 0x14E;
//const short PC_VRFIN = 0x14F;
//const short PC_VRFIP = 0x150;
//const short PC_VRFIZ = 0x151;
//const short PC_VRLB = 0x152;
//const short PC_VRLH = 0x153;
//const short PC_VRLW = 0x154;
//const short PC_VRSQRTEFP = 0x155;
//const short PC_VSL = 0x156;
//const short PC_VSLB = 0x157;
//const short PC_VSLH = 0x158;
//const short PC_VSLO = 0x159;
//const short PC_VSLW = 0x15A;
//const short PC_VSPLTB = 0x15B;
//const short PC_VSPLTH = 0x15C;
//const short PC_VSPLTW = 0x15D;
//const short PC_VSPLTISB = 0x15E;
//const short PC_VSPLTISH = 0x15F;
//const short PC_VSPLTISW = 0x160;
//const short PC_VSR = 0x161;
//const short PC_VSRAB = 0x162;
//const short PC_VSRAH = 0x163;
//const short PC_VSRAW = 0x164;
//const short PC_VSRB = 0x165;
//const short PC_VSRH = 0x166;
//const short PC_VSRO = 0x167;
//const short PC_VSRW = 0x168;
//const short PC_VSUBCUW = 0x169;
//const short PC_VSUBFP = 0x16A;
//const short PC_VSUBSBS = 0x16B;
//const short PC_VSUBSHS = 0x16C;
//const short PC_VSUBSWS = 0x16D;
//const short PC_VSUBUBM = 0x16E;
//const short PC_VSUBUBS = 0x16F;
//const short PC_VSUBUHM = 0x170;
//const short PC_VSUBUHS = 0x171;
//const short PC_VSUBUWM = 0x172;
//const short PC_VSUBUWS = 0x173;
//const short PC_VSUMSWS = 0x174;
//const short PC_VSUM2SWS = 0x175;
//const short PC_VSUM4SBS = 0x176;
//const short PC_VSUM4SHS = 0x177;
//const short PC_VSUM4UBS = 0x178;
//const short PC_VUPKHPX = 0x179;
//const short PC_VUPKHSB = 0x17A;
//const short PC_VUPKHSH = 0x17B;
//const short PC_VUPKLPX = 0x17C;
//const short PC_VUPKLSB = 0x17D;
//const short PC_VUPKLSH = 0x17E;
//const short PC_VXOR = 0x17F;
//const short PC_VMADDFP = 0x180;
//const short PC_VMHADDSHS = 0x181;
//const short PC_VMHRADDSHS = 0x182;
//const short PC_VMLADDUHM = 0x183;
//const short PC_VMSUMMBM = 0x184;
//const short PC_VMSUMSHM = 0x185;
//const short PC_VMSUMSHS = 0x186;
//const short PC_VMSUMUBM = 0x187;
//const short PC_VMSUMUHM = 0x188;
//const short PC_VMSUMUHS = 0x189;
//const short PC_VNMSUBFP = 0x18A;
//const short PC_VPERM = 0x18B;
//const short PC_VSEL = 0x18C;
//const short PC_VSLDOI = 0x18D;
//const short PC_VMR = 0x18E;
//const short PC_VMRP = 0x18F;
//const short PC_SLE = 0x190;
//const short PC_SLEQ = 0x191;
//const short PC_SLIQ = 0x192;
//const short PC_SLLIQ = 0x193;
//const short PC_SLLQ = 0x194;
//const short PC_SLQ = 0x195;
//const short PC_SRAIQ = 0x196;
//const short PC_SRAQ = 0x197;
//const short PC_SRE = 0x198;
//const short PC_SREA = 0x199;
//const short PC_SREQ = 0x19A;
//const short PC_SRIQ = 0x19B;
//const short PC_SRLIQ = 0x19C;
//const short PC_SRLQ = 0x19D;
//const short PC_SRQ = 0x19E;
//const short PC_MASKG = 0x19F;
//const short PC_MASKIR = 0x1A0;
//const short PC_LSCBX = 0x1A1;
//const short PC_DIV = 0x1A2;
//const short PC_DIVS = 0x1A3;
//const short PC_DOZ = 0x1A4;
//const short PC_MUL = 0x1A5;
//const short PC_NABS = 0x1A6;
//const short PC_ABS = 0x1A7;
//const short PC_CLCS = 0x1A8;
//const short PC_DOZI = 0x1A9;
//const short PC_RLMI = 0x1AA;
//const short PC_RRIB = 0x1AB;
//const short PC_PENTRY = 0x1AC;
//const short PC_PEXIT = 0x1AD;
//const short OPCODE_MAX = 0x1AE;
extern OpcodeInfo opcodeinfo[OPCODE_MAX];
// this is actually in OpcodeInfo.c
extern OpcodeInfo opcodeinfo[];
extern void pcode_get_hi_lo(int bits, char typechar, SInt32 *hi, SInt32 *lo);
extern int pcode_check_imm_bits(SInt32 value, int bits, char typechar);

View File

@@ -5,34 +5,34 @@
extern int pclist_bad_operand;
extern void pcinitlisting(void);
extern void pcinitlisting(/* unknown args */);
extern void pccleanuplisting(void);
extern void pclistblocks(char *name1, char *name2);
extern void pclistdataflow(void);
extern void pclistdataflow(/* unknown args */);
extern void pclistinterferences(char *class_format, int regcount);
extern void pclistspill(void);
extern void pclistcopypropitem(void);
extern void pclistcoalesce(void);
extern void pclistusedefs(void);
extern void pclistpropinfo(void);
extern void pclistloops(void);
extern void pclistswitchtables(void);
extern void pclistdominators(void);
extern void pclistbackedge(void);
extern void pclistinterferencegraphnode(void);
extern void pclistinterferencegraph(void);
extern void pclistblock_scheduler(void);
extern void pclistspill(/* unknown args */);
extern void pclistcopypropitem(/* unknown args */);
extern void pclistcoalesce(/* unknown args */);
extern void pclistusedefs(/* unknown args */);
extern void pclistpropinfo(/* unknown args */);
extern void pclistloops(/* unknown args */);
extern void pclistswitchtables(/* unknown args */);
extern void pclistdominators(/* unknown args */);
extern void pclistbackedge(/* unknown args */);
extern void pclistinterferencegraphnode(/* unknown args */);
extern void pclistinterferencegraph(/* unknown args */);
extern void pclistblock_scheduler(/* unknown args */);
extern void pclistblocks_start_scheduler(char *str1, char *str2);
extern void pclistblocks_end_scheduler(void);
extern void pctotalheap(void);
extern void pctotalmemory(void);
extern void pctotalheap(/* unknown args */);
extern void pctotalmemory(/* unknown args */);
extern void pcmessage(char *probably_a_string, ...);
extern int formatalias(Alias *alias, char *buf, int bufSize);
extern int dumpalias(Alias *alias, int len, Boolean flag1, Boolean flag2);
extern void pcformatset(void);
extern void pcformatset(/* unknown args */);
extern int GetLineEndOffset(char *str, int lineNum, int len);
extern int GetLineOffset(char *str, int lineNum, int len);
extern void DumpSourceCode(void);
extern int DumpIR_SrcBreak(void);
extern void DumpSourceCode(/* unknown args */);
extern int DumpIR_SrcBreak(/* unknown args */);
#endif

View File

@@ -187,7 +187,7 @@ typedef struct TemplInstance TemplInstance;
typedef struct TemplParam TemplParam;
typedef struct TemplPartialSpec TemplPartialSpec;
typedef struct TemplStack TemplStack;
typedef struct TStream TStream;
typedef struct TokenStream TokenStream;
typedef struct TStreamElement TStreamElement;
typedef struct Type Type;
typedef struct TypeBitfield TypeBitfield;

View File

@@ -188,7 +188,7 @@ struct ObjectTemplated {
};
enum {
OBJECT_FLAGS_UNUSED = 1,
OBJECT_FLAGS_1 = 1,
OBJECT_FLAGS_2 = 2,
OBJECT_FLAGS_4 = 4,
OBJECT_FLAGS_8 = 8,

View File

@@ -31,7 +31,7 @@ struct Template {
struct TemplateFriend { // verified via CPrec
PackedDeclInfo decl;
FileOffsetInfo fileoffset;
TStream stream;
TokenStream stream;
};
struct TemplateMember { // verified via CPrec
@@ -39,7 +39,7 @@ struct TemplateMember { // verified via CPrec
TemplParam *params;
Object *object;
FileOffsetInfo fileoffset;
TStream stream;
TokenStream stream;
CPrepFileInfo *srcfile;
SInt32 startoffset;
SInt32 endoffset;
@@ -191,7 +191,7 @@ struct TemplateFunction { // verified via CPrec
TemplateFunction *unk4; // parent?
HashNameNode *name;
TemplParam *params;
TStream stream;
TokenStream stream;
TStreamElement deftoken;
Object *tfunc;
TemplFuncInstance *instances;

View File

@@ -7,19 +7,20 @@
#pragma options align=mac68k
#endif
#define TKD_OPERATOR 328
#define TKD_TEMPLATE 332
#define TKD_IDENTIFIER -3
#define TKD_COLON_COLON 372
typedef enum EToken {
TK_INTCONST = -1,
TK_FLOATCONST = -2,
TK_IDENTIFIER = -3,
TK_STRING = -4,
TK_STRING_WIDE = -5,
TK_NEG6 = -6,
TK_NEG7 = -7,
TK_ILLEGAL = -6,
TK_EOL = -7,
TK_END = 0,
TK_MACRO_ARG_1 = 1,
TK_MACRO_ARG_2 = 2,
TK_MACRO_ARG_HASH = 3, // #something, followed by the arg index
TK_4 = 4,
TK_5 = 5,
TK_AUTO = 256,
TK_REGISTER,
TK_STATIC,
@@ -180,8 +181,7 @@ struct TStreamElement {
TData data;
};
// this is actually called TokenStream
struct TStream {
struct TokenStream {
SInt32 tokens;
TStreamElement *firsttoken;
};

View File

@@ -96,7 +96,7 @@ struct StructMember {
UInt32 qual;
};
/*enum {
enum {
STRUCT_TYPE_STRUCT = 0,
STRUCT_TYPE_UNION = 1,
STRUCT_TYPE_CLASS = 2,
@@ -112,22 +112,22 @@ struct StructMember {
STRUCT_TYPE_C = 12,
STRUCT_TYPE_D = 13,
STRUCT_TYPE_E = 14
};*/
const char STRUCT_TYPE_STRUCT = 0;
const char STRUCT_TYPE_UNION = 1;
const char STRUCT_TYPE_CLASS = 2;
const char STRUCT_TYPE_3 = 3;
const char STRUCT_TYPE_4 = 4;
const char STRUCT_TYPE_5 = 5;
const char STRUCT_TYPE_6 = 6;
const char STRUCT_TYPE_7 = 7;
const char STRUCT_TYPE_8 = 8;
const char STRUCT_TYPE_9 = 9;
const char STRUCT_TYPE_A = 10;
const char STRUCT_TYPE_B = 11;
const char STRUCT_TYPE_C = 12;
const char STRUCT_TYPE_D = 13;
const char STRUCT_TYPE_E = 14;
};
//const char STRUCT_TYPE_STRUCT = 0;
//const char STRUCT_TYPE_UNION = 1;
//const char STRUCT_TYPE_CLASS = 2;
//const char STRUCT_TYPE_3 = 3;
//const char STRUCT_TYPE_4 = 4;
//const char STRUCT_TYPE_5 = 5;
//const char STRUCT_TYPE_6 = 6;
//const char STRUCT_TYPE_7 = 7;
//const char STRUCT_TYPE_8 = 8;
//const char STRUCT_TYPE_9 = 9;
//const char STRUCT_TYPE_A = 10;
//const char STRUCT_TYPE_B = 11;
//const char STRUCT_TYPE_C = 12;
//const char STRUCT_TYPE_D = 13;
//const char STRUCT_TYPE_E = 14;
struct ClassList { // checked via CPrec