Определение исправления?
Я видел этот термин в компиляторе Python Lisp и некоторых источниках компоновщика Си.
Я предполагаю, что исправление - это всего лишь некоторая обертка вокруг процедуры сборки, которая обеспечивает правильное выравнивание, но я совсем не уверен ни в чем здесь.
2 ответа
"Исправление" - это линкерный термин. Здесь довольно хорошее обсуждение этого вопроса:
http://www.microsoft.com/msj/0797/hood0797.aspx
Всякий раз, когда объектный файл (.o, .obj) ссылается на какой-либо внешний символ, он выводит код-заполнитель, такой как "Поместить адрес 0 в регистр 5" и примечание, которое говорит: "Заполните этот 0 фактическим адресом символа" foo ""., Какой-то другой объектный файл определит "foo", компоновщик вернется и "исправит" 0, чтобы он был правильным адресом.
Кстати, если никто не определяет "foo", вы получите сообщение об ошибке в стиле ретро 50, в котором что-то напоминает "не удается найти ссылку на _foo" или даже менее понятно, если вы используете C++.
И очень редко вы получите "ошибку исправления", когда адрес "foo" не соответствует месту, где компоновщик хочет его разместить. Обычно это происходит из-за исправления, которое требует слишком большого относительного смещения.
Linker and Loaders - интересный инкерный ресурс, который объясняет много жаргона и включает в себя не x86 процессоры здесь и там:
от модератора comp.compilers.