![]() |
|
|
![]()
|
|
| valex13 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: нет Всего: 1 |
Господа!
Имеется следующий код на С++ Builder 5. Осуществляет поиск в TList элемента.
Я выяснил, что имеенно эта часть кода работает дольше всега, т.к. количество записей велико. Я бы хотел заменить поиск реквизита asm вставкой Как мне на asm написать следующую строку ?
|
||||
|
|||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 3 Всего: 18 |
Что такое TList ???
А вообще примерно так: mov edx,ContractList mov eax,i mov eax,[edx+eax*4].Items mov m_Dog,eax -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| valex13 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: нет Всего: 1 |
Это класс TList. Наследник класса TObject Добавлено @ 12:13 По сути этот класс работает со связанным списком указателей на что либо. В данном случае я создаю структуру. Освобощдаю под нее память и заношу туда данные. Затем в список добавляю ссылку на эту ячейку памяти. |
|||
|
||||
| valex13 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: нет Всего: 1 |
Вот на эту строчку и ругается. ContractList не просто переменная - это ссылка на класс. Может это имеет значение? |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 3 Всего: 18 |
Попробуй mov edx,dword ptr ContractList.
А вообще сначала попробуй оптимизировать поиск на более высоком уровне прежде чем переписывать объектный код с си на асм. Например, двоичный поиск по отсортированному списку. У вас вообще в си++ есть всякие там специальные классы для работы с быстрым поиском. И еще вот что: просто зайди в отладчике в свой сишный код и увидишь, что нагенерил тебе компиллятор (в виде асма тока надо смотреть) или же включи опцию "генерить асм-листинг" и скомпиллируй с ней. Это будет неоптимизированный код. Возьми его за основу (синтаксис). Из него сразу будут ясно, как работать с ContractList. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| au100 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.6.2005 Репутация: нет Всего: нет |
Такой поиск в неотсортированном списке всегда занимает огромное время. Для ускорения процесса создай либо отсортированный массив и ищи в нем, либо сбалансированное дерево и проходи по нему поиском. Иначе бесполезно применять ассемблер в таких случаях. Причина в алгоритме, в не в С++
Это сообщение отредактировал(а) au100 - 11.6.2005, 18:04 |
|||
|
||||
![]()
|
| Правила форума "Asm для Windows/DOS" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |