I dont understand x86 assembly , however I can see that the "see" output for mmm and nnn is different.
perhaps that might provide a clue.
ok
see maybe
MAYBE
( 000E61C0 48FF15A6F5F2FF ) CALL FFF2F5A6 [RIP] @0001576D
( 000E61C7 E864C3F9FF ) CALL 00082530 :
( 000E61CC 488D6DF8 ) LEA RBP, [RBP+-08]
( 000E61D0 48895D00 ) MOV [RBP], RBX
( 000E61D4 BB01000000 ) MOV EBX, # 00000001
( 000E61D9 E82A74F3FF ) CALL 0001D608 .
( 000E61DE E88D4EF4FF ) CALL 0002B070 .S
( 000E61E3 E868F0F3FF ) CALL 00025250 LITERAL
( 000E61E8 488D6DF0 ) LEA RBP, [RBP+-10]
( 000E61EC 48C7450005000000 ) MOV QWord [RBP], # 00000005
( 000E61F4 48895D08 ) MOV [RBP+08], RBX
( 000E61F8 BB02000000 ) MOV EBX, # 00000002
( 000E61FD E80674F3FF ) CALL 0001D608 .
( 000E6202 E8694EF4FF ) CALL 0002B070 .S
( 000E6207 E8ACC3F9FF ) CALL 000825B8 ;
( 000E620C 488D6DF8 ) LEA RBP, [RBP+-08]
( 000E6210 48895D00 ) MOV [RBP], RBX
( 000E6214 BB03000000 ) MOV EBX, # 00000003
( 000E6219 E8EA73F3FF ) CALL 0001D608 .
( 000E621E E84D4EF4FF ) CALL 0002B070 .S
( 000E6223 C3 ) RET/NEXT
( 100 bytes, 21 instructions )
ok
maybe mmm
1
DATA STACK
empty stack
2
DATA STACK
empty stack
3
DATA STACK
empty stack
ok
mmm . 0 ok
see mmm
MMM
( 000E6410 488D6DF8 ) LEA RBP, [RBP+-08]
( 000E6414 48895D00 ) MOV [RBP], RBX
( 000E6418 BB00000000 ) MOV EBX, # 00000000
( 000E641D C3 ) RET/NEXT
( 14 bytes, 4 instructions )
ok
maybe nnn
1
DATA STACK
empty stack
2
DATA STACK
empty stack
3
DATA STACK
empty stack
ok
see nnn
NNN
( 000E6450 488D6DF8 ) LEA RBP, [RBP+-08]
( 000E6454 48895D00 ) MOV [RBP], RBX
( 000E6458 BB05000000 ) MOV EBX, # 00000005
( 000E645D C3 ) RET/NEXT
( 14 bytes, 4 instructions )
ok
nnn . 5 ok
nnn . 5 ok
Can I suggest the following change :
: lit, ( val -- ) \ runtime: -- val
align postpone literal ;
Does this fix the problem Hugh ?