20.06.2015, 21:18
Hm, I didn't even consider emitting labels possible, but it almost works:
As you can see, for some reason it almost works, but adds space before number. I wouldn't work with this. From quick analysis of YSI I see JUMP.rel and JZER.rel is more flexible approach. Also, unless you want to use pure Pcode, you can just write it as
Quote:
|
CODE 0 ; 0 ;program exit point halt 0 proc ; main ; line 1 break ; c ; line 2 break ; 10 push.c 0 call .Hello ;$exp zero.pri retn proc ; Hello ; line 6 break ; 30 ; line 7 break ; 34 ;$lcl pos fffffffc stack fffffffc zero.pri stor.s.pri fffffffc ;$exp ;$lcl cmdtext fffffff8 stack fffffffc zero.pri stor.s.pri fffffff8 ;$exp inc fffffffc load.pri fffffffc load.s.alt fffffff8 lidx eq.c.pri 14 jzer 10 jump f l. 10 load.s.alt fffffff8 load.pri fffffffc idxaddr ; line 18 break ; b4 const.pri 1 stack 8 retn DATA 0 ; 0 dump 6c 2e 31 35 0 STKSIZE 1000 |
pawn Код:
new tmp;
do {
#emit INC pos
#emit LOAD.pri pos
#emit LOAD.S.alt cmdtext
#emit LIDX
#emit STOR.S.pri tmp
} while (20 != tmp);
#emit LOAD.S.alt cmdtext
#emit LOAD.pri pos
#emit IDXADDR

