Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 1060
от 14.09.2008, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 302, Экспертов: 18
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 143382: День добрый! Помогите пожалуйста обратиться к элкменту массива из ассемблерной вставки. Задача на с++ перевести float в integer при помощи SSE. Помогите написать её максимально просто. У меня получается только так: extern int __stdcall SSE1Conv...

Вопрос № 143.382
День добрый! Помогите пожалуйста обратиться к элкменту массива из ассемблерной вставки. Задача на с++ перевести float в integer при помощи SSE. Помогите написать её максимально просто.
У меня получается только так:
extern int __stdcall SSE1ConvertR4ToI4(float *p_data, int p_offset, int p_count, int *p_ret)
{
float f;
int result;
do
{
f = p_data[i];
__asm
{
cvttss2si eax, dword ptr[f]
mov dword ptr[result], eax
}
p_ret[i] = result;
i ++;
} while(i < p_count);
return p_count;
}

Помогите мне напрямую обратится к элементам массива, чтобы не делать f = p_data[i]; и p_ret[i] = result;
я как не пробовал, всё время AccessViolation происходит.
Отправлен: 08.09.2008, 18:12
Вопрос задал: Andrik77 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Airyashov
Пример:
#include <iostream>

#define N 5

using namespace std;

void main(void)
{
float a[N];
__int32 b[N],i ;
for(i=0;i<N;i++){
cout<<"a["<<i<<"]=";
cin>>a[i];
}

_asm{
MOV eax,N
mov ecx,N
SHR ecx,1
LEA esi, a
LEA edi, b
next:
CVTPS2PI mm0,[esi]
MOVQ [edi],mm0
ADD esi,8
ADD edi,8
LOOP next
TEST eax,1
JZ parity
CVTTSS2SI eax,[esi]
MOV [edi],eax
parity:
}


for(i=0;i<N;i++){
cout<<"b["<<i<<"]="<<b[i]<<endl;
}
cin>>i;
}
Ответ отправил: Airyashov (статус: 7-ой класс)
Ответ отправлен: 09.09.2008, 09:52


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное