diff options
Diffstat (limited to 'module/language/assembly.scm')
-rw-r--r-- | module/language/assembly.scm | 11 |
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))) |