Skip to content

Commit 87455e5

Browse files
committed
indendent fixed
1 parent f596faa commit 87455e5

2 files changed

Lines changed: 48 additions & 48 deletions

File tree

asm/mul.asm

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@ _start:
1313

1414

1515

16-
sub rsp, 2 * 128 * 8 ; выделяем место под ответ
17-
mov r10, rsp
16+
sub rsp, 2 * 128 * 8 ; выделяем место под ответ
17+
mov r10, rsp
1818
19-
push rdi
20-
mov rcx, 256
21-
mov rdi, r10
22-
call set_zero ; нужно занулить место под ответ
23-
mov rcx, 128
24-
pop rdi
19+
push rdi
20+
mov rcx, 256
21+
mov rdi, r10
22+
call set_zero ; нужно занулить место под ответ
23+
mov rcx, 128
24+
pop rdi
2525

2626
call mul_long_long
2727

2828

29-
mov rcx, 256 ; подготовим регистры и выведем ответ
30-
mov rdi, r10
29+
mov rcx, 256 ; подготовим регистры и выведем ответ
30+
mov rdi, r10
3131
call write_long
3232

3333
mov al, 0x0a
@@ -46,65 +46,65 @@ mul_long_long:
4646
push rsi
4747
push rcx
4848

49-
push rax
50-
push rbx
51-
push rbp
52-
push r8
53-
push r9
49+
push rax
50+
push rbx
51+
push rbp
52+
push r8
53+
push r9
5454

5555
; далее просто перебираем разряды обоих чисел, умножаем и прибавляем к результату
5656

57-
xor r8, r8
58-
loop_outer:
57+
xor r8, r8
58+
loop_outer:
5959

6060

61-
xor r9, r9
61+
xor r9, r9
6262
loop_inner:
6363

6464
;
6565
; [r10 + 8 * (r8 + r9)] += [rdi + 8 * r8] * [rsi + 8 * r9] грубо говоря
6666
;
6767

68-
lea rax, [rdi + 8 * r8]
69-
mov rax, [rax] ; грубо превратили индекс в значение, ну да ладно
70-
lea rbx, [rsi + 8 * r9]
71-
mov rbx, [rbx]
68+
lea rax, [rdi + 8 * r8]
69+
mov rax, [rax] ; грубо превратили индекс в значение, ну да ладно
70+
lea rbx, [rsi + 8 * r9]
71+
mov rbx, [rbx]
7272

7373

74-
; high:low
75-
mul rbx ; rdx:rax = rax * rbx
76-
77-
mov rbp, r8
78-
add rbp, r9 ; rbp = r8 + r9
79-
lea rbp, [r10 + 8 * rbp] ; rbp - индекс, куда надо прибавлять
74+
; high:low
75+
mul rbx ; rdx:rax = rax * rbx
76+
77+
mov rbp, r8
78+
add rbp, r9 ; rbp = r8 + r9
79+
lea rbp, [r10 + 8 * rbp] ; rbp - индекс, куда надо прибавлять
8080

8181

82-
add [rbp], rax ; прибавляем и ставим CF
83-
lea rbp, [rbp + 8]
84-
adc [rbp], rdx ; снова керри флаг
82+
add [rbp], rax ; прибавляем и ставим CF
83+
lea rbp, [rbp + 8]
84+
adc [rbp], rdx ; снова керри флаг
8585
while_carry:
86-
jnc end_of_while ; если CF = 0 то конец
87-
lea rbp, [rbp + 8]
88-
adc QWORD [rbp], 0
89-
jmp while_carry
86+
jnc end_of_while ; если CF = 0 то конец
87+
lea rbp, [rbp + 8]
88+
adc QWORD [rbp], 0
89+
jmp while_carry
9090
end_of_while:
91-
91+
9292

93-
inc r9
94-
cmp rcx, r9
95-
ja loop_inner
93+
inc r9
94+
cmp rcx, r9
95+
ja loop_inner
9696

9797

98-
inc r8
99-
cmp rcx, r8
100-
ja loop_outer
98+
inc r8
99+
cmp rcx, r8
100+
ja loop_outer
101101

102102

103-
pop r9
104-
pop r8
105-
pop rbp
106-
pop rbx
107-
pop rax
103+
pop r9
104+
pop r8
105+
pop rbp
106+
pop rbx
107+
pop rax
108108

109109
pop rcx
110110
pop rsi

asm/sub.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ sub_long_long:
3535
mov rax, [rsi]
3636
lea rsi, [rsi + 8]
3737
sbb rax, [rdi]
38-
mov [rdi], rax
38+
mov [rdi], rax
3939
lea rdi, [rdi + 8]
4040
dec rcx
4141
jnz .loop

0 commit comments

Comments
 (0)