251 lines
8.3 KiB
C
Executable File
251 lines
8.3 KiB
C
Executable File
/*******************************************************************************
|
|
' Author: Dave Hein
|
|
' Version 0.21
|
|
' Copyright (c) 2010, 2011
|
|
' See end of file for terms of use.
|
|
'******************************************************************************/
|
|
typedef struct OpCodeS {
|
|
unsigned char opform;
|
|
unsigned char opcode;
|
|
char *opname;
|
|
} OpCodeT;
|
|
|
|
static OpCodeT optable[] = {
|
|
{0x00, 0x00, "ldfrmr"},
|
|
{0x00, 0x01, "ldfrm"},
|
|
{0x00, 0x02, "ldfrmar"},
|
|
{0x00, 0x03, "ldfrma"},
|
|
{0x05, 0x04, "jmp"},
|
|
{0x0a, 0x05, "call"},
|
|
{0x07, 0x06, "callobj"},
|
|
{0x07, 0x07, "callobjx"},
|
|
{0x05, 0x08, "tjz"},
|
|
{0x05, 0x09, "djnz"},
|
|
{0x05, 0x0a, "jz"},
|
|
{0x05, 0x0b, "jnz"},
|
|
{0x00, 0x0c, "casedone"},
|
|
{0x08, 0x0d, "casevalue"},
|
|
{0x08, 0x0e, "caserange"},
|
|
{0x00, 0x0f, "lookdone"},
|
|
{0x00, 0x10, "lookupval"},
|
|
{0x00, 0x11, "lookdnval"},
|
|
{0x00, 0x12, "lookuprng"},
|
|
{0x00, 0x13, "lookdnrng"},
|
|
{0x00, 0x14, "pop"},
|
|
{0x00, 0x15, "run"},
|
|
{0x00, 0x16, "strsize"},
|
|
{0x00, 0x17, "strcomp"},
|
|
{0x00, 0x18, "bytefill"},
|
|
{0x00, 0x19, "wordfill"},
|
|
{0x00, 0x1a, "longfill"},
|
|
{0x00, 0x1b, "waitpeq"},
|
|
{0x00, 0x1c, "bytemove"},
|
|
{0x00, 0x1d, "wordmove"},
|
|
{0x00, 0x1e, "longmove"},
|
|
{0x00, 0x1f, "waitpne"},
|
|
{0x00, 0x20, "clkset"},
|
|
{0x00, 0x21, "cogstop"},
|
|
{0x00, 0x22, "lockret"},
|
|
{0x00, 0x23, "waitcnt"},
|
|
{0x00, 0x24, "ldregx"},
|
|
{0x00, 0x25, "stregx"},
|
|
{0x20, 0x26, "exregx"},
|
|
{0x00, 0x27, "waitvid"},
|
|
{0x00, 0x28, "coginitret"},
|
|
{0x00, 0x29, "locknewret"},
|
|
{0x00, 0x2a, "locksetret"},
|
|
{0x00, 0x2b, "lockclrret"},
|
|
{0x00, 0x2c, "coginit"},
|
|
{0x00, 0x2d, "locknew"},
|
|
{0x00, 0x2e, "lockset"},
|
|
{0x00, 0x2f, "lockclr"},
|
|
{0x00, 0x30, "abort"},
|
|
{0x00, 0x31, "abortval"},
|
|
{0x00, 0x32, "ret"},
|
|
{0x00, 0x33, "retval"},
|
|
{0x00, 0x34, "ldlim1"},
|
|
{0x00, 0x35, "ldli0"},
|
|
{0x00, 0x36, "ldli1"},
|
|
{0x09, 0x37, "ldlip"},
|
|
{0x0a, 0x38, "ldbi"},
|
|
{0x0b, 0x39, "ldwi"},
|
|
{0x0c, 0x3a, "ldmi"},
|
|
{0x0d, 0x3b, "ldli"},
|
|
{0x00, 0x3c, "lmm"},
|
|
{0x0f, 0x3d, "ldregbit"},
|
|
{0x0e, 0x3d, "stregbit"},
|
|
{0x0e, 0x3d, "exregbit"},
|
|
{0x0f, 0x3e, "ldregbits"},
|
|
{0x0e, 0x3e, "stregbits"},
|
|
{0x0e, 0x3e, "exregbits"},
|
|
{0x0f, 0x3f, "ldreg"},
|
|
{0x06, 0x3f, "streg"},
|
|
{0x0e, 0x3f, "exreg"},
|
|
{0x10, 0x40, "ldlvc"},
|
|
{0x10, 0x41, "stlvc"},
|
|
{0x30, 0x42, "exlvc"},
|
|
{0x10, 0x43, "lalvc"},
|
|
{0x11, 0x60, "ldllc"},
|
|
{0x11, 0x61, "stllc"},
|
|
{0x31, 0x62, "exllc"},
|
|
{0x11, 0x63, "lallc"},
|
|
{0x00, 0x80, "ldba"},
|
|
{0x00, 0x81, "stba"},
|
|
{0x20, 0x82, "exba"},
|
|
{0x00, 0x83, "laba"},
|
|
{0x01, 0x84, "ldbo"},
|
|
{0x01, 0x85, "stbo"},
|
|
{0x21, 0x86, "exbo"},
|
|
{0x01, 0x87, "labo"},
|
|
{0x02, 0x88, "ldbv"},
|
|
{0x02, 0x89, "stbv"},
|
|
{0x22, 0x8a, "exbv"},
|
|
{0x02, 0x8b, "labv"},
|
|
{0x03, 0x8c, "ldbl"},
|
|
{0x03, 0x8d, "stbl"},
|
|
{0x23, 0x8e, "exbl"},
|
|
{0x03, 0x8f, "labl"},
|
|
{0x00, 0x90, "ldbax"},
|
|
{0x00, 0x91, "stbax"},
|
|
{0x20, 0x92, "exbax"},
|
|
{0x00, 0x93, "labax"},
|
|
{0x01, 0x94, "ldbox"},
|
|
{0x01, 0x95, "stbox"},
|
|
{0x21, 0x96, "exbox"},
|
|
{0x01, 0x97, "labox"},
|
|
{0x02, 0x98, "ldbvx"},
|
|
{0x02, 0x99, "stbvx"},
|
|
{0x22, 0x9a, "exbvx"},
|
|
{0x02, 0x9b, "labvx"},
|
|
{0x03, 0x9c, "ldblx"},
|
|
{0x03, 0x9d, "stblx"},
|
|
{0x23, 0x9e, "exblx"},
|
|
{0x03, 0x9f, "lablx"},
|
|
{0x00, 0xa0, "ldwa"},
|
|
{0x00, 0xa1, "stwa"},
|
|
{0x20, 0xa2, "exwa"},
|
|
{0x00, 0xa3, "lawa"},
|
|
{0x01, 0xa4, "ldwo"},
|
|
{0x01, 0xa5, "stwo"},
|
|
{0x21, 0xa6, "exwo"},
|
|
{0x01, 0xa7, "lawo"},
|
|
{0x02, 0xa8, "ldwv"},
|
|
{0x02, 0xa9, "stwv"},
|
|
{0x22, 0xaa, "exwv"},
|
|
{0x02, 0xab, "lawv"},
|
|
{0x03, 0xac, "ldwl"},
|
|
{0x03, 0xad, "stwl"},
|
|
{0x23, 0xae, "exwl"},
|
|
{0x03, 0xaf, "lawl"},
|
|
{0x00, 0xb0, "ldwax"},
|
|
{0x00, 0xb1, "stwax"},
|
|
{0x20, 0xb2, "exwax"},
|
|
{0x00, 0xb3, "lawax"},
|
|
{0x01, 0xb4, "ldwox"},
|
|
{0x01, 0xb5, "stwox"},
|
|
{0x21, 0xb6, "exwox"},
|
|
{0x01, 0xb7, "lawox"},
|
|
{0x02, 0xb8, "ldwvx"},
|
|
{0x02, 0xb9, "stwvx"},
|
|
{0x22, 0xba, "exwvx"},
|
|
{0x02, 0xbb, "lawvx"},
|
|
{0x03, 0xbc, "ldwlx"},
|
|
{0x03, 0xbd, "stwlx"},
|
|
{0x23, 0xbe, "exwlx"},
|
|
{0x03, 0xbf, "lawlx"},
|
|
{0x00, 0xc0, "ldla"},
|
|
{0x00, 0xc1, "stla"},
|
|
{0x20, 0xc2, "exla"},
|
|
{0x00, 0xc3, "lala"},
|
|
{0x01, 0xc4, "ldlo"},
|
|
{0x01, 0xc5, "stlo"},
|
|
{0x21, 0xc6, "exlo"},
|
|
{0x01, 0xc7, "lalo"},
|
|
{0x02, 0xc8, "ldlv"},
|
|
{0x02, 0xc9, "stlv"},
|
|
{0x22, 0xca, "exlv"},
|
|
{0x02, 0xcb, "lalv"},
|
|
{0x03, 0xcc, "ldll"},
|
|
{0x03, 0xcd, "stll"},
|
|
{0x23, 0xce, "exll"},
|
|
{0x03, 0xcf, "lall"},
|
|
{0x00, 0xd0, "ldlax"},
|
|
{0x00, 0xd1, "stlax"},
|
|
{0x20, 0xd2, "exlax"},
|
|
{0x00, 0xd3, "lalax"},
|
|
{0x01, 0xd4, "ldlox"},
|
|
{0x01, 0xd5, "stlox"},
|
|
{0x21, 0xd6, "exlox"},
|
|
{0x01, 0xd7, "lalox"},
|
|
{0x02, 0xd8, "ldlvx"},
|
|
{0x02, 0xd9, "stlvx"},
|
|
{0x22, 0xda, "exlvx"},
|
|
{0x02, 0xdb, "lalvx"},
|
|
{0x03, 0xdc, "ldllx"},
|
|
{0x03, 0xdd, "stllx"},
|
|
{0x23, 0xde, "exllx"},
|
|
{0x03, 0xdf, "lallx"},
|
|
{0x40, 0xe0, "ror"},
|
|
{0x40, 0xe1, "rol"},
|
|
{0x40, 0xe2, "shr"},
|
|
{0x40, 0xe3, "shl"},
|
|
{0x40, 0xe4, "minlim"},
|
|
{0x40, 0xe5, "maxlim"},
|
|
{0x40, 0xe6, "neg"},
|
|
{0x40, 0xe7, "com"},
|
|
{0x40, 0xe8, "and"},
|
|
{0x40, 0xe9, "abs"},
|
|
{0x40, 0xea, "or"},
|
|
{0x40, 0xeb, "xor"},
|
|
{0x40, 0xec, "add"},
|
|
{0x40, 0xed, "sub"},
|
|
{0x40, 0xee, "sar"},
|
|
{0x40, 0xef, "rev"},
|
|
{0x40, 0xf0, "andl"},
|
|
{0x40, 0xf1, "encode"},
|
|
{0x40, 0xf2, "orl"},
|
|
{0x40, 0xf3, "decode"},
|
|
{0x40, 0xf4, "mul"},
|
|
{0x40, 0xf5, "mulh"},
|
|
{0x40, 0xf6, "div"},
|
|
{0x40, 0xf7, "mod"},
|
|
{0x40, 0xf8, "sqrt"},
|
|
{0x40, 0xf9, "cmplt"},
|
|
{0x40, 0xfa, "cmpgt"},
|
|
{0x40, 0xfb, "cmpne"},
|
|
{0x40, 0xfc, "cmpeq"},
|
|
{0x40, 0xfd, "cmple"},
|
|
{0x40, 0xfe, "cmpge"},
|
|
{0x40, 0xff, "notl"},
|
|
{0x60, 0x00, "store"},
|
|
{0x60, 0x02, "repeat"},
|
|
{0x60, 0x06, "repeats"},
|
|
{0x60, 0x08, "randf"},
|
|
{0x60, 0x0c, "randr"},
|
|
{0x60, 0x10, "sexb"},
|
|
{0x60, 0x14, "sexw"},
|
|
{0x60, 0x18, "postclr"},
|
|
{0x60, 0x1c, "postset"},
|
|
{0x60, 0x20, "preinc"},
|
|
{0x60, 0x28, "postinc"},
|
|
{0x60, 0x30, "predec"},
|
|
{0x60, 0x38, "postdec"},
|
|
{0, 0, 0}};
|
|
/*
|
|
+ -----------------------------------------------------------------------------------------------------------------------------+
|
|
| TERMS OF USE: MIT License |
|
|
+------------------------------------------------------------------------------------------------------------------------------+
|
|
|Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation |
|
|
|files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, |
|
|
|modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software|
|
|
|is furnished to do so, subject to the following conditions: |
|
|
| |
|
|
|The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.|
|
|
| |
|
|
|THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
|
|
|WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
|
|
|COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
|
|
|ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
|
+------------------------------------------------------------------------------------------------------------------------------+
|
|
*/
|