Skip to content

Commit 2ffbaef

Browse files
author
Lucien Le Roux
committed
Registre RB remplace par rdx ou r8 quand deja pris car RB non volatile.
1 parent 8547a33 commit 2ffbaef

9 files changed

+46
-40
lines changed

memmove.s

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ _forward:
2222
call memcpy wrt ..plt ; memcpy(rdi, rsi, rdx);
2323
jmp _return
2424
_backward:
25-
mov r8, rdi ; r8 = dest
26-
mov r9, rsi ; r9 = src
27-
mov r10, rdx ; r10 = n
25+
lea r8, [rdi] ; r8 = dest
26+
lea r9, [rsi] ; r9 = src
27+
lea r10, [rdx] ; r10 = n
2828
_while: ; do {
2929
dec r10 ; r10--
3030
mov al, BYTE [r9+r10]

strcasecmp.s

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ strcasecmp:
1717
_cwhile: ; do {
1818
movzx rdi, byte [rsi+rcx]
1919
call tolower wrt ..plt
20-
mov rbx, rax ; rbx = tolower(*(s2 + rcx))
20+
lea rdx, [rax] ; rdx = tolower(*(s2 + rcx))
2121

2222
movzx rdi, byte [r8+rcx]
2323
call tolower wrt ..plt ; rax = tolower(*(s1 + rcx))
@@ -26,12 +26,12 @@ _cwhile: ; do {
2626
_while: ; } while (
2727
cmp al, 0x0 ; al != 0
2828
je _done ; &&
29-
cmp bl, 0x0 ; bl != 0
29+
cmp dl, 0x0 ; dl != 0
3030
je _done ; &&
31-
cmp al, bl ; al == bl)
31+
cmp al, dl ; al == dl)
3232
je _cwhile
3333
_done:
34-
sub rax, rbx
34+
sub rax, rdx
3535
return:
3636
leave
3737
ret ; return rax

strchr.s

+9-3
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,23 @@ strchr:
99
mov rbp, rsp
1010

1111
push rdi
12+
xor rax, rax ; rax = 0
1213
while: ; while (
13-
cmp byte [rdi], sil ; *rdi != c
14+
cmp byte [rdi + rax], sil ; *rdi != c
1415
je done ; )
1516
cwhile: ; {
16-
cmp byte [rdi], 0 ; if (*s == 0)
17+
cmp byte [rdi + rax], 0 ; if (*(s + rax) == 0)
1718
je done ; return 0
18-
inc rdi ; rax++
19+
inc rax ; rax++
1920
jmp while ; }
2021
done:
22+
lea rax, [rdi + rax] ; rax = rdi + rax;
2123
pop rdi
2224

25+
cmp byte [rax], 0 ; if (rax == \0)
26+
jne return
27+
xor rax, rax ; rax = NULL
28+
2329
return:
2430
leave
2531
ret ; return rax

strcmp.s

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ strcmp:
1212
mov rcx, 0 ; rcx = 0
1313
cwhile: ; do {
1414
movzx rax, byte [rdi+rcx] ; rax = *(s1 + rcx)
15-
movzx rbx, byte [rsi+rcx] ; rbx = *(s2 + rcx)
15+
movzx rdx, byte [rsi+rcx] ; rdx = *(s2 + rcx)
1616
inc rcx ; rcx++
1717
while: ; } while (
1818
cmp al, 0 ; al != 0
1919
je done ; &&
20-
cmp bl, 0 ; bl != 0
20+
cmp dl, 0 ; dl != 0
2121
je done ; &&
22-
cmp al, bl ; al == bl)
22+
cmp al, dl ; al == dl)
2323
je cwhile ; )
2424
done:
25-
sub rax, rbx ; rax = rbx - rax;
25+
sub rax, rdx ; rax = rbx - rax;
2626
return:
2727
leave
2828
ret ; return rax

strcspn.s

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ while: ; while (
1616
cmp byte [rdi], 0 ; *s != 0
1717
je done ; )
1818
cwhile: ; {
19-
mov rbx, rsi ; rbx = reject
19+
lea rdx, [rsi] ; rdx = reject
2020
_while: ; while (
21-
cmp byte [rbx], 0 ; *rbx
21+
cmp byte [rdx], 0 ; *rdx
2222
je _done ; )
2323
_cwhile: ; {
24-
mov cl, byte [rbx]
25-
cmp byte [rdi], cl ; if (*rbx == *s)
24+
mov cl, byte [rdx]
25+
cmp byte [rdi], cl ; if (*rdx == *s)
2626
je _done ; break ; // character found
27-
inc rbx ; rbx++
27+
inc rdx ; rdx++
2828
jmp _while ; }
2929
_done:
30-
cmp byte [rbx], 0 ; if (*rbx != 0) // match
30+
cmp byte [rdx], 0 ; if (*rdx != 0) // match
3131
jne done ; break ;
3232
inc rax ; rax++
3333
inc rdi ; s++

strncmp.s

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@ strncmp:
1212
mov rcx, 0 ; rcx = 0
1313
cwhile: ; do {
1414
movzx rax, byte [rdi+rcx] ; rax = *(s1 + rcx)
15-
movzx rbx, byte [rsi+rcx] ; rbx = *(s2 + rcx)
15+
movzx r8, byte [rsi+rcx] ; r8 = *(s2 + rcx)
1616
dec rdx ; n--
1717
inc rcx ; rcx++
1818
while: ; } while (
1919
cmp al, 0x0 ; al != 0
2020
je done ; &&
21-
cmp bl, 0x0 ; bl != 0
21+
cmp r8b, 0x0 ; r8b != 0
2222
je done ; &&
2323
cmp dl, 0 ; n > 0
2424
jle done ; &&
25-
cmp al, bl ; al == bl
25+
cmp al, r8b ; al == r8b
2626
je cwhile ; )
2727
done:
28-
sub rax, rbx ; rax = rax - rbx
28+
sub rax, r8 ; rax = rax - r8
2929
return:
3030
leave
3131
ret ; return rax

strpbrk.s

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ while: ; while (
1717
cmp byte [rdi], 0 ; *s != 0
1818
je done ; )
1919
cwhile: ; {
20-
mov rbx, rsi ; rbx = accept
20+
mov rdx, rsi ; rdx = accept
2121
_while: ; while (
22-
cmp byte [rbx], 0 ; *rbx
22+
cmp byte [rdx], 0 ; *rdx
2323
je _done ; )
2424
_cwhile: ; {
25-
mov cl, byte [rbx]
26-
cmp byte [rdi], cl ; if (*rbx == *s)
25+
mov cl, byte [rdx]
26+
cmp byte [rdi], cl ; if (*rdx == *s)
2727
je done ; return rax ;
28-
inc rbx ; rbx++
28+
inc rdx ; rdx++
2929
jmp _while ; }
3030
_done:
3131
inc rdi ; haystack++

strspn.s

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ while: ; while (
1616
cmp byte [rdi], 0 ; *s != 0
1717
je done ; )
1818
cwhile: ; {
19-
mov rbx, rsi ; rbx = accept
19+
lea rdx, [rsi] ; rdx = accept
2020
_while: ; while (
21-
cmp byte [rbx], 0 ; *rbx
21+
cmp byte [rdx], 0 ; *rdx
2222
je _done ; )
2323
_cwhile: ; {
24-
mov cl, byte [rbx]
25-
cmp byte [rdi], cl ; if (*rbx == *s)
24+
mov cl, byte [rdx]
25+
cmp byte [rdi], cl ; if (*rdx == *s)
2626
je _done ; break ; // character found
27-
inc rbx ; rbx++
27+
inc rdx ; rdx++
2828
jmp _while ; }
2929
_done:
30-
cmp byte [rbx], 0 ; if (*rbx == 0) // no match
30+
cmp byte [rdx], 0 ; if (*rdx == 0) // no match
3131
je done ; break ;
3232
inc rax ; rax++
3333
inc rdi ; s++

strstr.s

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ while: ; while (
1717
je done ; )
1818
cwhile: ; {
1919
mov rax, rdi ; rax = haystack
20-
mov rbx, rsi ; rbx = needle
20+
mov rdx, rsi ; rdx = needle
2121
_while: ; while (1) {
22-
mov cl, byte [rbx]
23-
cmp cl, 0 ; if (*rbx == 0)
22+
mov cl, byte [rdx]
23+
cmp cl, 0 ; if (*rdx == 0)
2424
je done ; return haystack
25-
cmp byte [rax], cl ; if (*rbx != *rax)
25+
cmp byte [rax], cl ; if (*rdx != *rax)
2626
jne _done ; break ;
2727
inc rax ; rax++
28-
inc rbx ; rbx++
28+
inc rdx ; rdx++
2929
jmp _while ; }
3030
_done:
3131
inc rdi ; haystack++

0 commit comments

Comments
 (0)