PLIMM(P1E, 4); JMP(12); LB0(4);
PLIMM(P1E, 4); JMP(12); LB0(4); PLIMM(P1E, 5); JMP(12); LB0(5);
lbstk1(0,1,2); PLIMM(P1E, lbstk2(0,0)); JMP(12); LB0(lbstk2(0,0));
lbstk1(0,1,2); PLIMM(P1E, lbstk2(0,0)); JMP(12); LB0(lbstk2(0,0)); lbstk1(0,1,2); PLIMM(P1E, lbstk2(0,0)); JMP(12); LB0(lbstk2(0,0));
#define LOOP(c,b) lbstk1(0,2,c+b+1+((b!=0)&1)); LB0(lbstk2(0,0)) /* c!=0を想定 */ #define CONTINUE lbstk2(0,0) #define BREAK lbstk2(0,1) #define ENDLOOP0() /* BREAKを使わない場合用、省略可能、セミコロンを付けない */ #define ENDLOOP1() LB0(lbstk2(0,1))
#define sum R00 #define i R01 #define const1 R30 #define const10001 R31 LIMM(const1, 1); LIMM(const10001, 10001); LIMM(i, 0); CP(sum, i); LOOP(1, 0); /* CONTINUEを使う回数, BREAKを使う回数 */ ADD2(sum, i); ADD2(i, const1); CMPJNE(i, const10001, CONTINUE);
#define GLOBALLABELS(n) lbstk0(n) #define LOCALLABELS(n) lbstk3(n) #define LOCAL(i) lbstk4(i)