From 39ce0d5862cd5fab8c93d60b195610b2ac77a094 Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 22 Mar 2006 16:30:50 +0000 Subject: Avoid storing precious data below the stack pointer. --- src/libmp/386/mpvecsub.s | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'src/libmp/386/mpvecsub.s') diff --git a/src/libmp/386/mpvecsub.s b/src/libmp/386/mpvecsub.s index e94dae16..06726668 100644 --- a/src/libmp/386/mpvecsub.s +++ b/src/libmp/386/mpvecsub.s @@ -10,16 +10,18 @@ .type mpvecsub, @function mpvecsub: /* Prelude */ - pushl %ebp - movl %ebx, -4(%esp) /* save on stack */ - movl %esi, -8(%esp) - movl %edi, -12(%esp) - - movl 8(%esp), %esi /* a */ - movl 16(%esp), %ebx /* b */ - movl 12(%esp), %edx /* alen */ - movl 20(%esp), %ecx /* blen */ - movl 24(%esp), %edi /* diff */ + pushl %ebp /* save on stack */ + pushl %ebx + pushl %esi + pushl %edi + + leal 20(%esp), %ebp /* %ebp = FP for now */ + movl 0(%ebp), %esi /* a */ + movl 8(%ebp), %ebx /* b */ + movl 4(%ebp), %edx /* alen */ + movl 12(%ebp), %ecx /* blen */ + movl 16(%ebp), %edi /* diff */ + subl %ecx,%edx xorl %ebp,%ebp /* this also sets carry to 0 */ @@ -46,15 +48,14 @@ _subloop2: movl (%esi, %ebp, 4), %eax sbbl $0, %eax movl %eax, (%edi, %ebp, 4) - INCL %ebp - LOOP _subloop2 + incl %ebp + loop _subloop2 done: /* Postlude */ - movl -4(%esp), %ebx /* restore from stack */ - movl -8(%esp), %esi - movl -12(%esp), %edi - movl %esp, %ebp - leave + popl %edi + popl %esi + popl %ebx + popl %ebp ret -- cgit v1.2.3