Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Приручить компилятор

7.2K
30 ноября 2009 года
polaroid
94 / / 05.07.2008
Пишу проект на С, появилась необходимость реализовать специальным образом сравнение значений двух переменных. Например, объявляю одну локальную переменную, одну глобальную и произвожу сравнение вот так:

Код:
DWORD var1 = 0xF1F1F2F2;

void Func(void)
{
    DWORD var2 = <любое значение>;

    if (var2 == var1)
    {
        ....
    }
}


Компилятор при линковке выдает вот такой код в месте сравнения:
 
Код:
CMP ECX, F1F1F2F2h


Мне необходимо чтобы компилятор НЕ подставлял ЗНАЧЕНИЕ глобальной переменной в секцию кода, а сравнивал переменную непосредственно с ячейкой памяти в data секии, т.е. вот как то так:
 
Код:
CMP ECX, DWORD PTR [адрес var1]


Можно ли как-то настроить компилятор, чтобы он линковал так как мне надо, или нужно как-то особым образом формировать код?

P.S. Компилятор от MS VC++ 2008
52K
30 ноября 2009 года
ruprogman
20 / / 26.10.2009
Может volatile поможет?
 
Код:
volatile DWORD var1 = 0xF1F1F2F2;
7.2K
30 ноября 2009 года
polaroid
94 / / 05.07.2008
Хехе))) Действительно, помогло)) Огромное спасибо ruprogman! Теперь он сравнивает два регистра, предварительно помещая во второй содержимое переменной - то что и было нужно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог