Возведение в степень числа по модулю(в классах int64)

miff92
Дата: 03.06.2011 17:14:53
Как можно реализовать работу этого алгоритма с использованием int64? Просто заменить integer на int64 не работает

Lelikk
В соответствии с представлением степени в двоичной записи начиная со старших разрядов проходим к младшим:
1) если 1 -- возводим в квадрат по модулю p и умножаем на основание
2) если 0 -- просто в квадрат

Ответ -- результат:
Код который это реализует:

function VSDK(Base, Power, Modul: Integer): Integer;
asm
        push ebx
        push edi
        mov edi, eax
        mov eax, 1
        push ecx
        bsr ecx, edx
        mov ebx, ecx
        sub ecx, 31
        neg ecx
        shl edx, cl
        inc ebx
        pop ecx
 @@1:   push edx
        mul eax
        div ecx
        mov eax, edx
        pop edx
        shl edx, 1
        jnc @@2
        push edx
        mul edi
        div ecx
        mov eax, edx
        pop edx
 @@2:   dec ebx
        jnz @@1
        pop ebx
        pop edi
        ret
end;

Anatoly Podgoretsky
Дата: 03.06.2011 19:12:26
miff92,

Я не знаю, что тут деется, но вместо Int64 всегда можно использовать Extended и модуль Math. Мантиса у которого равна 64 бита
miff92
Дата: 03.06.2011 19:48:15
Anatoly Podgoretsky,
Да тут не в этом запара, запара в том что ригистры записаны для 32 бит, а нужно заменить на 64, а как я не знаю.
Johnmen
Дата: 03.06.2011 20:59:34
miff92,

Изобретение велика?
И почему вдруг регистры должны стать 64?

ЗЫ
Есть замечательная документация на асм. Достаточная и необходимая.
miff92
Дата: 03.06.2011 21:15:56
Johnmen, потому что работать нужно с числами больше класса integer, а конструкция функции не позволяет использовать в ней int64
Johnmen
Дата: 03.06.2011 21:26:11
miff92,

Жмешь CTRL+LeftMouse на Power. (не забыв указать uses Math)
Жмешь CTRL+LeftMouse на IntPower - смотришь, вникаешь, медитируешь, просветляешься...
miff92
Дата: 03.06.2011 21:39:58
Johnmen,

не догнал(да я тупой упорный)
miff92
Дата: 03.06.2011 22:23:01
функция mod не работает с extended
Johnmen
Дата: 03.06.2011 23:13:54
miff92
функция mod не работает с extended

Ты жалуешься или хвалишься открытием?
Esperito
Дата: 03.06.2011 23:58:40
miff92, озвучь-ка задачу. Полностью.