1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/*
Copyright (C) 2001, 2002 Thomas M. Ogrisegg
This is free software. You can redistribute and
modify it under the terms of the GNU General Public
Public License.
atol.S
i386 assembler implementation of atoi(3) & atol(3)
*/
.text
.globl atoi
.globl atol
.type atoi,@function
.type atol,@function
atoi:
atol:
pushl %esi
movl 0x8(%esp), %esi
xorl %eax, %eax
xorl %edx, %edx
xorb %cl, %cl
.LSpace:
lodsb
cmpb $0x21, %al
jng .LSpace
cmpb $'+', %al
jz .Lfe5
cmpb $'-', %al
jnz .Lfe3
inc %cl
jmp .Lfe5
.Lfe2:
imul $0xa, %edx
addl %eax, %edx
.Lfe5:
lodsb
.Lfe3:
cmpb $47, %al
jng .Lout
subb $('0'), %al
cmpb $9, %al
jng .Lfe2
.Lout:
movl %edx, %eax
or %cl, %cl
jz .Lreturn
negl %eax
.Lreturn:
popl %esi
ret
.size atoi, . - atoi
.size atol, . - atol
|