how printf works internally.?

12,322

The write(2) system call is used with the file descriptor set to STDOUT (its value is 1).

To invoke a system call from assembly, the eax register has to hold the id of the system call (I think the particular number of write() is 3) and the rest of the registers (ebx, ecx, ...) have to contain the arguments. Then doing an int 80h will switch the control from your process to the kernel routine that handles system calls.

The above is platform-specific, but virtually all Unix-like operating systems work like that.

Share:
12,322
rsjethani
Author by

rsjethani

I like coding.........I like to learn and share with brilliant minds all over the world........

Updated on June 17, 2022

Comments

  • rsjethani
    rsjethani almost 2 years

    Possible Duplicate:
    C/C++ function definitions without assembly

    hi again, I want to know how printf works internally...by internally I mean what underlying system calls/ISRs etc mechanism is used...and not about the variable argument list...

    Reason:I am using FASM but there is little there for console i/o, I know I can use printf available from the c library(I don't know how but that's a different point)

    thanks.

  • jschmier
    jschmier over 13 years
    System call implementation can also be architecture specific. CISC architectures such as x86 support additional techniques such as SYSCALL/SYSENTER or SYSRET/SYSEXIT "fast" control transfer instructions designed to quickly transfer control without the overhead of an interrupt.