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

inline assembler VS чтение по указателю - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Внутренняя организация базы данных http://www.cyberforum.ru/cpp/thread578836.html
Нужно написать небольшую консольную бд на с++, хотел бы посмотреть реальные примеры. Подкиньте парочку посмотреть пожалуйста :) В инете конечно полно примеров БД на visual c++ (mfc например), но там...
C++ Как добавить смещение в программу в формате exe хотелось узнать возможно добавить смещение в программу, тоесть к примеру есть код в программе от 0х1 до 0х100 можно ли как нибудь создать адресс к примеру 0х125 и вписать туда какое то значение???... http://www.cyberforum.ru/cpp/thread578554.html
C++ Программа для скачивания файлов используя прокси
Здравствуйте! Пробую написать программу которая качает некие заданные файлы с интернета, но при этом использует соединение через прокси. Подскажите как "обьяснить" программе чтоб она качала через...
Что за книга ГОФ? C++
Посоветовали почитать "гофа", но поиск в рунете ни к чему разумному не привел.
C++ Возвращение ссылки на локальный объект http://www.cyberforum.ru/cpp/thread574859.html
Что за бред, приписывайте, пожалуйста, в конце, что это только Ваше мнение. Хоть и бредовое. int& foo() { int a; //: warning C4172: возвращение адреса локальной или временной...
C++ Почему работает и так, и так: arr[i] и i[arr]? //один и тот же результат cout<<arr; cout<<i;//почему нет ошибки да даже это, например работает и выводит одинаковый результат // arrh.cpp: определяет точку входа для консольного приложения.... подробнее

Показать сообщение отдельно
ignisdivine
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
24.05.2012, 21:45  [ТС]
Нашел инструкции MOVSx - movsb, movsw, movsd.
Но почему-то программа падает не дойдя даже до половины элементов, проверял на значениях записываемых в ecx (при всех прочих равных условиях) 1000 еще работает, а 100000 уже нет, при всей выделяемой памяти в 1 МБ. В описании этих функций присутствует момент, что в счетчик CX нужно записывать значение элементов (байт, слов, двойных слов), но в данном случае кол-во элементов и байт совпадает ведь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
char* allocate(long dwSize)
{
     char* memPointer = (char*)VirtualAlloc(
                     (LPVOID) NULL,                               // Next page to commit
                     dwSize,                                         // Page size, in bytes
                     MEM_COMMIT | MEM_RESERVE,         // Allocate a committed page
                    PAGE_READWRITE);                          // Read/write access
     return memPointer;
}
 
int main()
{
  int size= 1048576;
  char* pointer = allocate(size);
  char* pointer2 = allocate(size);
  int block_size = size;
 
  __asm lea     si, pointer
  __asm lea     di, pointer2
  __asm mov    ecx, block_size
  __asm rep     movsb;
 
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru