Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

02.06.2012, 15:51. Просмотров 726. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2012, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сложение длинных чисел в ассемблерной вставке (C++):

Сложение длинных чисел - C++
Здравствуйте, при решении задачи возникла ошибка при складывании элементов массивов. Получаются числа не являющиеся верным ответом к...

Сложение двух длинных чисел. - C++
всем привет. как вы считаете, каким способом лучше сделать? или абсолютно всеравно?) #include <iostream> #include <string> ...

Вычислить сумму двух длинных бинарных чисел, используя сложение чисел в двоичной системе счисления - C++
Задано положительное и отрицательное число в двоичной системе.Составить программу вычисления суммы этих чисел, используя сложения чисел в...

Длинная арифметика. Сложение длинных чисел - C++
Здравствуйте! Впервые за все время изучения C++ решил реализовать длинную арифметику, используя строки. К сожалению, программа прошла...

Сложение длинных чисел, содержащихся в строках - C++
Даны две строки, которые содержат только цифры (длина каждой более 10 символов). Считая, что эти ленты содержат очень большие целые числа,...

Как реализовать хранение длинных чисел, их сложение и вычитание? - C++
Бесконечно длинных чисел.

2
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];
1
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;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2012, 17:19
Привет! Вот еще темы с ответами:

Сделать сложение, вычитание, умножение и деление длинных чисел - C++
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел. Сумму сделал, с вычитанием какая-то засада....

Непонятки в ассемблерной вставке - C++
В общем, все работает, только х2 не принимает значения с минусом, просто игнорирует минус + не работает команда перехода jg, работает...

Сложение/деление двух длинных чисел (длиной 1024 бита) - C++
Всем привет! Есть две вот такие задачи: 1. используя вставку кода в программу на С++, составить программу для сложения 2-х длинных...

Очищение памяти в ассемблерной вставке - C++
/* Выделить из строки подстроку указанной длины, начиная с заданной позиции. */ #include <stdio.h> #include <iostream>...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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