![]() |
|
![]() ![]() ![]() |
|
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Потребовалось написать функцию сложения векторов на Ассемблере. Использую инлайн ассемблер, встроенный в MSVS:
Что я не правильно делаю? Это сообщение отредактировал(а) x8m6 - 5.10.2009, 12:47 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
x8m6, для получения адреса переменной A используй команды lea eax,A или mov eax, offset A
если содержимое A[0] равно нулю, то после команды mov eax,A регистр eax=0, содержимое ecx ты обнулил самостоятельно командой xorps ecx,ecx (хотя правильнее xor ecx,ecx или sub ecx,ecx) в результате попытки чтения по нулевому адресу movapd xmm0,[eax+ecx] получаешь "Ошибка при выполнении программы нет доступа при чтении" доступ на чтение нулевых адресов имеет только операционная система ![]() |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Я немного переписал код. Теперь он выглядит так:
При дебаге вылетает ошибка Run-Time Check Failure #2 - Stack around the variable 'c' was corrupted. Это сообщение отредактировал(а) x8m6 - 6.10.2009, 12:56 |
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 2 Всего: 10 |
-------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
x8m6, "Stack around the variable 'c' was corrupted." не мудрено, "с" в ассемблере директива, назови переменную с1 или с_ и будет тебе счастье
![]() |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Всё разобрался в чём было дело. Дело было не в дерективе и не в адресе. Просто я выравнивание сделал адреса переменной а не указателя.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |