GMP .. двоичное исполнение - PullRequest
1 голос
/ 27 января 2010

в библиотеке GMP ....

как будет выполняться внутреннее выполнение операций над целыми числами ?? как 6 = 0110,4 = 0100 ... и 6 + 4 = 0110 + 0100 .. что происходит в случае умножения, деления и других операций! ?? как он контролирует биты переполнения и прочие вещи ...

1 Ответ

0 голосов
/ 28 января 2010

Большинство базовых подпрограмм с множественной точностью написаны на ассемблере и используют преимущества определенных инструкций процессора.

Кроме того, основная инструкция "ADD-with-Carry". Эта инструкция добавит содержимое двух регистров ЦП и бит переноса, а затем сохранит результат в регистр и установит бит переноса, если произошло переполнение. Чтобы добавить два числа с множественной точностью, бит переноса очищается, затем добавляется первое слово (обычно C «unsigned int» или «unsigned long») в каждом значении множественной точности, сохраняется результат и устанавливается бит переноса. для следующего цикла. Детали в обработке входных данных различного размера и т. Д.

Для умножения базовая инструкция «MULT» просто умножает два регистра и сохраняет верхнюю половину результата в одном регистре ЦП, а нижнюю половину результата - в другом регистре ЦП.

Для получения подробной информации о том, как на самом деле это делается на процессоре, вам необходимо изучить набор инструкций процессора.

...