aboutsummaryrefslogtreecommitdiffstats
path: root/csc/linker.csc
diff options
context:
space:
mode:
Diffstat (limited to 'csc/linker.csc')
-rw-r--r--csc/linker.csc16
1 files changed, 4 insertions, 12 deletions
diff --git a/csc/linker.csc b/csc/linker.csc
index 9095647..a2ab447 100644
--- a/csc/linker.csc
+++ b/csc/linker.csc
@@ -38,8 +38,6 @@
unless (symbol=? op 'label)
collect (cons op (loop for arg in args
collect (match arg
- (('label 'init)
- (list 'const (lookup label-map -1)))
(('label x)
(list 'const (lookup label-map x)))
(_ arg))))))
@@ -50,12 +48,9 @@
for i from offset
with m = (make-map compare-numbers)
do (match op
- (('label 'init)
- (set! m (insert m -1 i))
- (set! i (- i 1))) ; Labels will be removed later.
(('label id)
(set! m (insert m id i))
- (set! i (- i 1))))
+ (set! i (- i 1)))) ; Labels will be removed later.
finally (return m)))
@@ -103,12 +98,9 @@
(translate-globals
(loop for prog in programs
for off = 0 then (+ off (length converted-prog))
- for converted-prog = (let ((prog-prelude (cons
- (list 'jmp '(label init))
- prog)))
- (translate-labels
- prog-prelude
- (make-label-map off prog-prelude)))
+ for converted-prog = (translate-labels
+ prog
+ (make-label-map off prog))
append converted-prog)
environment))
((programs)