pawn-compiler/source/compiler/tests/__emit_pcode_check.pwn
2019-10-01 18:26:39 +03:30

346 lines
22 KiB
Plaintext

#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);
}