M etc/example.tal => etc/example.tal +11 -0
@@ 62,6 62,17 @@
;label ;label
.label .label
+ ( slow stack 2->1 )
+ STH2r ADD
+ STH2 ADDr
+
+ ( slow stacks )
+ LDZ STH
+ LDZ2 STH2
+ DEI STH
+ DEI2 STH2
+
+
BRK
~etc/include.tal
M src/uxnlin.tal => src/uxnlin.tal +10 -1
@@ 334,7 334,8 @@ JMP2r
@unsafe "Unsafe $1 ( bitwise opcode used in relative jump )
@unstashed "Unstashed $1 ( literal was created on the wrong stack )
@tokenlen "Token-length $1 ( token is longer than 24 characters )
-@combine "Combine $1
+@combine "Combine $1 ( sequences of two literal bytes )
+@slowstack "Slowstack $1 ( arithmetic performed after stashing )
@inc "INC $1 @inc2 "INC2 $1
@inc-twice "INC 20 "INC $1
@@ 464,6 465,14 @@ JMP2r
".__ $1 "STH $1 :unstashed
"#__ $1 "STH $1 :unstashed
"#____ $1 "STH2 $1 :unstashed
+ "LDZ $1 "STH $1 :slowstack
+ "LDZ2 $1 "STH2 $1 :slowstack
+ "DEIk $1 "STH $1 :slowstack
+ "DEI2k $1 "STH2 $1 :slowstack
+ "LDZk $1 "STH $1 :slowstack
+ "LDZ2k $1 "STH2 $1 :slowstack
+ "DEI $1 "STH $1 :slowstack
+ "DEI2 $1 "STH2 $1 :slowstack
"#__ $1 "#__ $1 :combine
"DUP $1 "DUP $1 :keep
"DUP2 $1 "DUP2 $1 :keep