Вообще-то решений тут я и не ждал (
gav просил вопросики).
Но раз пошла такая пьянка.
Цитата:
Сообщение от PavelAR
Дальний jump по абсолютному адресу, который вычисляется на этапе компиляции.
16-битное смещение зависит от положения точки применения макроса в исходном
коде, 16-битный сегментный адрес берется из того, что передается как параметр,
который тоже подставляется на этапе компиляции. Подобный прием используется
везде, где требуется сбросить конвейер процессора, чтобы избежать конфликтов.
|
Да, разумеется.
Кстати, это вполне официальный способ рекомендуемый Интелом для очистки конвейера команд. Я так понимаю, что особую команду для этого заводить не стали (для экономии, ага; тем более она бы использовалась крайне редко) - поскольку уже есть побочное действие другой команды, дающее нужный результат.
На последнюю часть вопроса
Цитата:
Сообщение от saovu
для чего-почему он используется строго СРАЗУ ЖЕ после включения защищенного режима процессора
|
не ответили
Цитата:
Сообщение от PavelAR
4-байтная переменная, для хранения адреса (16-битный сегмент: 16-битное
смещение) обработчика прерывания, по совместительству выполняющая роль
исполняемого кода (jump на метку begin). При установке новых обработчиков
переменная разумеется модифицируется, и уже не годится для исполнения
|
Это верно.
На самом деле смысл этого кода в экономии 4 байт.
Переменная будет объявлена и затрет программный код, который уже точно не будет нужен к моменту использования переменной.