|
|
1.1 root 1: .file "div_small.S"
2: /*---------------------------------------------------------------------------+
3: | div_small.S |
4: | |
5: | Divide a 64 bit integer by a 32 bit integer & return remainder. |
6: | |
7: | Copyright (C) 1992 W. Metzenthen, 22 Parker St, Ormond, Vic 3163, |
8: | Australia. E-mail [email protected] |
9: | |
10: | |
11: +---------------------------------------------------------------------------*/
12:
13: /*---------------------------------------------------------------------------+
14: | unsigned long div_small(unsigned long long *x, unsigned long y) |
15: +---------------------------------------------------------------------------*/
16:
17: #include "fpu_asm.h"
18:
19: .text
20: .align 2,144
21:
22: .globl div_small
23:
24: div_small:
25: pushl %ebp
26: movl %esp,%ebp
27:
28: pushl %esi
29:
30: movl PARAM1,%esi /* pointer to num */
31: movl PARAM2,%ecx /* The denominator */
32:
33: movl 4(%esi),%eax /* Get the current num msw */
34: xorl %edx,%edx
35: divl %ecx
36:
37: movl %eax,4(%esi)
38:
39: movl (%esi),%eax /* Get the num lsw */
40: divl %ecx
41:
42: movl %eax,(%esi)
43:
44: movl %edx,%eax /* Return the remainder in eax */
45:
46: popl %esi
47:
48: leave
49: ret
50:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.