Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
#1

Сложение длинных чисел в ассемблерной вставке - C++

02.06.2012, 15:51. Просмотров 677. Ответов 2
Метки нет (Все метки)

У меня есть класс:
C++
1
2
3
4
5
class Big_int
{
    UINT64* num;  //массив разрядов числа
    size_t s, cap;   //число элементов, максимальное число элементов
//....
Функция сложения (написана не до конца):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void add(const Big_int* bn)        
    {
        _asm
        {
                mov rcx, QWORD PTR [bn];
                mov rdx, rcx;
                mov rcx, [rcx+8];
                mov rbx, QWORD PTR this;
                mov rbx, QWORD PTR [rbx];
                clc;
            lo: mov rax, [rdx];
                adc [rbx], rax;
                add ebx, 8;
                add edx, 8;
                dec rcx;
                jnz lo;
        }  
    }
В rbx и rdx у меня храняться итераторы массивов num и bn->num соответственно. Ошибка в том, что эти регистры получают неправильный адрес. В чем косяк?
P.S. Intel C++ Composer XE 2011 в Visual Studio 2010.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2012, 15:51     Сложение длинных чисел в ассемблерной вставке
Посмотрите здесь:

Сложение двух длинных чисел. C++
Очищение памяти в ассемблерной вставке C++
C++ Непонятки в ассемблерной вставке
Умножение длинных чисел C++
C++ Умножение длинных чисел
Как правильно вставлять диррективу .386 в ассемблерной вставке C++
Как реализовать хранение длинных чисел, их сложение и вычитание? C++
C++ Класс длинных чисел
C++ Сравнение длинных чисел >, <
Сложение/деление двух длинных чисел (длиной 1024 бита) C++
Сложение длинных чисел C++
C++ Сложение длинных чисел, содержащихся в строках

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
02.06.2012, 16:08     Сложение длинных чисел в ассемблерной вставке #2
Может быть
Assembler
1
2
mov rcx, QWORD PTR [bn];
mov rdx, [rcx];
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
02.06.2012, 17:19  [ТС]     Сложение длинных чисел в ассемблерной вставке #3
Спасибо, понял ошибку. Конечный код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mov rcx, [bn];
mov rbx, [this];
mov rbx, [rbx];
mov rdx, rcx;
mov rcx, [rcx+8];
mov rdx, [rdx];
clc;
lo:
mov rax, [rdx];
add rdx, 8;
adc [rbx], rax;
add rbx, 8;
dec rcx;
jnz lo;
Yandex
Объявления
02.06.2012, 17:19     Сложение длинных чисел в ассемблерной вставке
Ответ Создать тему
Опции темы

Текущее время: 14:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru