Hi, I was a bit surprised when I coded the native versions of rtl-sinstruction, make-non-immediate I just assumed that alignement meant 64bit on 64bit platforms. It doesen't in for example,
(define const (assemble-program `((begin-program test-bind-rest) (assert-nargs-ee/locals 0 2) (load-constant 0 '(1 2)) (load-constant 1 #(1)) (cons 0 0 1) (return 0) (end-program)))) --> ??dissassembles into ;;; ((assert-nargs-ee/locals (op : 20) (expected : 0) (nlocals : 2))) ;;; ((inst)) ;;; ((make-non-immediate (op : 52) (dst : 0) (offset : -7) (ip : 20677408))) ;;; ((inst)) ;;; ((make-non-immediate (op : 52) (dst : 1) (offset : -31) (ip : 20677320))) ;;; ((inst)) ;;; ((cons (op : 74) (dst : 0) (x : 0) (y : 1))) ;;; ((inst)) ;;; ((return (op : 5) (src : 0))) And we see that 20677320 & 8 == 8, hence not 64 bit aligned. Assuming alignment meant 32bit the native code works very well! But would I dear to suggest that we try to keep all non immediates aligned on 64bit boundaries? /Stefan