01.09.2006, 06:22
общий
это ответ
Здравствуйте, C4tnt!
1. Скомпилируйте в объектный код, а затем вытащите оттуда машинный код, например с помощью редактора hiew, pview или подобного им, который умеет дизассемблировать код.
2. Загрузите этот кусок в память.
3. Если переменная была описана в исходном тексте программы, снаружи программы никому не доступна, и ни разу не изменялась, то оптимизирующий компилятор должен был сам заменить все обращения к переменной на инструкции с непосредственными операндами. Все современные компиляторы - оптимизирующие, исключение разве что - отладочный режим компиляции, в нём компилятор не следит за качеством кода, а старается скомпилировать всё как можно быстрее, с контролем ошибок и без оптимизации.
4. Выполнить этот кусок под Windows просто так не получится, Windows (как и все операционные системы, работающие в защищённом режиме) запрещает выполнение кода в блоке памяти, выделенной для хранения данных. Необходимо изменить атрибуты выделенного куска оперативной памяти средствами операционной системы (сделать системный вызов), добавив возможность его исполнения.
Не совсем понятно зачем всё это нужно. Вполне возможно, что вам подойдёт и dll-библиотеки. Или вы пишете вирус? =D