I want to know that what is Irvine32 library in assembly language.
Irvine32 library is collection of helpful functions, you may check online documentation for list of them and further details.
I want a defenation and also why we use this library?
I don't know why you use it.
Usually one wants to use it to avoid writing the code providing that functionality himself. As the assembly code replicating some of the functionality may be tens or hundreds of lines of code (or even thousands for very complex functions), and having it to write every time may be cumbersome.
Also the API provided by Irvine32 functions is often simpler to use than similar API provided by OS services, so it may be often somewhat simpler to use Irvine32 instead of calling the OS services directly.
It also provides library functions that read and print integers (like WriteDec), which there's no system call for. So it's like a simplified C library printf. And ReadDec returns a value in EAX, and success/fail in FLAGS (CF), while C library scanf requires you to pass a pointer where the result will be stored1.
It's designed for beginners and simple programs, not for efficiency. For example, Irvine32 uses its own calling convention with no call-clobbered registers, so you can print stuff inside a loop without having to think of keeping your loop counter in a register that it's not going to step on.
Footnote 1: Because scanf can do multiple conversions in one call, and because C can't return both an integer and a flag as two separate return values. Returning a value in a register with success/fail in CF is something only asm calling conventions can normally use. It's not unique to Irvine32, though. Mac OS system calls do that, for example.
Irvine32 library is collection of helpful functions, you may check online documentation for list of them and further details.
I don't know why you use it.
Usually one wants to use it to avoid writing the code providing that functionality himself. As the assembly code replicating some of the functionality may be tens or hundreds of lines of code (or even thousands for very complex functions), and having it to write every time may be cumbersome.
Also the API provided by Irvine32 functions is often simpler to use than similar API provided by OS services, so it may be often somewhat simpler to use Irvine32 instead of calling the OS services directly.
It also provides library functions that read and print integers (like
WriteDec
), which there's no system call for. So it's like a simplified C libraryprintf
. AndReadDec
returns a value in EAX, and success/fail in FLAGS (CF), while C libraryscanf
requires you to pass a pointer where the result will be stored1.It's designed for beginners and simple programs, not for efficiency. For example, Irvine32 uses its own calling convention with no call-clobbered registers, so you can print stuff inside a loop without having to think of keeping your loop counter in a register that it's not going to step on.
Footnote 1: Because scanf can do multiple conversions in one call, and because C can't return both an integer and a flag as two separate return values. Returning a value in a register with success/fail in CF is something only asm calling conventions can normally use. It's not unique to Irvine32, though. Mac OS system calls do that, for example.