summaryrefslogtreecommitdiff
path: root/module/language/assembly.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/assembly.scm')
-rw-r--r--module/language/assembly.scm11
1 files changed, 10 insertions, 1 deletions
diff --git a/module/language/assembly.scm b/module/language/assembly.scm
index e7308ac6f..3a1da4fe3 100644
--- a/module/language/assembly.scm
+++ b/module/language/assembly.scm
@@ -131,7 +131,11 @@
(bytevector-s64-set! bv 0 x (endianness big))
bv))))
(else #f)))
- ((char? x) `(make-char8 ,(char->integer x)))
+ ((char? x)
+ (cond ((<= (char->integer x) #xff)
+ `(make-char8 ,(char->integer x)))
+ (else
+ `(make-char32 ,(char->integer x)))))
(else #f)))
(define (assembly->object code)
@@ -156,6 +160,11 @@
(endianness big)))
((make-char8 ,n)
(integer->char n))
+ ((make-char32 ,n1 ,n2 ,n3 ,n4)
+ (integer->char (+ (* n1 #x1000000)
+ (* n2 #x10000)
+ (* n3 #x100)
+ n4)))
((load-string ,s) s)
((load-symbol ,s) (string->symbol s))
((load-keyword ,s) (symbol->keyword (string->symbol s)))