Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2012, 19:45   #1
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию Переполнение буфера при использовании SSE

Даны два int массива a и b на шесть чисел (24 байта, 192 бита)
Надо к массиву а прибавить массив b
Первое, что пришло в голову(см тему "ASM в VS2010")к каждому i-му элементу массива a прибавить i-й элемент массива b.
Потом прочитал про MMX и SSE, начал изучать
Код:
__asm {
mov esi, 0h
start:
movups xmm0, [a+esi]
movups xmm1, [b+esi]
addps xmm0, xmm1
movups [a+esi], xmm0
xorps xmm0, xmm0
xorps xmm1, xmm1
add esi, 10h //4*4=16
cmp esi, 18h
jbe start
Ругается на ошибку буфера после второй итерации, хотя не должен. В чем может быть дело?
Berlioz вне форума Ответить с цитированием
Старый 19.08.2012, 20:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

128+128 сколько будет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.08.2012, 21:25   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

либо добавь два int-a в конец массива, либо грузи руками последние два элемента.... происходит чтение за пределом массива и AV
GreenWizard вне форума Ответить с цитированием
Старый 19.08.2012, 23:11   #4
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
128+128 сколько будет?
Я об этом задумывался. В инете видел несколько примеров, где массивы с тремя элементами использовались и все работало вроде как(компилятора паскаля нет под рукой, чтобы проверить). Это и сбило с толку
Berlioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переполнение буфера в функции demoniqus Общие вопросы C/C++ 12 19.04.2012 00:17
переполнение буфера goluzov Общие вопросы C/C++ 21 28.11.2011 09:04
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
переполнение буфера Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.07.2011 02:24
Переполнение при делении JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2010 14:04