Merge pull request #421 from Daniel-Cortez/emit-3
A batch of improvements for the '__emit' operator
This commit is contained in:
commit
8561b38d6d
@ -415,13 +415,14 @@ enum {
|
||||
tLABEL,
|
||||
tSTRING,
|
||||
/* argument types for emit/__emit */
|
||||
teANY , /* any value */
|
||||
teANY, /* any value */
|
||||
teNUMERIC, /* integer/rational number */
|
||||
teDATA , /* data (variable name or address) */
|
||||
teDATA, /* data (variable name or address) */
|
||||
teLOCAL, /* local variable (name or offset) */
|
||||
teREFERENCE, /* function argument passed by reference */
|
||||
teFUNCTN, /* Pawn function */
|
||||
teNATIVE, /* native function */
|
||||
teNONNEG , /* nonnegative integer */
|
||||
teNONNEG, /* nonnegative integer */
|
||||
/* for assigment to "lastst" only (see SC1.C) */
|
||||
tEXPR,
|
||||
tENDLESS, /* endless loop */
|
||||
@ -920,9 +921,9 @@ SC_VDECL FILE *outf; /* file written to */
|
||||
SC_VDECL jmp_buf errbuf; /* target of longjmp() on a fatal error */
|
||||
|
||||
/* Possible entries for "emit_flags"
|
||||
* Bits: 0 (epmBLOCK) multiline ('{}' block) syntax
|
||||
* 1 (epmEXPR) used within an expression
|
||||
* 2 (epmGLOBAL) used outside of a function
|
||||
* Bits: 0 (efBLOCK) multiline ('()' block) syntax
|
||||
* 1 (efEXPR) used within an expression
|
||||
* 2 (efGLOBAL) used outside of a function
|
||||
*/
|
||||
#define efBLOCK 1
|
||||
#define efEXPR 2
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1337,12 +1337,12 @@ static int command(void)
|
||||
case tpEMIT: {
|
||||
if (!SKIPPING) {
|
||||
/* write opcode to output file */
|
||||
char name[40];
|
||||
char name[MAX_INSTR_LEN];
|
||||
int i;
|
||||
insert_dbgline(fline);
|
||||
while (*lptr<=' ' && *lptr!='\0')
|
||||
lptr++;
|
||||
for (i=0; i<40 && (isalpha(*lptr) || *lptr=='.'); i++,lptr++)
|
||||
for (i=0; i<sizeof(name)-1 && (isalpha(*lptr) || *lptr=='.'); i++,lptr++)
|
||||
name[i]=(char)tolower(*lptr);
|
||||
name[i]='\0';
|
||||
stgwrite("\t");
|
||||
@ -1405,7 +1405,7 @@ static int command(void)
|
||||
break;
|
||||
} else if (current_token==tRATIONAL) {
|
||||
/* change the first bit to make float negative value */
|
||||
outval(val|((cell)1 << (PAWN_CELL_SIZE-1)),FALSE);
|
||||
outval(val|(cell)((ucell)1 << (PAWN_CELL_SIZE-1)),FALSE);
|
||||
code_idx+=opargs(1);
|
||||
break;
|
||||
} else {
|
||||
@ -2148,7 +2148,7 @@ char *sc_tokens[] = {
|
||||
";", ";", "-integer value-", "-rational value-", "-identifier-",
|
||||
"-label-", "-string-",
|
||||
"-any value-", "-numeric value-", "-data offset-", "-local variable-",
|
||||
"-function-", "-native function-", "-nonnegative integer-"
|
||||
"-reference-", "-function-", "-native function-", "-nonnegative integer-"
|
||||
};
|
||||
|
||||
SC_FUNC int lex(cell *lexvalue,char **lexsym)
|
||||
|
@ -1463,24 +1463,21 @@ static int hier2(value *lval)
|
||||
return FALSE;
|
||||
} /* case */
|
||||
case tEMIT:
|
||||
case t__EMIT: {
|
||||
cell val;
|
||||
char* st;
|
||||
int block_syntax=matchtoken('(');
|
||||
case t__EMIT:
|
||||
paranthese=matchtoken('(');
|
||||
emit_flags |= efEXPR;
|
||||
if (emit_stgbuf_idx==-1)
|
||||
emit_stgbuf_idx=stgidx;
|
||||
do {
|
||||
lex(&val,&st);
|
||||
emit_parse_line();
|
||||
} while ((block_syntax!=0) && matchtoken(','));
|
||||
if (block_syntax!=0)
|
||||
} while ((paranthese!=0) && matchtoken(','));
|
||||
if (paranthese!=0)
|
||||
needtoken(')');
|
||||
emit_flags &= ~efEXPR;
|
||||
lval->ident=iEXPRESSION;
|
||||
pc_sideeffect=TRUE;
|
||||
return FALSE;
|
||||
} /* case */
|
||||
default:
|
||||
lexpush();
|
||||
lvalue=hier1(lval);
|
||||
|
@ -50,7 +50,7 @@ static char *errmsg[] = {
|
||||
/*008*/ "must be a constant expression; assumed zero\n",
|
||||
/*009*/ "invalid array size (negative, zero or out of bounds)\n",
|
||||
/*010*/ "invalid function or declaration\n",
|
||||
/*011*/ "invalid outside functions\n",
|
||||
/*011*/ "stack offset/data address must be a multiple of cell size\n",
|
||||
/*012*/ "invalid function call, not a valid address\n",
|
||||
/*013*/ "no entry point (no public functions)\n",
|
||||
/*014*/ "invalid statement; not in switch\n",
|
||||
|
7
source/compiler/tests/__emit.inc
Normal file
7
source/compiler/tests/__emit.inc
Normal file
@ -0,0 +1,7 @@
|
||||
#include <console>
|
||||
|
||||
const global_const = 0;
|
||||
new stock global_var = 0;
|
||||
new stock global_array[2];
|
||||
forward global_func(); public global_func() { return 0; }
|
||||
native global_native(const string[]) = print;
|
30
source/compiler/tests/__emit_p1.meta
Normal file
30
source/compiler/tests/__emit_p1.meta
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p1.pwn(56) : error 001: expected token: "-any value-", but found "-(-function-)"
|
||||
__emit_p1.pwn(57) : error 001: expected token: "-any value-", but found "-(-label-)"
|
||||
__emit_p1.pwn(58) : error 001: expected token: "-any value-", but found "--"
|
||||
__emit_p1.pwn(58) : warning 215: expression has no effect
|
||||
__emit_p1.pwn(59) : error 017: undefined symbol "local_label2"
|
||||
__emit_p1.pwn(60) : error 001: expected token: "-any value-", but found "-:"
|
||||
__emit_p1.pwn(60) : error 029: invalid expression, assumed zero
|
||||
__emit_p1.pwn(60) : warning 215: expression has no effect
|
||||
__emit_p1.pwn(83) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p1.pwn(84) : error 001: expected token: "-integer value-", but found "-function-"
|
||||
__emit_p1.pwn(85) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p1.pwn(86) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p1.pwn(87) : error 001: expected token: "-integer value-", but found "-local variable-"
|
||||
__emit_p1.pwn(88) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p1.pwn(89) : error 001: expected token: "-integer value-", but found "-label-"
|
||||
__emit_p1.pwn(115) : error 001: expected token: "-nonnegative integer-", but found "-data offset-"
|
||||
__emit_p1.pwn(116) : error 001: expected token: "-nonnegative integer-", but found "-function-"
|
||||
__emit_p1.pwn(117) : error 001: expected token: "-nonnegative integer-", but found "-reference-"
|
||||
__emit_p1.pwn(118) : error 001: expected token: "-nonnegative integer-", but found "-reference-"
|
||||
__emit_p1.pwn(119) : error 001: expected token: "-nonnegative integer-", but found "-local variable-"
|
||||
__emit_p1.pwn(120) : error 001: expected token: "-nonnegative integer-", but found "-data offset-"
|
||||
__emit_p1.pwn(121) : error 001: expected token: "-nonnegative integer-", but found "-label-"
|
||||
__emit_p1.pwn(122) : error 001: expected token: "-nonnegative integer-", but found "-1"
|
||||
__emit_p1.pwn(123) : error 001: expected token: "-nonnegative integer-", but found "-1"
|
||||
__emit_p1.pwn(127) : error 001: expected token: "-nonnegative integer-", but found "-2147483648"
|
||||
"""
|
||||
}
|
141
source/compiler/tests/__emit_p1.pwn
Normal file
141
source/compiler/tests/__emit_p1.pwn
Normal file
@ -0,0 +1,141 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__any(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit const.pri global_const;
|
||||
emit const.pri global_var;
|
||||
emit const.pri global_func;
|
||||
emit const.pri local_refvar;
|
||||
emit const.pri local_refarray;
|
||||
emit const.pri local_const;
|
||||
emit const.pri local_var;
|
||||
emit const.pri local_static_var;
|
||||
emit const.pri local_label;
|
||||
emit const.pri :local_label;
|
||||
emit const.pri :local_label2;
|
||||
emit const.pri 0;
|
||||
emit const.pri -0;
|
||||
emit const.pri 1;
|
||||
emit const.pri -1;
|
||||
emit const.pri 0x0;
|
||||
emit const.pri -0x0;
|
||||
emit const.pri 0x1;
|
||||
emit const.pri -0x1;
|
||||
#if cellbits == 16
|
||||
emit const.pri 32767;
|
||||
emit const.pri -32768;
|
||||
emit const.pri 0x7FFF;
|
||||
emit const.pri -0x7FFF;
|
||||
emit const.pri 0x8000;
|
||||
emit const.pri -0x8000;
|
||||
#elseif cellbits == 32
|
||||
emit const.pri 2147483647;
|
||||
emit const.pri -2147483648;
|
||||
emit const.pri 0x7FFFFFFF;
|
||||
emit const.pri -0x7FFFFFFF;
|
||||
emit const.pri 0x80000000;
|
||||
emit const.pri -0x80000000;
|
||||
#else // cellbits == 64
|
||||
emit const.pri 9223372036854775807;
|
||||
emit const.pri -9223372036854775808;
|
||||
emit const.pri 0x7FFFFFFFFFFFFFFF;
|
||||
emit const.pri -0x7FFFFFFFFFFFFFFF;
|
||||
emit const.pri 0x8000000000000000;
|
||||
emit const.pri -0x8000000000000000;
|
||||
#endif
|
||||
emit const.pri (cellbits / charbits * 2);
|
||||
|
||||
// should trigger an error
|
||||
emit const.pri -global_func;
|
||||
emit const.pri -local_label;
|
||||
emit const.pri --0;
|
||||
emit const.pri local_label2;
|
||||
emit const.pri -:local_label;
|
||||
|
||||
local_label2:
|
||||
}
|
||||
|
||||
stock test__integer(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit jrel global_const;
|
||||
emit jrel local_const;
|
||||
emit jrel 0;
|
||||
emit jrel 1;
|
||||
emit jrel -1;
|
||||
emit jrel 0x1;
|
||||
emit jrel -0x1;
|
||||
emit jrel (cellbits / charbits * 2);
|
||||
|
||||
// should trigger an error
|
||||
emit jrel global_var;
|
||||
emit jrel global_func;
|
||||
emit jrel local_refvar;
|
||||
emit jrel local_refarray;
|
||||
emit jrel local_var;
|
||||
emit jrel local_static_var;
|
||||
emit jrel local_label;
|
||||
}
|
||||
|
||||
stock test__nonneg(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit cmps global_const;
|
||||
emit cmps local_const;
|
||||
emit cmps 0;
|
||||
emit cmps 1;
|
||||
emit cmps 0x1;
|
||||
emit cmps (cellbits / charbits * 2);
|
||||
#if cellbits == 16
|
||||
emit cmps 0x7FFF;
|
||||
#elseif cellbits == 32
|
||||
emit cmps 0x7FFFFFFF;
|
||||
#else // cellbits == 64
|
||||
emit cmps 0x7FFFFFFFFFFFFFFF;
|
||||
#endif
|
||||
|
||||
// should trigger an error
|
||||
emit cmps global_var;
|
||||
emit cmps global_func;
|
||||
emit cmps local_refvar;
|
||||
emit cmps local_refarray;
|
||||
emit cmps local_var;
|
||||
emit cmps local_static_var;
|
||||
emit cmps local_label;
|
||||
emit cmps -1;
|
||||
emit cmps -0x1;
|
||||
#if cellbits == 16
|
||||
emit cmps 0x8000;
|
||||
#elseif cellbits == 32
|
||||
emit cmps 0x80000000;
|
||||
#else // cellbits == 64
|
||||
emit cmps 0x8000000000000000;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t;
|
||||
static a[1];
|
||||
test__any(t, a); // 4
|
||||
test__integer(t, a); // 7
|
||||
test__nonneg(t, a); // 10
|
||||
}
|
25
source/compiler/tests/__emit_p2.meta
Normal file
25
source/compiler/tests/__emit_p2.meta
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p2.pwn(30) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p2.pwn(31) : error 001: expected token: "-integer value-", but found "-function-"
|
||||
__emit_p2.pwn(32) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p2.pwn(33) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p2.pwn(34) : error 001: expected token: "-integer value-", but found "-local variable-"
|
||||
__emit_p2.pwn(35) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p2.pwn(36) : error 001: expected token: "-integer value-", but found "-label-"
|
||||
__emit_p2.pwn(37) : error 050: invalid range
|
||||
__emit_p2.pwn(38) : error 050: invalid range
|
||||
__emit_p2.pwn(43) : error 050: invalid range
|
||||
__emit_p2.pwn(44) : error 050: invalid range
|
||||
__emit_p2.pwn(65) : error 001: expected token: "-label-", but found "-numeric value-"
|
||||
__emit_p2.pwn(66) : error 001: expected token: "-label-", but found "-data offset-"
|
||||
__emit_p2.pwn(67) : error 001: expected token: "-label-", but found "-function-"
|
||||
__emit_p2.pwn(68) : error 001: expected token: "-label-", but found "-reference-"
|
||||
__emit_p2.pwn(69) : error 001: expected token: "-label-", but found "-reference-"
|
||||
__emit_p2.pwn(70) : error 001: expected token: "-label-", but found "-numeric value-"
|
||||
__emit_p2.pwn(71) : error 001: expected token: "-label-", but found "-local variable-"
|
||||
__emit_p2.pwn(72) : error 001: expected token: "-label-", but found "-data offset-"
|
||||
__emit_p2.pwn(73) : error 001: expected token: "-label-", but found "-integer value-"
|
||||
"""
|
||||
}
|
82
source/compiler/tests/__emit_p2.pwn
Normal file
82
source/compiler/tests/__emit_p2.pwn
Normal file
@ -0,0 +1,82 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__shift(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit shl.c.pri global_const;
|
||||
emit shl.c.pri local_const;
|
||||
emit shl.c.pri 0;
|
||||
emit shl.c.pri 1;
|
||||
emit shl.c.pri 15;
|
||||
emit shl.c.pri (cellbits / charbits);
|
||||
#if cellbits == 16
|
||||
emit shl.c.pri 15;
|
||||
emit shl.c.pri 0xF;
|
||||
#elseif cellbits == 32
|
||||
emit shl.c.pri 31;
|
||||
emit shl.c.pri 0x1F;
|
||||
#else // cellbits == 64
|
||||
emit shl.c.pri 63;
|
||||
emit shl.c.pri 0x3F;
|
||||
#endif
|
||||
|
||||
// should trigger an error
|
||||
emit shl.c.pri global_var;
|
||||
emit shl.c.pri global_func;
|
||||
emit shl.c.pri local_refvar;
|
||||
emit shl.c.pri local_refarray;
|
||||
emit shl.c.pri local_var;
|
||||
emit shl.c.pri local_static_var;
|
||||
emit shl.c.pri local_label;
|
||||
emit shl.c.pri -1;
|
||||
emit shl.c.pri -0x1;
|
||||
#if cellbits == 16
|
||||
emit shl.c.pri 16;
|
||||
emit shl.c.pri 0x10;
|
||||
#elseif cellbits == 32
|
||||
emit shl.c.pri 32;
|
||||
emit shl.c.pri 0x20;
|
||||
#else // cellbits == 64
|
||||
emit shl.c.pri 64;
|
||||
emit shl.c.pri 0x40;
|
||||
#endif
|
||||
}
|
||||
|
||||
stock test__label(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit jump local_label;
|
||||
emit jump local_label2;
|
||||
emit jump :local_label2;
|
||||
local_label2:
|
||||
|
||||
// should trigger an error
|
||||
emit jump global_const;
|
||||
emit jump global_var;
|
||||
emit jump global_func;
|
||||
emit jump local_refvar;
|
||||
emit jump local_refarray;
|
||||
emit jump local_const;
|
||||
emit jump local_var;
|
||||
emit jump local_static_var;
|
||||
emit jump 0;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[1];
|
||||
test__shift(t, a); // 11
|
||||
test__label(t, a); // 9
|
||||
}
|
23
source/compiler/tests/__emit_p3.meta
Normal file
23
source/compiler/tests/__emit_p3.meta
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p3.pwn(17) : error 001: expected token: "-function-", but found "-numeric value-"
|
||||
__emit_p3.pwn(18) : error 001: expected token: "-function-", but found "-data offset-"
|
||||
__emit_p3.pwn(19) : error 001: expected token: "-function-", but found "-reference-"
|
||||
__emit_p3.pwn(20) : error 001: expected token: "-function-", but found "-reference-"
|
||||
__emit_p3.pwn(21) : error 001: expected token: "-function-", but found "-numeric value-"
|
||||
__emit_p3.pwn(22) : error 001: expected token: "-function-", but found "-local variable-"
|
||||
__emit_p3.pwn(23) : error 001: expected token: "-function-", but found "-data offset-"
|
||||
__emit_p3.pwn(24) : error 001: expected token: "-function-", but found "-label-"
|
||||
__emit_p3.pwn(25) : error 001: expected token: "-function-", but found "-integer value-"
|
||||
__emit_p3.pwn(26) : error 001: expected token: "-native function-", but found "-numeric value-"
|
||||
__emit_p3.pwn(27) : error 001: expected token: "-native function-", but found "-data offset-"
|
||||
__emit_p3.pwn(28) : error 001: expected token: "-native function-", but found "-reference-"
|
||||
__emit_p3.pwn(29) : error 001: expected token: "-native function-", but found "-reference-"
|
||||
__emit_p3.pwn(30) : error 001: expected token: "-native function-", but found "-numeric value-"
|
||||
__emit_p3.pwn(31) : error 001: expected token: "-native function-", but found "-local variable-"
|
||||
__emit_p3.pwn(32) : error 001: expected token: "-native function-", but found "-data offset-"
|
||||
__emit_p3.pwn(33) : error 001: expected token: "-native function-", but found "-label-"
|
||||
__emit_p3.pwn(34) : error 001: expected token: "-native function-", but found "-integer value-"
|
||||
"""
|
||||
}
|
42
source/compiler/tests/__emit_p3.pwn
Normal file
42
source/compiler/tests/__emit_p3.pwn
Normal file
@ -0,0 +1,42 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__function(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit call global_func;
|
||||
emit sysreq.c global_native;
|
||||
emit sysreq.n global_native 0;
|
||||
|
||||
// should trigger an error
|
||||
emit call global_const;
|
||||
emit call global_var;
|
||||
emit call local_refvar;
|
||||
emit call local_refarray;
|
||||
emit call local_const;
|
||||
emit call local_var;
|
||||
emit call local_static_var;
|
||||
emit call local_label;
|
||||
emit call 0;
|
||||
emit sysreq.c global_const;
|
||||
emit sysreq.c global_var;
|
||||
emit sysreq.c local_refvar;
|
||||
emit sysreq.c local_refarray;
|
||||
emit sysreq.c local_const;
|
||||
emit sysreq.c local_var;
|
||||
emit sysreq.c local_static_var;
|
||||
emit sysreq.c local_label;
|
||||
emit sysreq.c 0;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[1];
|
||||
test__function(t, a); // 18
|
||||
}
|
25
source/compiler/tests/__emit_p4.meta
Normal file
25
source/compiler/tests/__emit_p4.meta
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p4.pwn(16) : error 001: expected token: "-data offset-", but found "-numeric value-"
|
||||
__emit_p4.pwn(17) : error 001: expected token: "-data offset-", but found "-function-"
|
||||
__emit_p4.pwn(18) : error 001: expected token: "-data offset-", but found "-reference-"
|
||||
__emit_p4.pwn(19) : error 001: expected token: "-data offset-", but found "-reference-"
|
||||
__emit_p4.pwn(20) : error 001: expected token: "-data offset-", but found "-numeric value-"
|
||||
__emit_p4.pwn(21) : error 001: expected token: "-data offset-", but found "-local variable-"
|
||||
__emit_p4.pwn(22) : error 001: expected token: "-data offset-", but found "-label-"
|
||||
__emit_p4.pwn(23) : error 001: expected token: "-data offset-", but found "-integer value-"
|
||||
__emit_p4.pwn(48) : error 001: expected token: "-local variable-", but found "-data offset-"
|
||||
__emit_p4.pwn(49) : error 001: expected token: "-local variable-", but found "-function-"
|
||||
__emit_p4.pwn(50) : error 001: expected token: "-local variable-", but found "-data offset-"
|
||||
__emit_p4.pwn(51) : error 001: expected token: "-local variable-", but found "-label-"
|
||||
__emit_p4.pwn(52) : error 001: expected token: "-local variable-", but found "-reference-"
|
||||
__emit_p4.pwn(53) : error 001: expected token: "-local variable-", but found "-reference-"
|
||||
__emit_p4.pwn(54) : error 001: expected token: "-local variable-", but found "-(-data offset-)"
|
||||
__emit_p4.pwn(55) : error 001: expected token: "-local variable-", but found "-(-function-)"
|
||||
__emit_p4.pwn(56) : error 001: expected token: "-local variable-", but found "-(-data offset-)"
|
||||
__emit_p4.pwn(57) : error 001: expected token: "-local variable-", but found "-(-label-)"
|
||||
__emit_p4.pwn(58) : error 001: expected token: "-local variable-", but found "-(-reference-)"
|
||||
__emit_p4.pwn(59) : error 001: expected token: "-local variable-", but found "-(-reference-)"
|
||||
"""
|
||||
}
|
68
source/compiler/tests/__emit_p4.pwn
Normal file
68
source/compiler/tests/__emit_p4.pwn
Normal file
@ -0,0 +1,68 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__data_offset(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit load.pri global_var;
|
||||
emit load.pri local_static_var;
|
||||
|
||||
// should trigger an error
|
||||
emit load.pri global_const;
|
||||
emit load.pri global_func;
|
||||
emit load.pri local_refvar;
|
||||
emit load.pri local_refarray;
|
||||
emit load.pri local_const;
|
||||
emit load.pri local_var;
|
||||
emit load.pri local_label;
|
||||
emit load.pri 0;
|
||||
}
|
||||
|
||||
stock test__local_var(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit load.s.pri global_const;
|
||||
emit load.s.pri local_refvar;
|
||||
emit load.s.pri local_refarray;
|
||||
emit load.s.pri local_const;
|
||||
emit load.s.pri local_var;
|
||||
emit load.s.pri 20;
|
||||
emit load.s.pri -20;
|
||||
emit stor.s.pri global_const;
|
||||
emit stor.s.pri local_const;
|
||||
emit stor.s.pri local_var;
|
||||
emit stor.s.pri 20;
|
||||
emit stor.s.pri -20;
|
||||
|
||||
// should trigger an error
|
||||
emit load.s.pri global_var;
|
||||
emit load.s.pri global_func;
|
||||
emit load.s.pri local_static_var;
|
||||
emit load.s.pri local_label;
|
||||
emit stor.s.pri local_refvar;
|
||||
emit stor.s.pri local_refarray;
|
||||
emit load.s.pri -global_var;
|
||||
emit load.s.pri -global_func;
|
||||
emit load.s.pri -local_static_var;
|
||||
emit load.s.pri -local_label;
|
||||
emit stor.s.pri -local_refvar;
|
||||
emit stor.s.pri -local_refarray;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[1];
|
||||
test__data_offset(t, a); // 8
|
||||
test__local_var(t, a); // 6
|
||||
}
|
29
source/compiler/tests/__emit_p5.meta
Normal file
29
source/compiler/tests/__emit_p5.meta
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p5.pwn(25) : error 050: invalid range
|
||||
__emit_p5.pwn(26) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p5.pwn(27) : error 001: expected token: "-integer value-", but found "-function-"
|
||||
__emit_p5.pwn(28) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p5.pwn(29) : error 050: invalid range
|
||||
__emit_p5.pwn(30) : error 001: expected token: "-integer value-", but found "-local variable-"
|
||||
__emit_p5.pwn(31) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p5.pwn(32) : error 001: expected token: "-integer value-", but found "-label-"
|
||||
__emit_p5.pwn(33) : error 050: invalid range
|
||||
__emit_p5.pwn(34) : error 050: invalid range
|
||||
__emit_p5.pwn(35) : error 050: invalid range
|
||||
__emit_p5.pwn(36) : error 050: invalid range
|
||||
__emit_p5.pwn(37) : error 050: invalid range
|
||||
__emit_p5.pwn(38) : error 050: invalid range
|
||||
__emit_p5.pwn(61) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p5.pwn(62) : error 001: expected token: "-integer value-", but found "-function-"
|
||||
__emit_p5.pwn(63) : error 001: expected token: "-integer value-", but found "-reference-"
|
||||
__emit_p5.pwn(64) : error 001: expected token: "-integer value-", but found "-local variable-"
|
||||
__emit_p5.pwn(65) : error 001: expected token: "-integer value-", but found "-data offset-"
|
||||
__emit_p5.pwn(66) : error 001: expected token: "-integer value-", but found "-label-"
|
||||
__emit_p5.pwn(67) : error 050: invalid range
|
||||
__emit_p5.pwn(68) : error 050: invalid range
|
||||
__emit_p5.pwn(69) : error 050: invalid range
|
||||
__emit_p5.pwn(70) : error 050: invalid range
|
||||
"""
|
||||
}
|
79
source/compiler/tests/__emit_p5.pwn
Normal file
79
source/compiler/tests/__emit_p5.pwn
Normal file
@ -0,0 +1,79 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
const global_const_1 = 1;
|
||||
|
||||
|
||||
stock test__op_lodb_strb(&local_refvar)
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
const local_const_1 = 0x1;
|
||||
|
||||
// ok
|
||||
emit lodb.i 1;
|
||||
emit lodb.i 2;
|
||||
emit lodb.i 4;
|
||||
emit lodb.i 0x1;
|
||||
emit lodb.i 0x2;
|
||||
emit lodb.i 0x4;
|
||||
emit lodb.i global_const_1;
|
||||
emit lodb.i local_const_1;
|
||||
|
||||
// should trigger an error
|
||||
emit lodb.i global_const;
|
||||
emit lodb.i global_var;
|
||||
emit lodb.i global_func;
|
||||
emit lodb.i local_refvar;
|
||||
emit lodb.i local_const;
|
||||
emit lodb.i local_var;
|
||||
emit lodb.i local_static_var;
|
||||
emit lodb.i local_label;
|
||||
emit lodb.i -1;
|
||||
emit lodb.i 3;
|
||||
emit lodb.i 5;
|
||||
emit lodb.i -0x1;
|
||||
emit lodb.i 0x3;
|
||||
emit lodb.i 0x5;
|
||||
}
|
||||
|
||||
stock test__op_align(&local_refvar)
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
local_label:
|
||||
|
||||
// ok
|
||||
emit align.pri global_const;
|
||||
emit align.pri local_const;
|
||||
emit align.pri 0;
|
||||
emit align.pri 1;
|
||||
emit align.pri 2;
|
||||
emit align.pri 3;
|
||||
emit align.pri 0x0;
|
||||
emit align.pri 0x1;
|
||||
emit align.pri 0x2;
|
||||
emit align.pri 0x3;
|
||||
|
||||
// should trigger an error
|
||||
emit align.pri global_var;
|
||||
emit align.pri global_func;
|
||||
emit align.pri local_refvar;
|
||||
emit align.pri local_var;
|
||||
emit align.pri local_static_var;
|
||||
emit align.pri local_label;
|
||||
emit align.pri -1;
|
||||
emit align.pri 4;
|
||||
emit align.pri -0x1;
|
||||
emit align.pri 0x4;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t;
|
||||
test__op_lodb_strb(t); // 14
|
||||
test__op_align(t); // 10
|
||||
}
|
25
source/compiler/tests/__emit_p6.meta
Normal file
25
source/compiler/tests/__emit_p6.meta
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p6.pwn(23) : error 076: syntax error in the expression, or invalid function call
|
||||
__emit_p6.pwn(24) : error 076: syntax error in the expression, or invalid function call
|
||||
__emit_p6.pwn(25) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p6.pwn(26) : error 033: array must be indexed (variable "local_refarray")
|
||||
__emit_p6.pwn(45) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(46) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(47) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(48) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(49) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p6.pwn(50) : error 033: array must be indexed (variable "local_refarray")
|
||||
__emit_p6.pwn(69) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(70) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(71) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(72) : error 022: must be lvalue (non-constant)
|
||||
__emit_p6.pwn(73) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p6.pwn(74) : error 033: array must be indexed (variable "local_refarray")
|
||||
__emit_p6.pwn(96) : error 076: syntax error in the expression, or invalid function call
|
||||
__emit_p6.pwn(97) : error 076: syntax error in the expression, or invalid function call
|
||||
__emit_p6.pwn(98) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p6.pwn(99) : error 033: array must be indexed (variable "local_refarray")
|
||||
"""
|
||||
}
|
110
source/compiler/tests/__emit_p6.pwn
Normal file
110
source/compiler/tests/__emit_p6.pwn
Normal file
@ -0,0 +1,110 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__op_load_u_pri_alt(&local_refvar, const local_refarray[])
|
||||
{
|
||||
const local_const = 1;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit load.u.pri global_const;
|
||||
emit load.u.pri global_var;
|
||||
emit load.u.pri local_const;
|
||||
emit load.u.pri local_var;
|
||||
emit load.u.pri local_static_var;
|
||||
emit load.u.pri local_refvar;
|
||||
emit load.u.pri global_const + local_const;
|
||||
emit load.u.pri global_var * local_var;
|
||||
emit load.u.pri local_refarray[0];
|
||||
|
||||
// should trigger an error
|
||||
emit load.u.pri global_func;
|
||||
emit load.u.pri global_native;
|
||||
emit load.u.pri local_array;
|
||||
emit load.u.pri local_refarray;
|
||||
}
|
||||
|
||||
stock test__op_stor_u_pri_alt(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 1;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit stor.u.pri global_var;
|
||||
emit stor.u.pri local_var;
|
||||
emit stor.u.pri local_static_var;
|
||||
emit stor.u.pri local_refvar;
|
||||
emit stor.u.pri local_array[1];
|
||||
emit stor.u.pri local_refarray[local_const];
|
||||
|
||||
// should trigger an error
|
||||
emit stor.u.pri global_const;
|
||||
emit stor.u.pri global_func;
|
||||
emit stor.u.pri global_native;
|
||||
emit stor.u.pri local_const;
|
||||
emit stor.u.pri local_array;
|
||||
emit stor.u.pri local_refarray;
|
||||
}
|
||||
|
||||
stock test__op_addr_u_pri_alt(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 1;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit addr.u.pri global_var;
|
||||
emit addr.u.pri local_var;
|
||||
emit addr.u.pri local_static_var;
|
||||
emit addr.u.pri local_refvar;
|
||||
emit addr.u.pri local_array[1];
|
||||
emit addr.u.pri local_refarray[local_const];
|
||||
|
||||
// should trigger an error
|
||||
emit addr.u.pri global_const;
|
||||
emit addr.u.pri global_func;
|
||||
emit addr.u.pri global_native;
|
||||
emit addr.u.pri local_const;
|
||||
emit addr.u.pri local_array;
|
||||
emit addr.u.pri local_refarray;
|
||||
}
|
||||
|
||||
stock test__push_u(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 1;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit push.u global_const;
|
||||
emit push.u global_var;
|
||||
emit push.u local_refvar;
|
||||
emit push.u local_const;
|
||||
emit push.u local_var;
|
||||
emit push.u local_static_var;
|
||||
emit push.u (global_const + local_const);
|
||||
emit push.u (global_var * local_var + local_static_var + local_refvar);
|
||||
emit push.u local_refarray[0];
|
||||
|
||||
// should trigger an error
|
||||
emit push.u global_func;
|
||||
emit push.u global_native;
|
||||
emit push.u local_array;
|
||||
emit push.u local_refarray;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[2];
|
||||
test__op_load_u_pri_alt(t, a); // 4
|
||||
test__op_stor_u_pri_alt(t, a); // 6
|
||||
test__op_addr_u_pri_alt(t, a); // 6
|
||||
test__push_u(t, a); // 4
|
||||
}
|
25
source/compiler/tests/__emit_p7.meta
Normal file
25
source/compiler/tests/__emit_p7.meta
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
'test_type': 'output_check',
|
||||
'errors': """
|
||||
__emit_p7.pwn(20) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(21) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(22) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(23) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(24) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p7.pwn(25) : error 033: array must be indexed (variable "local_refarray")
|
||||
__emit_p7.pwn(26) : error 035: argument type mismatch (argument 1)
|
||||
__emit_p7.pwn(27) : error 035: argument type mismatch (argument 1)
|
||||
__emit_p7.pwn(46) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(47) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(48) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(49) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(50) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p7.pwn(51) : error 033: array must be indexed (variable "local_refarray")
|
||||
__emit_p7.pwn(70) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(71) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(72) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(73) : error 022: must be lvalue (non-constant)
|
||||
__emit_p7.pwn(74) : error 033: array must be indexed (variable "local_array")
|
||||
__emit_p7.pwn(75) : error 033: array must be indexed (variable "local_refarray")
|
||||
"""
|
||||
}
|
85
source/compiler/tests/__emit_p7.pwn
Normal file
85
source/compiler/tests/__emit_p7.pwn
Normal file
@ -0,0 +1,85 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
|
||||
stock test__push_u_adr(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 1;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit push.u.adr global_var;
|
||||
emit push.u.adr local_refvar;
|
||||
emit push.u.adr local_var;
|
||||
emit push.u.adr local_static_var;
|
||||
emit push.u.adr local_array[1];
|
||||
emit push.u.adr local_refarray[local_const];
|
||||
|
||||
// should trigger an error
|
||||
emit push.u.adr global_const;
|
||||
emit push.u.adr global_func;
|
||||
emit push.u.adr global_native;
|
||||
emit push.u.adr local_const;
|
||||
emit push.u.adr local_array;
|
||||
emit push.u.adr local_refarray;
|
||||
emit push.u.adr local_array{1};
|
||||
emit push.u.adr local_array{local_var};
|
||||
}
|
||||
|
||||
stock test__zero_u(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit zero.u global_var;
|
||||
emit zero.u local_refvar;
|
||||
emit zero.u local_var;
|
||||
emit zero.u local_static_var;
|
||||
emit zero.u local_array[1];
|
||||
emit zero.u local_refarray[local_const];
|
||||
|
||||
// should trigger an error
|
||||
emit zero.u global_const;
|
||||
emit zero.u global_func;
|
||||
emit zero.u global_native;
|
||||
emit zero.u local_const;
|
||||
emit zero.u local_array;
|
||||
emit zero.u local_refarray;
|
||||
}
|
||||
|
||||
stock test__inc_dec_u(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const = 0;
|
||||
new local_var = 0;
|
||||
static local_static_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
// ok
|
||||
emit inc.u global_var;
|
||||
emit inc.u local_refvar;
|
||||
emit inc.u local_var;
|
||||
emit inc.u local_static_var;
|
||||
emit inc.u local_array[1];
|
||||
emit inc.u local_refarray[local_const];
|
||||
|
||||
// should trigger an error
|
||||
emit inc.u global_const;
|
||||
emit inc.u global_func;
|
||||
emit inc.u global_native;
|
||||
emit inc.u local_const;
|
||||
emit inc.u local_array;
|
||||
emit inc.u local_refarray;
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[2];
|
||||
test__push_u_adr(t, a); // 8
|
||||
test__zero_u(t, a); // 6
|
||||
test__inc_dec_u(t, a); // 6
|
||||
}
|
702
source/compiler/tests/__emit_pcode_check.meta
Normal file
702
source/compiler/tests/__emit_pcode_check.meta
Normal file
@ -0,0 +1,702 @@
|
||||
{
|
||||
'test_type': 'pcode_check',
|
||||
'code_pattern': r"""
|
||||
[0-9a-f]+ push.r 00000000
|
||||
[0-9a-f]+ load.pri 00000000
|
||||
[0-9a-f]+ load.pri 00000004
|
||||
[0-9a-f]+ load.pri 0000000c
|
||||
[0-9a-f]+ push.r 00000001
|
||||
[0-9a-f]+ load.s.pri 00001234
|
||||
[0-9a-f]+ load.s.pri 0000000c
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ load.s.pri 00005678
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.pri 0000fedc
|
||||
[0-9a-f]+ push.r 00000002
|
||||
[0-9a-f]+ call [0-9a-f]+
|
||||
[0-9a-f]+ sysreq.c 00000000
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ sysreq.c 00000000
|
||||
[0-9a-f]+ stack 00000004
|
||||
[0-9a-f]+ push.r 00000003
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ lodb.i 00000002
|
||||
[0-9a-f]+ lodb.i 00000004
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ lodb.i 00000002
|
||||
[0-9a-f]+ lodb.i 00000004
|
||||
[0-9a-f]+ push.r 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ align.pri 00000000
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ align.pri 00000002
|
||||
[0-9a-f]+ align.pri 00000003
|
||||
[0-9a-f]+ align.pri 00000000
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ align.pri 00000002
|
||||
[0-9a-f]+ align.pri 00000003
|
||||
[0-9a-f]+ push.r 00000005
|
||||
[0-9a-f]+ push.c 00001234
|
||||
[0-9a-f]+ push.c 00005678
|
||||
[0-9a-f]+ push.c 00009abc
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ push.c 00000004
|
||||
[0-9a-f]+ push.c 0000000c
|
||||
[0-9a-f]+ push.c 0000000c
|
||||
[0-9a-f]+ push.c fffffffc
|
||||
[0-9a-f]+ push.r 00000006
|
||||
[0-9a-f]+ push 00000000
|
||||
[0-9a-f]+ push 0000000c
|
||||
[0-9a-f]+ push.r 00000007
|
||||
[0-9a-f]+ push.s 00001234
|
||||
[0-9a-f]+ push.s 00005678
|
||||
[0-9a-f]+ push.s 0000000c
|
||||
[0-9a-f]+ push.s 00000010
|
||||
[0-9a-f]+ push.s fffffffc
|
||||
[0-9a-f]+ push.r 00000008
|
||||
[0-9a-f]+ push.adr 00001234
|
||||
[0-9a-f]+ push.adr 00005678
|
||||
[0-9a-f]+ push.adr 0000000c
|
||||
[0-9a-f]+ push.adr 00000010
|
||||
[0-9a-f]+ push.adr fffffffc
|
||||
[0-9a-f]+ push.r 00000009
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ const.pri 00001234
|
||||
[0-9a-f]+ stor.pri 00000000
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ const.pri 00005678
|
||||
[0-9a-f]+ stor.pri 0000000c
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ push.r 0000000a
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ const.pri 00005678
|
||||
[0-9a-f]+ stor.s.pri fffffffc
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ push.r 0000000b
|
||||
[0-9a-f]+ load.pri 00000000
|
||||
[0-9a-f]+ load.alt 0000000c
|
||||
[0-9a-f]+ push.r 0000000c
|
||||
[0-9a-f]+ load.s.pri 0000000c
|
||||
[0-9a-f]+ load.s.alt fffffffc
|
||||
[0-9a-f]+ push.r 00000010
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ zero.alt
|
||||
[0-9a-f]+ load.s.pri 0000000c
|
||||
[0-9a-f]+ load.s.alt 0000000c
|
||||
[0-9a-f]+ addr.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffffc
|
||||
[0-9a-f]+ const.pri 0000000c
|
||||
[0-9a-f]+ const.alt 0000000c
|
||||
[0-9a-f]+ push.r 00000011
|
||||
[0-9a-f]+ const.pri 00000004
|
||||
[0-9a-f]+ const.alt 00000008
|
||||
[0-9a-f]+ const.pri 00000010
|
||||
[0-9a-f]+ const.alt 00000014
|
||||
[0-9a-f]+ addr.pri fffffff4
|
||||
[0-9a-f]+ addr.alt fffffff8
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 00000012
|
||||
[0-9a-f]+ const.pri 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ const.alt 00000005
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ const.pri 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ const.alt 00000011
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ addr.pri fffffff4
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ addr.alt fffffff5
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ push.r 00000013
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ inc.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ push.r 00000014
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 00000015
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 00000016
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ call [0-9a-f]+
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ call [0-9a-f]+
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 00000017
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ call [0-9a-f]+
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ call [0-9a-f]+
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 00000018
|
||||
[0-9a-f]+ const.pri 00001234
|
||||
[0-9a-f]+ load.pri 00000000
|
||||
[0-9a-f]+ lref.s.pri 0000000c
|
||||
[0-9a-f]+ const.pri 00005678
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.pri 0000000c
|
||||
[0-9a-f]+ const.pri 00009abc
|
||||
[0-9a-f]+ push.r 00000019
|
||||
[0-9a-f]+ const.pri 000068ac
|
||||
[0-9a-f]+ push.r 0000001a
|
||||
[0-9a-f]+ load.pri 00000000
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ pop.alt
|
||||
[0-9a-f]+ smul
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ push.r 0000001b
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ load.i
|
||||
[0-9a-f]+ push.r 00000020
|
||||
[0-9a-f]+ stor.pri 00000000
|
||||
[0-9a-f]+ stor.alt 00000000
|
||||
[0-9a-f]+ sref.s.pri 0000000c
|
||||
[0-9a-f]+ sref.s.alt 0000000c
|
||||
[0-9a-f]+ stor.s.pri fffffffc
|
||||
[0-9a-f]+ stor.s.alt fffffffc
|
||||
[0-9a-f]+ stor.pri 0000000c
|
||||
[0-9a-f]+ stor.alt 0000000c
|
||||
[0-9a-f]+ push.r 00000021
|
||||
[0-9a-f]+ stor.pri 00000004
|
||||
[0-9a-f]+ stor.alt 00000008
|
||||
[0-9a-f]+ stor.s.pri fffffff4
|
||||
[0-9a-f]+ stor.s.alt fffffff8
|
||||
[0-9a-f]+ sref.s.pri 00000010
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ xchg
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ xchg
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.r 00000022
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.alt 00000005
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ const.alt 00000005
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000023
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ addr.alt fffffff5
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ addr.alt fffffff5
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000024
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ inc.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.pri
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ inc.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ xchg
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ xchg
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000025
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.r 00000026
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.alt
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ pop.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000028
|
||||
[0-9a-f]+ push.c 00001234
|
||||
[0-9a-f]+ push 00000000
|
||||
[0-9a-f]+ lref.s.pri 0000000c
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ push.c 00005678
|
||||
[0-9a-f]+ push.s fffffffc
|
||||
[0-9a-f]+ push 0000000c
|
||||
[0-9a-f]+ push.c 00009abc
|
||||
[0-9a-f]+ push.r 00000029
|
||||
[0-9a-f]+ push.c 000068ac
|
||||
[0-9a-f]+ push.r 0000002a
|
||||
[0-9a-f]+ load.pri 00000000
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ pop.alt
|
||||
[0-9a-f]+ smul
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ push.r 0000002b
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ load.i
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ push.r 00000030
|
||||
[0-9a-f]+ push.c 00000000
|
||||
[0-9a-f]+ push.c 0000000c
|
||||
[0-9a-f]+ push.adr fffffffc
|
||||
[0-9a-f]+ push.s 0000000c
|
||||
[0-9a-f]+ push.r 00000031
|
||||
[0-9a-f]+ push.c 00000004
|
||||
[0-9a-f]+ push.c 00000008
|
||||
[0-9a-f]+ push.c 00000010
|
||||
[0-9a-f]+ push.c 00000014
|
||||
[0-9a-f]+ push.adr fffffff4
|
||||
[0-9a-f]+ push.adr fffffff8
|
||||
[0-9a-f]+ push.s 00000010
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ push.r 00000032
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ push.pri
|
||||
[0-9a-f]+ push.r 00000038
|
||||
[0-9a-f]+ zero 00000000
|
||||
[0-9a-f]+ zero 0000000c
|
||||
[0-9a-f]+ zero.s fffffffc
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ sref.s.pri 0000000c
|
||||
[0-9a-f]+ push.r 00000039
|
||||
[0-9a-f]+ zero 00000004
|
||||
[0-9a-f]+ zero 00000008
|
||||
[0-9a-f]+ zero 00000010
|
||||
[0-9a-f]+ zero 00000014
|
||||
[0-9a-f]+ zero.s fffffff4
|
||||
[0-9a-f]+ zero.s fffffff8
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ sref.s.pri 00000010
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.r 0000003a
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.alt 00000005
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.alt 00000011
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ addr.alt fffffff5
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ inc.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ align.alt 00000001
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 0000003b
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ stor.i
|
||||
[0-9a-f]+ push.r 0000003c
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ zero.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000040
|
||||
[0-9a-f]+ inc 00000000
|
||||
[0-9a-f]+ inc 0000000c
|
||||
[0-9a-f]+ inc.s fffffffc
|
||||
[0-9a-f]+ load.s.pri 0000000c
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ push.r 00000041
|
||||
[0-9a-f]+ inc 00000004
|
||||
[0-9a-f]+ inc 00000008
|
||||
[0-9a-f]+ inc 00000010
|
||||
[0-9a-f]+ inc 00000014
|
||||
[0-9a-f]+ inc.s fffffff4
|
||||
[0-9a-f]+ inc.s fffffff8
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ push.r 00000042
|
||||
[0-9a-f]+ const.pri 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.pri 00000005
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.pri 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ const.pri 00000011
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ addr.pri fffffff4
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ addr.pri fffffff5
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri 00000010
|
||||
[0-9a-f]+ add.c 00000002
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ push.r 00000043
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000004
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ const.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ idxaddr
|
||||
[0-9a-f]+ inc.i
|
||||
[0-9a-f]+ push.r 00000044
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000004
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ add.c 00000010
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ addr.alt fffffff4
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ load.s.pri fffffffc
|
||||
[0-9a-f]+ load.s.alt 00000010
|
||||
[0-9a-f]+ add
|
||||
[0-9a-f]+ align.pri 00000001
|
||||
[0-9a-f]+ move.alt
|
||||
[0-9a-f]+ lodb.i 00000001
|
||||
[0-9a-f]+ inc.pri
|
||||
[0-9a-f]+ strb.i 00000001
|
||||
[0-9a-f]+ nop
|
||||
"""
|
||||
}
|
345
source/compiler/tests/__emit_pcode_check.pwn
Normal file
345
source/compiler/tests/__emit_pcode_check.pwn
Normal file
@ -0,0 +1,345 @@
|
||||
#include "__emit.inc"
|
||||
|
||||
// Use 'push.r' as a delimiter since the compiler doesn't generate this instruction
|
||||
// and its argument might be used to identify the snippet in the disassembly.
|
||||
#define DEF_SNIPPET(%0) emit push.r (%0)
|
||||
|
||||
const global_const_1 = 1;
|
||||
const global_const_1234 = 0x1234;
|
||||
|
||||
|
||||
stock test__pcode(&local_refvar, local_refarray[])
|
||||
{
|
||||
const local_const_1 = 1;
|
||||
const local_const_5678 = 0x5678;
|
||||
static local_static_var = 0;
|
||||
static local_static_array[2];
|
||||
new local_var = 0;
|
||||
new local_array[2];
|
||||
|
||||
DEF_SNIPPET(0x0);
|
||||
emit load.pri global_var; // load.pri 00000000
|
||||
emit load.pri global_array; // load.pri 00000004
|
||||
emit load.pri local_static_var; // load.pri 0000000c
|
||||
|
||||
DEF_SNIPPET(0x1);
|
||||
emit load.s.pri global_const_1234; // load.s.pri 00001234
|
||||
emit load.s.pri local_refvar; // load.s.pri 0000000c
|
||||
emit load.s.pri local_refarray; // load.s.pri 00000010
|
||||
emit load.s.pri local_const_5678; // load.s.pri 00005678
|
||||
emit load.s.pri local_var; // load.s.pri fffffffc
|
||||
emit load.s.pri 0xFEDC; // load.s.pri 0000fedc
|
||||
|
||||
DEF_SNIPPET(0x2);
|
||||
emit call global_func; // call 00000008
|
||||
emit sysreq.c global_native; // sysreq.c 00000000
|
||||
emit sysreq.n global_native 0; // push.c 00000000 \ sysreq.c 00000000 \ stack 00000004
|
||||
|
||||
DEF_SNIPPET(0x3);
|
||||
emit lodb.i global_const_1; // lodb.i 00000001
|
||||
emit lodb.i local_const_1; // lodb.i 00000001
|
||||
emit lodb.i 1; // lodb.i 00000001
|
||||
emit lodb.i 2; // lodb.i 00000002
|
||||
emit lodb.i 4; // lodb.i 00000004
|
||||
emit lodb.i 0x1; // lodb.i 00000001
|
||||
emit lodb.i 0x2; // lodb.i 00000002
|
||||
emit lodb.i 0x4; // lodb.i 00000004
|
||||
|
||||
DEF_SNIPPET(0x4);
|
||||
emit align.pri global_const_1; // align.pri 00000001
|
||||
emit align.pri local_const_1; // align.pri 00000001
|
||||
emit align.pri 0; // align.pri 00000000
|
||||
emit align.pri 1; // align.pri 00000001
|
||||
emit align.pri 2; // align.pri 00000002
|
||||
emit align.pri 3; // align.pri 00000003
|
||||
emit align.pri 0x0; // align.pri 00000000
|
||||
emit align.pri 0x1; // align.pri 00000001
|
||||
emit align.pri 0x2; // align.pri 00000002
|
||||
emit align.pri 0x3; // align.pri 00000003
|
||||
|
||||
DEF_SNIPPET(0x5);
|
||||
// push.c 00001234 \ push.c 00005678 \ push.c 00009abc
|
||||
emit push3.c global_const_1234 local_const_5678 0x9ABC;
|
||||
// push.c push.c 00000000 \ push.c 00000004 \ push.c 0000000c \ push.c 0000000c \ push.c fffffffc
|
||||
emit push5.c global_var global_array local_static_var local_refvar local_var;
|
||||
|
||||
DEF_SNIPPET(0x6);
|
||||
// push 00000000 \ push 0000000c
|
||||
emit push2 global_var local_static_var;
|
||||
|
||||
DEF_SNIPPET(0x7);
|
||||
// push.s 00001234 \ push.s 00005678 \ push.s 0000000c \ push.s 00000010 \ push.s fffffffc
|
||||
emit push5.s global_const_1234 local_const_5678 local_refvar local_refarray local_var;
|
||||
|
||||
DEF_SNIPPET(0x8);
|
||||
// push.adr 00001234 \ push.adr 00005678 \ push.adr 0000000c \ push.adr 00000010 \ push.adr fffffffc
|
||||
emit push5.adr global_const_1234 local_const_5678 local_refvar local_refarray local_var;
|
||||
|
||||
DEF_SNIPPET(0x9);
|
||||
// push.pri \ const.pri 00001234 \ stor.pri 00000000 \ pop.pri
|
||||
emit const global_var global_const_1234;
|
||||
// push.pri \ const.pri 00005678 \ stor.pri 0000000c \ pop.pri
|
||||
emit const local_static_var local_const_5678;
|
||||
|
||||
DEF_SNIPPET(0xa);
|
||||
// push.pri \ const.pri 00005678 \ stor.s.pri fffffffc \ pop.pri
|
||||
emit const.s local_var local_const_5678;
|
||||
|
||||
DEF_SNIPPET(0xb);
|
||||
// load.pri 00000000 \ load.alt 0000000c
|
||||
emit load.both global_var local_static_var;
|
||||
|
||||
DEF_SNIPPET(0xc);
|
||||
// load.pri 0000000c \ load.alt fffffffc
|
||||
emit load.s.both local_refvar local_var;
|
||||
|
||||
DEF_SNIPPET(0x10);
|
||||
emit addr.u.pri global_var; // zero.pri
|
||||
emit addr.u.alt global_var; // zero.alt
|
||||
emit addr.u.pri local_refvar; // load.s.pri 0000000c
|
||||
emit addr.u.alt local_refvar; // load.s.alt 0000000c
|
||||
emit addr.u.pri local_var; // addr.pri fffffffc
|
||||
emit addr.u.alt local_var; // addr.alt fffffffc
|
||||
emit addr.u.pri local_static_var; // const.pri 0000000c
|
||||
emit addr.u.alt local_static_var; // const.alt 0000000c
|
||||
DEF_SNIPPET(0x11);
|
||||
emit addr.u.pri global_array[0]; // const.pri 00000004
|
||||
emit addr.u.alt global_array[1]; // const.alt 00000008
|
||||
emit addr.u.pri local_static_array[0]; // const.pri 00000010
|
||||
emit addr.u.alt local_static_array[1]; // const.alt 00000014
|
||||
emit addr.u.pri local_array[0]; // addr.pri fffffff4
|
||||
emit addr.u.alt local_array[1]; // addr.alt fffffff8
|
||||
emit addr.u.pri local_refarray[0]; // load.s.pri 00000010
|
||||
emit addr.u.alt local_refarray[1]; // load.s.alt 00000014
|
||||
DEF_SNIPPET(0x12);
|
||||
emit addr.u.pri global_array{0}; // const.pri 00000004 \ align.pri 00000001
|
||||
emit addr.u.alt global_array{1}; // const.alt 00000005 \ align.alt 00000001
|
||||
emit addr.u.pri local_static_array{0}; // const.pri 00000010 \ align.pri 00000001
|
||||
emit addr.u.alt local_static_array{1}; // const.alt 00000011 \ align.alt 00000001
|
||||
emit addr.u.pri local_array{0}; // addr.pri fffffff4 \ align.pri 00000001
|
||||
emit addr.u.alt local_array{1}; // addr.alt fffffff5 \ align.alt 00000001
|
||||
DEF_SNIPPET(0x13);
|
||||
emit addr.u.pri local_refarray{0}; // load.s.pri 00000010 \ align.pri 00000001
|
||||
emit addr.u.alt local_refarray{0}; // load.s.alt 00000010 \ align.alt 00000001
|
||||
emit addr.u.pri local_refarray{1}; // load.s.pri fffffff4 \ inc.pri \ align.pri 00000001
|
||||
emit addr.u.alt local_refarray{1}; // load.s.alt fffffff4 \ inc.alt \ align.alt 00000001
|
||||
emit addr.u.pri local_refarray{2}; // load.s.pri fffffff5 \ add.c 00000002 \ align.pri 00000001
|
||||
emit addr.u.alt local_refarray{2}; // load.s.pri fffffff5 \ add.c 00000002 \ move.alt \ align.alt 00000001
|
||||
DEF_SNIPPET(0x14);
|
||||
emit addr.u.pri global_array[local_var]; // load.s.pri fffffffc \ const.alt 00000004 \ idxaddr
|
||||
emit addr.u.alt global_array[local_var]; // load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ move.alt
|
||||
emit addr.u.pri local_static_array[local_var]; // load.s.pri fffffffc \ const.alt 00000010 \ idxaddr
|
||||
emit addr.u.alt local_static_array[local_var]; // load.s.pri fffffffc \ const.alt 00000010 \ idxaddr \ move.alt
|
||||
emit addr.u.pri local_array[local_var]; // load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr
|
||||
emit addr.u.alt local_array[local_var]; // load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ move.alt
|
||||
emit addr.u.pri local_refarray[local_var]; // load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr
|
||||
emit addr.u.alt local_refarray[local_var]; // load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ move.alt
|
||||
DEF_SNIPPET(0x15);
|
||||
emit addr.u.pri global_array{local_var}; // load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001
|
||||
emit addr.u.alt global_array{local_var}; // load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ move.alt
|
||||
emit addr.u.pri local_static_array{local_var}; // load.s.pri fffffffc \ add.c 00000010 \ align.pri 00000001
|
||||
emit addr.u.alt local_static_array{local_var}; // load.s.pri fffffffc \ add.c 00000010 \ align.pri 00000001 \ move.alt
|
||||
emit addr.u.pri local_array{local_var}; // load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001
|
||||
emit addr.u.alt local_array{local_var}; // load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ move.alt
|
||||
emit addr.u.pri local_refarray{local_var}; // load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001
|
||||
emit addr.u.alt local_refarray{local_var}; // load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ move.alt
|
||||
DEF_SNIPPET(0x16);
|
||||
emit addr.u.pri global_array[global_func()]; // push.c 0 \ call global_func \ const.alt 00000004 \ idxaddr
|
||||
emit addr.u.alt global_array[global_func()]; // push.c 0 \ call global_func \ const.alt 00000004 \ idxaddr \ move.alt
|
||||
DEF_SNIPPET(0x17);
|
||||
emit addr.u.pri global_array{global_func()}; // push.c 0 \ call global_func \ add.c 00000004 \ align.pri 00000001
|
||||
emit addr.u.alt global_array{global_func()}; // push.c 0 \ call global_func \ add.c 00000004 \ align.pri 00000001 \ move.alt
|
||||
|
||||
DEF_SNIPPET(0x18);
|
||||
emit load.u.pri global_const_1234; // const.pri 00001234
|
||||
emit load.u.pri global_var; // load.pri 00000000
|
||||
emit load.u.pri local_refvar; // lref.s.pri 0000000c
|
||||
emit load.u.pri local_const_5678; // const.pri 00005678
|
||||
emit load.u.pri local_var; // load.s.pri fffffffc
|
||||
emit load.u.pri local_static_var; // load.pri 0000000c
|
||||
emit load.u.pri 0x9abc; // const.pri 00009abc
|
||||
DEF_SNIPPET(0x19);
|
||||
emit load.u.pri global_const_1234 + local_const_5678; // const.pri 000068ac
|
||||
DEF_SNIPPET(0x1a);
|
||||
emit load.u.alt global_var * local_var; // load.pri 00000000 \ push.pri \ load.s.pri fffffffc \ pop.alt \ smul \ move.alt
|
||||
DEF_SNIPPET(0x1b);
|
||||
emit load.u.pri local_refarray[0]; // load.s.pri 00000010 \ load.i
|
||||
|
||||
DEF_SNIPPET(0x20);
|
||||
emit stor.u.pri global_var; // stor.pri 00000000
|
||||
emit stor.u.alt global_var; // stor.alt 00000000
|
||||
emit stor.u.pri local_refvar; // sref.s.pri 0000000c
|
||||
emit stor.u.alt local_refvar; // sref.s.alt 0000000c
|
||||
emit stor.u.pri local_var; // stor.s.pri fffffffc
|
||||
emit stor.u.alt local_var; // stor.s.alt fffffffc
|
||||
emit stor.u.pri local_static_var; // stor.pri 0000000c
|
||||
emit stor.u.alt local_static_var; // stor.alt 0000000c
|
||||
DEF_SNIPPET(0x21);
|
||||
emit stor.u.pri global_array[0]; // stor.pri 00000004
|
||||
emit stor.u.alt global_array[1]; // stor.alt 00000008
|
||||
emit stor.u.pri local_array[0]; // stor.s.pri fffffff4
|
||||
emit stor.u.alt local_array[1]; // stor.s.alt fffffff8
|
||||
emit stor.u.pri local_refarray[0]; // sref.s.pri 00000010
|
||||
emit stor.u.pri local_refarray[1]; // move.alt \ load.s.pri 00000010 \ add.c 00000004 \ xchg \ stor.i
|
||||
emit stor.u.alt local_refarray[1]; // load.s.pri 00000010 \ add.c 00000004 \ xchg \ stor.i
|
||||
DEF_SNIPPET(0x22);
|
||||
emit stor.u.pri global_array{0}; // const.alt 00000004 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt global_array{0}; // move.pri \ const.alt 00000004 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.pri global_array{1}; // const.alt 00000005 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt global_array{1}; // move.pri \ const.alt 00000005 \ align.alt 00000001 \ strb.i 00000001
|
||||
DEF_SNIPPET(0x23);
|
||||
emit stor.u.pri local_array{0}; // addr.alt fffffff4 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt local_array{0}; // move.pri \ addr.alt fffffff4 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.pri local_array{1}; // addr.alt fffffff5 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt local_array{1}; // move.pri \ addr.alt fffffff5 \ align.alt 00000001 \ strb.i 00000001
|
||||
DEF_SNIPPET(0x24);
|
||||
emit stor.u.pri local_refarray{0}; // load.s.alt 00000010 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt local_refarray{0}; // move.pri \ load.s.alt 00000010 \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.pri local_refarray{1}; // load.s.alt 00000010 \ inc.alt \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt local_refarray{1}; // move.pri \ load.s.alt 00000010 \ inc.alt \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.pri local_refarray{2}; // move.alt \ load.s.pri 00000010 \ add.c 00000002 \ xchg \ align.alt 00000001 \ strb.i 00000001
|
||||
emit stor.u.alt local_refarray{2}; // load.s.pri 00000010 \ add.c 00000002 \ xchg \ align.alt 00000001 \ strb.i 00000001
|
||||
DEF_SNIPPET(0x25);
|
||||
emit stor.u.pri global_array[local_var]; // push.pri \ load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
emit stor.u.alt global_array[local_var]; // push.alt \ load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
emit stor.u.pri local_array[local_var]; // push.pri \ load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
emit stor.u.alt local_array[local_var]; // push.alt \ load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
emit stor.u.pri local_refarray[local_var]; // push.pri \ load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
emit stor.u.alt local_refarray[local_var]; // push.alt \ load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ move.alt \ pop.pri \ stor.i
|
||||
DEF_SNIPPET(0x26);
|
||||
emit stor.u.pri global_array{local_var}; // push.pri \ load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
emit stor.u.alt global_array{local_var}; // push.alt \ load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
emit stor.u.pri local_array{local_var}; // push.pri \ load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
emit stor.u.alt local_array{local_var}; // push.alt \ load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
emit stor.u.pri local_refarray{local_var}; // push.pri \ load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
emit stor.u.alt local_refarray{local_var}; // push.alt \ load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ move.alt \ pop.pri \ strb.i 00000001
|
||||
|
||||
DEF_SNIPPET(0x28);
|
||||
emit push.u global_const_1234; // push.c 00001234
|
||||
emit push.u global_var; // push 00000000
|
||||
emit push.u local_refvar; // lref.s.pri 0000000c \ push.pri
|
||||
emit push.u local_const_5678; // push.c 00005678
|
||||
emit push.u local_var; // push.s fffffffc
|
||||
emit push.u local_static_var; // push 0000000c
|
||||
emit push.u 0x9abc; // push.c 00009abc
|
||||
DEF_SNIPPET(0x29);
|
||||
emit push.u global_const_1234 + local_const_5678; // push.c 000068ac
|
||||
DEF_SNIPPET(0x2a);
|
||||
emit push.u global_var * local_var; // load.pri 00000000 \ push.pri \ load.s.pri fffffffc \ pop.alt \ smul \ push.pri
|
||||
DEF_SNIPPET(0x2b);
|
||||
emit push.u local_refarray[0]; // load.s.pri 00000010 \ load.i \ push.pri
|
||||
|
||||
DEF_SNIPPET(0x30);
|
||||
emit push.u.adr global_var; // push.c 00000000
|
||||
emit push.u.adr local_static_var; // push.c 0000000c
|
||||
emit push.u.adr local_var; // push.adr fffffffc
|
||||
emit push.u.adr local_refvar; // push.s 0000000c
|
||||
DEF_SNIPPET(0x31);
|
||||
emit push.u.adr global_array[0]; // push.c 00000004
|
||||
emit push.u.adr global_array[1]; // push.c 00000008
|
||||
emit push.u.adr local_static_array[0]; // push.c 00000010
|
||||
emit push.u.adr local_static_array[1]; // push.c 00000014
|
||||
emit push.u.adr local_array[0]; // push.adr fffffff4
|
||||
emit push.u.adr local_array[1]; // push.adr fffffff8
|
||||
emit push.u.adr local_refarray[0]; // push.s 00000010
|
||||
emit push.u.adr local_refarray[1]; // load.s.pri 00000010 \ add.c 00000004 \ push.pri
|
||||
DEF_SNIPPET(0x32);
|
||||
emit push.u.adr global_array[local_var]; // load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ push.pri
|
||||
emit push.u.adr local_static_array[local_var]; // load.s.pri fffffffc \ const.alt 00000010 \ idxaddr \ push.pri
|
||||
emit push.u.adr local_array[local_var]; // load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ push.pri
|
||||
emit push.u.adr local_refarray[local_var]; // load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ push.pri
|
||||
// DEF_SNIPPET(0x33);
|
||||
// emit push.u.adr global_array{0}; // const.pri 00000004 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr global_array{1}; // const.pri 00000005 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_static_array{0}; // const.pri 00000010 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_static_array{1}; // const.pri 00000011 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_array{0}; // addr.pri fffffff4 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_array{1}; // addr.pri fffffff5 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_refarray{0}; // load.s.pri 00000010 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_refarray{1}; // load.s.pri 00000010 \ inc.pri \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_refarray{2}; // load.s.pri 00000010 \ add.c 00000002 \ align.pri 00000001 \ push.pri
|
||||
// DEF_SNIPPET(0x34);
|
||||
// emit push.u.adr global_array{local_var}; // load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_static_array{local_var}; // load.s.pri fffffffc \ add.c 00000010 \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_array{local_var}; // load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ push.pri
|
||||
// emit push.u.adr local_refarray{local_var}; // load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ push.pri
|
||||
|
||||
DEF_SNIPPET(0x38);
|
||||
emit zero.u global_var; // zero 00000000
|
||||
emit zero.u local_static_var; // zero 0000000c
|
||||
emit zero.u local_var; // zero.s fffffffc
|
||||
emit zero.u local_refvar; // zero.pri \ sref.s.pri 0000000c
|
||||
DEF_SNIPPET(0x39);
|
||||
emit zero.u global_array[0]; // zero 00000004
|
||||
emit zero.u global_array[1]; // zero 00000008
|
||||
emit zero.u local_static_array[0]; // zero 00000010
|
||||
emit zero.u local_static_array[1]; // zero 00000014
|
||||
emit zero.u local_array[0]; // zero.s fffffff4
|
||||
emit zero.u local_array[1]; // zero.s fffffff8
|
||||
emit zero.u local_refarray[0]; // zero.pri \ sref.s.pri 00000010
|
||||
emit zero.u local_refarray[1]; // load.s.pri 00000010 \ add.c 00000004 \ move.alt \ zero.pri \ stor.i
|
||||
DEF_SNIPPET(0x3a);
|
||||
emit zero.u global_array{0}; // const.alt 00000004 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u global_array{1}; // const.alt 00000005 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_static_array{0}; // const.alt 00000010 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_static_array{1}; // const.alt 00000011 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_array{0}; // addr.alt fffffff4 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_array{1}; // addr.alt fffffff5 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_refarray{0}; // load.s.alt 00000010 \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_refarray{1}; // load.s.alt 00000010 \ inc.alt \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_refarray{2}; // load.s.pri 00000010 \ add.c 00000002 \ move.alt \ align.alt 00000001 \ zero.pri \ strb.i 00000001
|
||||
DEF_SNIPPET(0x3b);
|
||||
emit zero.u global_array[local_var]; // load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ move.alt \ zero.pri \ stor.i
|
||||
emit zero.u local_static_array[local_var]; // load.s.pri fffffffc \ const.alt 00000010 \ idxaddr \ move.alt \ zero.pri \ stor.i
|
||||
emit zero.u local_array[local_var]; // load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ move.alt \ zero.pri \ stor.i
|
||||
emit zero.u local_refarray[local_var]; // load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ move.alt \ zero.pri \ stor.i
|
||||
DEF_SNIPPET(0x3c);
|
||||
emit zero.u global_array{local_var}; // load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ move.alt \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_static_array{local_var}; // load.s.pri fffffffc \ add.c 00000010 \ align.pri 00000001 \ move.alt \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_array{local_var}; // load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ move.alt \ zero.pri \ strb.i 00000001
|
||||
emit zero.u local_refarray{local_var}; // load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ move.alt \ zero.pri \ strb.i 00000001
|
||||
|
||||
DEF_SNIPPET(0x40);
|
||||
emit inc.u global_var; // inc 00000000
|
||||
emit inc.u local_static_var; // inc 0000000c
|
||||
emit inc.u local_var; // inc.s fffffffc
|
||||
emit inc.u local_refvar; // load.s.pri 0000000c \ inc.i
|
||||
DEF_SNIPPET(0x41);
|
||||
emit inc.u global_array[0]; // inc 00000004
|
||||
emit inc.u global_array[1]; // inc 00000008
|
||||
emit inc.u local_static_array[0]; // inc 00000010
|
||||
emit inc.u local_static_array[1]; // inc 00000014
|
||||
emit inc.u local_array[0]; // inc.s fffffff4
|
||||
emit inc.u local_array[1]; // inc.s fffffff8
|
||||
emit inc.u local_refarray[0]; // load.s.pri 00000010 \ inc.i
|
||||
emit inc.u local_refarray[1]; // load.s.pri 00000010 \ add.c 00000004 \ inc.i
|
||||
DEF_SNIPPET(0x42);
|
||||
emit inc.u global_array{0}; // const.pri 00000004 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u global_array{1}; // const.pri 00000005 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_static_array{0}; // const.pri 00000010 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_static_array{1}; // const.pri 00000011 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_array{0}; // addr.pri fffffff4 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_array{1}; // addr.pri fffffff5 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_refarray{0}; // load.s.pri 00000010 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_refarray{1}; // load.s.pri 00000010 \ inc.pri \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_refarray{2}; // load.s.pri 00000010 \ add.c 00000002 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
DEF_SNIPPET(0x43);
|
||||
emit inc.u global_array[local_var]; // load.s.pri fffffffc \ const.alt 00000004 \ idxaddr \ inc.i
|
||||
emit inc.u local_static_array[local_var]; // load.s.pri fffffffc \ const.alt 00000010 \ idxaddr \ inc.i
|
||||
emit inc.u local_array[local_var]; // load.s.pri fffffffc \ addr.alt fffffff4 \ idxaddr \ inc.i
|
||||
emit inc.u local_refarray[local_var]; // load.s.pri fffffffc \ load.s.alt 00000010 \ idxaddr \ inc.i
|
||||
DEF_SNIPPET(0x44);
|
||||
emit inc.u global_array{local_var}; // load.s.pri fffffffc \ add.c 00000004 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_static_array{local_var}; // load.s.pri fffffffc \ add.c 00000010 \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_array{local_var}; // load.s.pri fffffffc \ addr.alt fffffff4 \ add \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
emit inc.u local_refarray{local_var}; // load.s.pri fffffffc \ load.s.alt 00000010 \ add \ align.pri 00000001 \ move.alt \ lodb.i 00000001 \ inc.pri \ strb.i 00000001
|
||||
|
||||
emit nop; // end marker
|
||||
}
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
new t, a[2];
|
||||
test__pcode(t, a);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user