mescc: Align global data.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 21 May 2018 19:54:54 +0000 (21:54 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 21 May 2018 19:54:54 +0000 (21:54 +0200)
* module/mes/M1.mes (object->M1): Align globals.

module/mes/M1.mes

index 2713df2d4c4eb867c40ef199d267b222c8d18f1a..08a508e183f8a7342cc17fe7530589e7ce24f608 100644 (file)
               (cond ((and (pair? o) (global? (cdr o))) (string-append "&" (global->string o)))
                     ((and (not string?) (not function?)) (stderr "warning: unresolved label: ~s\n" label))
                     (else (string-append "&" label))))))
+      (define (display-align size)
+        (let ((alignment (- 4 (modulo size 4))))
+          (when (> alignment 0)
+            (display " ")
+            (display-join (map text->M1 (map (const 0) (iota alignment))) " "))))
       (let* ((label (cond
                      ((and (pair? (car o)) (eq? (caar o) #:string))
                       (string->label (car o)))
                              (or (and (not (memq ch '(#\tab #\newline)))
                                       (< (char->integer ch) #x20))
                                  (>= (char->integer ch) #x80))) string-data)))
-            (display (string-append "\"" (list->string string-data) "\""))
-            (display-join (map text->M1 data) " "))
+            (let ((text string-data))
+              (display (string-append "\"" (list->string string-data) "\""))
+              (display-align (1+ (length string-data))))
+            (let ((text (map text->M1 data)))
+              (display-join  text " ")
+              (display-align (length text))))
         (newline)))
     (display "M1: functions\n" (current-error-port))
     (for-each write-function (filter cdr functions))