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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2017, 15:24   #1
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию Есть ли общепринятый способ уменьшить число typecast'ов указателей?

Пишу такой кодес:

Код:
void LoadPE_ResolveImport(LoadPE_CONTEXT* ctx)
{
    PIMAGE_IMPORT_DESCRIPTOR import_desc =
        (PIMAGE_IMPORT_DESCRIPTOR) ((DWORD)ctx->real_base_addr
                                    + ctx->pe_hdr_ptr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
	for (; import_desc->Characteristics; ++import_desc)
	{

	}
}
Для процессора все адреса - это просто беззнаковые целые, но для людишек понапридумывали указателей, и в низкоуровневом программировании на C/C++ код состоит из такой гадости. Есть ли общепринятый способ уменьшить число typecast'ов указателей?

Последний раз редактировалось Вадим Мошев; 10.09.2017 в 00:47.
Aoizora вне форума Ответить с цитированием
Старый 15.07.2017, 17:51   #2
agmag
Пользователь
 
Регистрация: 15.07.2017
Сообщений: 31
По умолчанию

1. Использовать макросы
2. Не использовать Си++ - использовать python
3. Не использовать доступ к полям структур по указателям - использовать ООП.
agmag вне форума Ответить с цитированием
Старый 15.07.2017, 19:36   #3
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

>1. Использовать макросы
Удобнее шаблоны.

>2. Не использовать Си++ - использовать python
Криптор на питоне - это сильно.

>3. Не использовать доступ к полям структур по указателям - использовать ООП.
Может, еще STL использовать, которая тянет за собой CRT?
Aoizora вне форума Ответить с цитированием
Старый 15.07.2017, 20:12   #4
agmag
Пользователь
 
Регистрация: 15.07.2017
Сообщений: 31
По умолчанию

4. Реализовать стек беззнаковых целых и операции над ним
Код:
push(ctx->real_base_addr);

push(ctx->pe_hdr_ptr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

add();


PIMAGE_IMPORT_DESCRIPTOR import_desc;

pop(&import_desc);

for (; import_desc->Characteristics; ++import_desc)
{

}
agmag вне форума Ответить с цитированием
Старый 15.07.2017, 21:23   #5
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от agmag Посмотреть сообщение
4. Реализовать стек беззнаковых целых и операции над ним
Код:
push(ctx->real_base_addr);

push(ctx->pe_hdr_ptr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

add();


PIMAGE_IMPORT_DESCRIPTOR import_desc;

pop(&import_desc);

for (; import_desc->Characteristics; ++import_desc)
{

}
Охренеть, почти как сопроцессор для флоатов.
Aoizora вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск