ассемблерная вставка
От: hop  
Дата: 29.11.07 10:35
Оценка:
Привет!
Подскажите как можно реализовать слюдующуу ассемблерную вставочку.
for(int i=0; i<=10; i++)
mas[i] = 2 * (pow(2, i));

Запарка в возведении в i-ю степень. Как это можно реализовать то?
Re: ассемблерная вставка
От: Graf Alex Украина http://grafalex.oberon.kiev.ua
Дата: 29.11.07 11:01
Оценка:
Здравствуйте, hop, Вы писали:

hop>Привет!

hop>Подскажите как можно реализовать слюдующуу ассемблерную вставочку.
hop>for(int i=0; i<=10; i++)
hop> mas[i] = 2 * (pow(2, i));

hop>Запарка в возведении в i-ю степень. Как это можно реализовать то?

А зачем асм? непортируемо, нечитаемо... к тому же можно не хуже и обычными средствами реализовать... например так:

int val = 2;
for(int i=0; i<=10; i++)
{
  mas[i] = val;
  val *= 2;
}

если памяти жалко, то можно при желании и без переменной val обойтись...
Re: ассемблерная вставка
От: ned Австралия  
Дата: 29.11.07 11:07
Оценка:
Здравствуйте, hop, Вы писали:

hop>for(int i=0; i<=10; i++)

hop> mas[i] = 2 * (pow(2, i));
mas[i] = 2 << i;
Re[2]: ассемблерная вставка
От: hop  
Дата: 29.11.07 11:18
Оценка:
все нужно именно на ассме. (мне он нафик не нужен, просто прошу помощи в решении задачи).
Предложенный Вами вариант не устраивает, т.к. i = 0, 2 в 0 = 1, 2 в 1 = 2.
Re[3]: ассемблерная вставка
От: K13 http://akvis.com
Дата: 29.11.07 11:47
Оценка:
Здравствуйте, hop, Вы писали:

hop>все нужно именно на ассме. (мне он нафик не нужен, просто прошу помощи в решении задачи).

hop>Предложенный Вами вариант не устраивает, т.к. i = 0, 2 в 0 = 1, 2 в 1 = 2.

а повнимательнее?

mas[i] = 2 * pow(2,i)

для i = 0 дает 2 * 1 = 2, что точно совпадает с 2 << i ну или 1 << (i+1) или 2 * ( 1 << i )
Re[3]: ассемблерная вставка
От: ned Австралия  
Дата: 29.11.07 11:48
Оценка:
Здравствуйте, hop, Вы писали:

hop>все нужно именно на ассме. (мне он нафик не нужен, просто прошу помощи в решении задачи).

hop>Предложенный Вами вариант не устраивает, т.к. i = 0, 2 в 0 = 1, 2 в 1 = 2.

Все верно у меня. Сдвиг 2 на ноль позиций влево дает 2 и т.д.

На асме как-то так будет:
mov eax, 2
mov ecx, i
shl eax, cl
mov a[i], eax

Или еще в цикл обернуть?
Re[3]: ассемблерная вставка
От: Максим2006 Беларусь  
Дата: 29.11.07 14:55
Оценка:
Здравствуйте, hop, Вы писали:

hop>все нужно именно на ассме. (мне он нафик не нужен, просто прошу помощи в решении задачи).

Упади в релизе в точку до или после цикла и всё увидишь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.