![]() |
|
Модераторы: bsa |
![]()
|
|
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
я имел ввиду смещается указатель на вершину стека, Вы меня поняли ) вообще то дает ) писали уже что есть оптимизация для этого, т.е. если программа загрузится куда хотела то будет работать "быстрей" |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
+ еще протекторы - добавляют свой сегмент, кодируют (сжимают) программу и указывают свой адрес входа. А при запуске распаковывают программу "где она и была" и передают управление ей. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ох как скользко.. с точки зрения асм кода, да, может, также может и не занимать памяти вообще.. но это все оптимизация конечного кода.. но.. хотелось бы взглянуть на компилятор, на котором средставами языка, можно получить один и тот же адрес для разных переменных одного блока.. |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
union никто не отменял.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а не разных переменных одной специальной структуры.. |
|||
|
||||
| Hagrael |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Вопрос почти решен. Только вот этого я не понял: Буду признателен, если объясните.
Ответ получен
И для каждой из ОС свой метод компиляции, так? |
||||||||
|
|||||||||
| rodnover |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
Вот на вскидку вспомнил
http://www.aspack.com/asprotect.html В целом, это инструментарий, который сжимает, шифрует код программы (типа sfx архива) и при каждом запуске воссоздает оригинал программы, который и работает. Вот еще: http://ru.wikipedia.org/wiki/ASProtect
Метод то один, только условности разные. Например, в 32битных системах размер указателя 4 байта, в 64 битных - 8 байт, вызов внешних процедур, использование стека, регистров при вызове внешних процедур. Это тоже всё ассемблером успешно познается.
Потому я смайл и поставил. Хотя, структура то для экономии памяти и была придумана. Вообще, не вижу причин, чтобы преднамеренно указывать 2м переменным один адрес. Это сообщение отредактировал(а) rodnover - 17.8.2011, 09:49 |
||||
|
|||||
| Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Фрагментация памяти? Насчет протектора: он извлекает программу из архива и кладет в какую-то директорию как .tmp-файл, после чего запускает? А размеры задаются при компиляции или же при запуске программы сообщаются ей с помощью ОС? |
|||
|
||||
| rodnover |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
Да не. Смысл экономить на том чего много?
При компиляции задаются. В простом случае компилятор создается под конкретную платформу. Но, также есть кросскомпиляторы (которых всё больше), в параметрах которых можно указать платформу, формат выходного файла, на основании которого они будут компилировать. Пример
cpu-type указывает под какой процессор компилировать. Это сообщение отредактировал(а) rodnover - 17.8.2011, 10:15 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну да именно для экономии памяти |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Компилятор может поместить 2 разные переменные из одного блока в одно и то же место в памяти, если у них не пересекаются времена жизни (live range analysis). Но как только вы возьмете у переменной адрес, ее область жизни немедленно расширится до области жизни переменной с этим самым адресом (как минимум), а после этого у оригинальных переменных их области жизни пересекуться, и компилятор разведет их по разным адресам в памяти. Так что поместить 2 разных переменных по одному и тому же адресу компилятор теоритически может, а вот увидеть это средствами языка увы нельзя. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
и пока мы не взяли адрес (пусть косвено, посредством передачи объекта по ссылке) некорректно говорить о том, что объект располагается по какому либо определенному адресу... хм .. что то мне это вдруг странным образом напомнило одного знаменитого кота.. раньше как то внимание не заострялось на этом Это сообщение отредактировал(а) mes - 17.8.2011, 13:09 |
||||
|
|||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
Оптимизация Кота?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Кот Шрёдингера
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |