Browse code

Added keep mode optimizations to asma

Andrew Alderwick authored on 13/05/2021 21:51:36
Showing 1 changed files
... ...
@@ -42,8 +42,8 @@
42 42
 	OVR2 .File/name DEO2
43 43
 	DUP2 .File/offset DEO2
44 44
 	#0100 .File/length DEO2
45
-	#fe00 DUP2 DUP2 .File/load DEO2
46
-	.File/success DEI2 DUP2 ORA ,&not-end JCN
45
+	#fe00 DUP2k .File/load DEO2
46
+	.File/success DEI2 ORAk ,&not-end JCN
47 47
 	POP2 POP2
48 48
 	&error
49 49
 	POP2 POP2 POP2
... ...
@@ -71,7 +71,7 @@
71 71
 	JMP2r
72 72
 
73 73
 @asma-assemble-chunk ( ptr* len* -- assembled-up-to-ptr* )
74
-	OVR2 ADD2 #0001 SUB2 SWP2 DUP2 STH2
74
+	OVR2 ADD2 #0001 SUB2 SWP2 STH2k
75 75
 	,&loop JMP
76 76
 
77 77
 	&next-char-pop
... ...
@@ -80,7 +80,7 @@
80 80
 	#0001 ADD2
81 81
 	&loop ( last-ptr* ptr* / start-of-token* )
82 82
 	OVR2 OVR2 LTH2 ,&end JCN
83
-	DUP2 LDA ( last-ptr* ptr* char / start-of-token* )
83
+	LDAk ( last-ptr* ptr* char / start-of-token* )
84 84
 	DUP #20 GTH ,&next-char-pop JCN
85 85
 
86 86
 	#00 OVR2 ( last-ptr* ptr* char 00 ptr* / start-of-token* )
... ...
@@ -108,21 +108,21 @@
108 108
 	DUP2 .Console/string DEO2 #0a .Console/char DEO
109 109
 	DUP2 ;asma/token STA2
110 110
 	DUP2 ;asma/orig-token STA2
111
-	DUP2 LDA ,&not-empty JCN
111
+	LDAk ,&not-empty JCN
112 112
 	POP2
113 113
 	JMP2r
114 114
 
115 115
 	&not-empty ( token* / )
116 116
 	( truncate to one char long )
117 117
 	#0001 ADD2 ( end* / )
118
-	DUP2 STH2 DUP2r LDAr ( end* / end* char )
119
-	DUP2 STH2 ( end* / end* char end* )
118
+	STH2k LDAkr ( end* / end* char )
119
+	STH2k ( end* / end* char end* )
120 120
 	LITr 00 STH2 ( / end* char end* 00 end* )
121 121
 	STAr ( / end* char end* )
122 122
 
123 123
 	( find lowest set bit of assembler/state
124 124
 	  in C, this would be i & -i )
125
-	#00 ;asma/state LDA DUP2 SUB AND ( tree-offset* / end* )
125
+	#00 ;asma/state LDA SUBk AND ( tree-offset* / end* )
126 126
 	DUP2 ;&first-char-trees ADD2 ( tree-offset* incoming-ptr* / end* )
127 127
 	;asma-traverse-tree JSR2
128 128
 
... ...
@@ -172,7 +172,7 @@
172 172
 	LIT2r 0000
173 173
 
174 174
 	&loop
175
-	DUP2 LDA
175
+	LDAk
176 176
 	DUP ,&not-end JCN
177 177
 	POP POP2
178 178
 	STH2r ROT #01 ADD #03 MUL
... ...
@@ -195,7 +195,7 @@
195 195
 	LITr 00
196 196
 
197 197
 	&loop
198
-	DUP2 LDA
198
+	LDAk
199 199
 	,&not-end JCN
200 200
 	POP2 STHr
201 201
 	JMP2r
... ...
@@ -216,8 +216,8 @@
216 216
 
217 217
 	( truncate to three chars long )
218 218
 	#0003 ADD2 ( end* / )
219
-	DUP2 STH2 DUP2r LDAr ( end* / end* char )
220
-	DUP2 STH2 ( end* / end* char end* )
219
+	STH2k LDAkr ( end* / end* char )
220
+	STH2k ( end* / end* char end* )
221 221
 	LITr 00 STH2 ( / end* char end* 00 end* )
222 222
 	STAr ( / end* char end* )
223 223
 
... ...
@@ -227,7 +227,7 @@
227 227
 
228 228
 	;asma-opcodes/_disasm SUB2 #0003 SFT2 ( 00 byte / end* )
229 229
 	&loop
230
-	DUP2r LDAr STHr LIT2r 0001 ADD2r ( 00 byte char / end* )
230
+	LDAkr STHr LIT2r 0001 ADD2r ( 00 byte char / end* )
231 231
 	DUP ,&not-end JCN
232 232
 	POP POP2r
233 233
 	SWP
... ...
@@ -278,7 +278,7 @@
278 278
 	,asma-append-heap-byte JMP ( tail call )
279 279
 
280 280
 @asma-append-heap-string ( string* -- )
281
-	DUP2 LDA
281
+	LDAk
282 282
 	DUP ,asma-append-heap-byte JSR
283 283
 	,&keep-going JCN
284 284
 	POP2 JMP2r
... ...
@@ -298,11 +298,11 @@
298 298
 	#0a .Console/char DEO )
299 299
 
300 300
 	&loop ( incoming-ptr* )
301
-	DUP2 LDA2 ORA ,&valid-node JCN
301
+	LDA2k ORA ,&valid-node JCN
302 302
 	#01 JMP2r
303 303
 
304 304
 	&valid-node
305
-	LDA2 DUP2 STH2
305
+	LDA2 STH2k
306 306
 	#0004 ADD2 ,asma-strcmp-tree JSR
307 307
 	DUP ,&nomatch JCN
308 308
 	POP2r JMP2r
... ...
@@ -319,8 +319,8 @@
319 319
 	;asma/token LDA2 STH2
320 320
 
321 321
 	&loop ( node-key* / token* )
322
-	DUP2 #0001 ADD2 SWP2 LDA DUP2r LDAr STHr
323
-	DUP2 ORA ,&not-end JCN
322
+	DUP2 #0001 ADD2 SWP2 LDA LDAkr STHr
323
+	ORAk ,&not-end JCN
324 324
 
325 325
 	( end of C strings, match found )
326 326
 	POP2r POP
... ...
@@ -447,7 +447,7 @@
447 447
 	;asma/token LDA2
448 448
 
449 449
 	&loop
450
-	DUP2 LDA
450
+	LDAk
451 451
 	DUP ,&not-end JCN
452 452
 
453 453
 	POP POP2
... ...
@@ -495,13 +495,13 @@
495 495
 	JMP2r
496 496
 
497 497
 @asma-addr-helper ( -- addr* )
498
-	;asma/token LDA2 DUP2 LDA #26 NEQ ,&not-local JCN
498
+	;asma/token LDA2 LDAk #26 NEQ ,&not-local JCN
499 499
 	#0001 ADD2 ;asma/token STA2
500 500
 	;asma/scope-addr LDA2 ;asma-trees/scope LDA2
501 501
 	,&final-lookup JMP
502 502
 
503 503
 	&not-local ( token* )
504
-	DUP2 LDA
504
+	LDAk
505 505
 	DUP ,&not-end JCN
506 506
 	POP POP2
507 507
 	#0000 ;asma-trees/labels
... ...
@@ -519,7 +519,7 @@
519 519
 	STHr ,&not-found JCN
520 520
 	( token* binary-ptr* )
521 521
 	#0001 ADD2 ;asma/token STA2
522
-	DUP2 LDA2 SWP2 #0002 ADD2
522
+	LDA2k SWP2 #0002 ADD2
523 523
 
524 524
 	&final-lookup ( addr-offset* incoming-ptr* )
525 525
 	;asma-traverse-tree JSR2 ,&not-found JCN
... ...
@@ -574,13 +574,13 @@
574 574
 	;asma-trees/macros ;asma-traverse-tree JSR2 ,&not-macro JCN
575 575
 
576 576
 	&macro-loop
577
-	DUP2 LDA ,&keep-going JCN
577
+	LDAk ,&keep-going JCN
578 578
 	&error
579 579
 	POP2
580 580
 	JMP2r
581 581
 
582 582
 	&keep-going
583
-	DUP2 DUP2 ;asma-strlen JSR2 #00 SWP #0001 ADD2 ADD2
583
+	DUP2k ;asma-strlen JSR2 #00 SWP #0001 ADD2 ADD2
584 584
 	SWP2 ;asma-assemble-token JSR2 asma-IF-ERROR ,&error JCN
585 585
 	,&macro-loop JMP
586 586