Я хочу знать, что такое библиотека Irvine32 на языке ассемблера.
Библиотека Irvine32 представляет собой набор полезных функций, вы можете проверить онлайн-документацию для получения спискаих и дальнейшие детали.
Мне нужна защита, а также почему мы используем эту библиотеку?
Я не знаю, почему вы используете ее.
Обычно каждый хочет использовать его, чтобы избежать написания кода, обеспечивающего эту функциональность сам.Поскольку код ассемблера, воспроизводящий некоторые функции, может состоять из десятков или сотен строк кода (или даже тысяч для очень сложных функций), и иметь его для записи каждый раз может быть громоздким.
Также API, предоставляемыйФункции Irvine32 часто проще в использовании, чем аналогичные API, предоставляемые службами ОС, поэтому часто может быть несколько проще использовать Irvine32 вместо непосредственного вызова служб ОС.
Он также предоставляет библиотечные функции, которые читают и печатают целые числа (как WriteDec
), для которого нет системного вызова.Так что это похоже на упрощенную библиотеку C printf
.И ReadDec
возвращает значение в EAX и success / fail во FLAGS (CF), в то время как библиотека C scanf
требует, чтобы вы передали указатель, в котором будет сохранен результат 1 .
Он предназначен для начинающих и простых программ, а не для эффективности.Например, Irvine32 использует свое собственное соглашение о вызовах без регистров, перекрывающих вызовы, поэтому вы можете печатать содержимое внутри цикла, не думая о том, чтобы сохранить счетчик цикла в регистре, на который он не собирается наступать.
Сноска 1: поскольку scanf может выполнять несколько преобразований за один вызов, а также потому, что C не может возвращать как целое число, так и флаг как два отдельных возвращаемых значения.Возвращение значения в регистр с успехом / неудачей в CF - это то, что обычно могут использовать только соглашения о вызовах asm.Это не уникально для Irvine32, хотя.Например, системные вызовы Mac OS делают это.