X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86%2Farith.lisp;h=52b3efc15898682b394ab28aa63b3cf888dd4b60;hb=7230b50bc438a7fbebd93866a96f9291e630419f;hp=54f94890a1fe3a57515b99157b581050d74d4a1e;hpb=952d16ab5880823c1864eb9105bb269e2e00760d;p=sbcl.git diff --git a/src/assembly/x86/arith.lisp b/src/assembly/x86/arith.lisp index 54f9489..52b3efc 100644 --- a/src/assembly/x86/arith.lisp +++ b/src/assembly/x86/arith.lisp @@ -170,6 +170,8 @@ (inst ret) DO-STATIC-FUN + (inst push ebp-tn) + (inst mov ebp-tn esp-tn) (inst sub esp-tn (fixnumize 3)) (inst mov (make-ea :dword :base esp-tn :disp (frame-byte-offset @@ -192,6 +194,7 @@ (:l `((inst mov y (1+ nil-value)) (inst cmp y x))) (:g `((inst cmp x (1+ nil-value))))) + (inst pop ebp-tn) (inst ret)) #-sb-assembling `(define-vop (,name) @@ -207,17 +210,11 @@ (:temporary (:sc unsigned-reg :offset edi-offset :from (:argument 1)) edi) - - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional ,test) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup ',name :assembly-routine))) - (inst call ecx))))) + (inst call (make-fixup ',name :assembly-routine)))))) (define-cond-assem-rtn generic-< < two-arg-< :l) (define-cond-assem-rtn generic-> > two-arg-> :g)) @@ -245,6 +242,8 @@ (inst cmp x y) (inst jmp :e RET) + (inst push ebp-tn) + (inst mov ebp-tn esp-tn) (inst sub esp-tn (fixnumize 3)) (inst mov (make-ea :dword :base esp-tn :disp (frame-byte-offset @@ -262,6 +261,7 @@ :disp (+ nil-value (static-fun-offset 'eql)))) (load-symbol y t) (inst cmp x y) + (inst pop ebp-tn) (inst ret)) #-sb-assembling @@ -279,16 +279,11 @@ :from (:argument 1)) edi) - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional :e) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup 'generic-eql :assembly-routine))) - (inst call ecx))) + (inst call (make-fixup 'generic-eql :assembly-routine)))) #+sb-assembling (define-assembly-routine (generic-= @@ -307,6 +302,8 @@ (inst ret) DO-STATIC-FUN + (inst push ebp-tn) + (inst mov ebp-tn esp-tn) (inst sub esp-tn (fixnumize 3)) (inst mov (make-ea :dword :base esp-tn :disp (frame-byte-offset @@ -324,6 +321,7 @@ :disp (+ nil-value (static-fun-offset 'two-arg-=)))) (load-symbol y t) (inst cmp x y) + (inst pop ebp-tn) (inst ret)) #-sb-assembling @@ -341,16 +339,11 @@ :from (:argument 1)) edi) - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional :e) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup 'generic-= :assembly-routine))) - (inst call ecx))) + (inst call (make-fixup 'generic-= :assembly-routine)))) ;;; Support for the Mersenne Twister, MT19937, random number generator