Реферат: API Spying

// Копирование со смещением на расстояние между указателями.

value = (unsigned long)a.value

+ (unsigned long)&a.value

- (unsigned long)&value;

}

// Корректно присваивает относительный адрес.

relative_address& operator = (const relative_address& a)

{

if (this != &a)

{

// Копирование со смещением на расстояние между указателями.

value = (unsigned long)a.value

+ (unsigned long)&a.value

- (unsigned long)&value;

}

return *this;

}

// Устанавливает относительный адрес соответствующим указанному абсолютному.

void set_absolute(void* a)

{

// Относительный адрес отсчитывается от начала следующей инструкции.

// Поскольку в тех инструкциях, в которые входит относительный адрес,

// он находится в конце, начало следующей инструкции - это конец адреса.

value = (unsigned long)a - (unsigned long)&value - sizeof(value);

}

unsigned long value;

};

// Класс, упрощающий работу с однобайтной командой.

template<unsigned char c>

К-во Просмотров: 994
Бесплатно скачать Реферат: API Spying