X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Finsts.lisp;h=e823a2a208b12730f70ea1c0a8588c2fa3d5da78;hb=ebc0f0ebf9efd39519ab86ba28c33abdb25443e0;hp=f58b42a506270890f08b1c62a67fc532e4ee1de6;hpb=5de74c72e5a9522c7fdd3dbb31a39641e9de8877;p=sbcl.git diff --git a/src/compiler/x86/insts.lisp b/src/compiler/x86/insts.lisp index f58b42a..e823a2a 100644 --- a/src/compiler/x86/insts.lisp +++ b/src/compiler/x86/insts.lisp @@ -632,8 +632,8 @@ ;;; Two byte instruction with an immediate byte argument. ;;; (sb!disassem:define-instruction-format (word-imm 24 - :default-printer '(:name :tab code)) - (op :field (byte 16 0)) + :default-printer '(:name :tab code)) + (op :field (byte 16 0)) (code :field (byte 8 16))) @@ -729,7 +729,7 @@ (stack ;; Convert stack tns into an index off of EBP. (let ((disp (- (* (1+ (tn-offset thing)) n-word-bytes)))) - (cond ((< -128 disp 127) + (cond ((<= -128 disp 127) (emit-mod-reg-r/m-byte segment #b01 reg #b101) (emit-byte segment disp)) (t @@ -1941,7 +1941,8 @@ ;; Lisp (with (DESCRIBE 'BYTE-IMM-CODE)) than to definitively deduce ;; from first principles whether it's defined in some way that genesis ;; can't grok. - (case (byte-imm-code chunk dstate) + (case #-darwin (byte-imm-code chunk dstate) + #+darwin (word-imm-code chunk dstate) (#.error-trap (nt "error trap") (sb!disassem:handle-break-args #'snarf-error-junk stream dstate))