zaimplementuj 64-bitową arytmetykę na komputerze 32-bitowym

Poniższy kod oblicza iloczyn xiy i zapisuje wynik w pamięci. Typ danych ll_t jest zdefiniowany jako równoważny długiej długości.

typedef long long ll_t;
void store_prod(ll_t *dest, int x, ll_t y) {
    *dest = x*y;
}

gcc generuje następujący kod zespołu implementujący obliczenia: dest at% ebp + 8, x at% ebp + 12, y at% ebp + 16

1 movl 16(%ebp), %esi
2 movl 12(%ebp), %eax
3 movl %eax, %edx
4 sarl $31, %edx
5 movl 20(%ebp), %ecx
6 imull %eax, %ecx
7 movl %edx, %ebx
8 imull %esi, %ebx
9 addl %ebx, %ecx
10 mull %esi
11 leal (%ecx,%edx), %edx
12 movl 8(%ebp), %ecx
13 movl %eax, (%ecx)
14 movl %edx, 4(%ecx)

Ten kod wykorzystuje trzy mnożenia do implementacji arytmetyki wieloczynnikowej wymaganej do zaimplementowania 64-bitowej arytmetyki na maszynie 32-bitowej. Opisz algorytm użyty do obliczenia produktu i napisz kod zespołu, aby pokazać, w jaki sposób realizuje on twój algorytm.

Nie rozumiem linii 8 i 9 w kodzie zespołu powyżej. Czy ktoś może pomóc?

questionAnswers(3)

yourAnswerToTheQuestion