2009-11-24 4 views

ответ

3

Расстояние по умолчанию по умолчанию - NEAR или FAR.

@CodeSize может принимать два значения: 0 или 1, которое определяет, находятся ли переходы, вызовы и т. Д. В расстоянии NEAR или FAR.

Если вы используете модель памяти TINY, SMALL, COMPACT или FLAT, все прыжки и т. Д. NEAR, а @CodeSize == 0. Если вы используете модель памяти HARGE, LARGE, MEDIUM, als jumps и т. Д. . FAR и @CodeSize == 1.

+0

Что именно имеется в виду с NEAR и FAR? Разве они находятся в текущем сегменте или за пределами текущего сегмента? –

+1

Да, но для защищенного режима это намного сложнее, так как есть задействованные селекторы. В основном NEAR и FAR - разные режимы адресации, с дополнительным 16-битным компонентом для FAR-переходов, которые могут иметь очень разные значения в зависимости от режима работы. Точная спецификация находится в http://www.intel.com/Assets/PDF/manual/253666.pdf. Посмотрите в разделе «JMP FAR». – hirschhornsalz

1

Очень вероятно, максимальное расстояние (в байтах, в памяти) между двумя наиболее удаленными частями кода. Это может повлиять на то, как генерируются прыжки, поскольку могут быть разные инструкции, способные к разным длинам прыжка. Более короткий скачок может быть закодирован с более короткой (меньшей, часто быстрой) инструкцией.

This page упоминает, что число значений можно ожидать:

0 для TINY, маленький, компактный, и плоские моделей, и 1 для средних, крупных и ОГРОМНЫЕ модели (числовой приравнять).