2010-11-09 23 views
5

Duplicar posible:
C/C++ function definitions without assemblycómo funciona printf internamente.

Hola de nuevo, Quiero saber cómo funciona internamente printf ... por el interior me refiero a lo llamadas al sistema subyacentes/ISR mecanismo es etc usado ... y no sobre la lista de argumentos variables ...

Motivo: Estoy usando FASM pero hay poco allí para la consola de E/S, sé que puedo usar p rintf disponible en la biblioteca c (no sé cómo pero ese es un punto diferente)

gracias.

+2

lo puede conseguir mirando en implementaciones de código abierto – Andrey

+0

http://www.koders.com/c/fid4E0FA789459803C1E4369279B96E5C9B257941C8.aspx?s=printf#L7 – Andrey

+0

similar a [Entendiendo el hardware de printf] (http: // stackoverflow.com/questions/2457656/understanding-the-hardware-of-printf) – jschmier

Respuesta

5

La llamada al sistema write(2) se utiliza con el descriptor de archivo establecido en STDOUT (su valor es 1).

Para invocar una llamada al sistema desde el ensamblaje, el registro eax debe contener la identificación de la llamada al sistema (creo que el número particular de write() es 3) y el resto de los registros (ebx, ecx, ...) tiene que contener los argumentos. Luego, al hacer un int 80h se cambiará el control de su proceso a la rutina del kernel que maneja las llamadas al sistema.

Lo anterior es específico de la plataforma, pero prácticamente todos los sistemas operativos similares a Unix funcionan de esa manera.

+0

La llamada al sistema [implementación] (http://en.wikipedia.org/wiki/System_call#Typical_implementations) también puede ser específica de la arquitectura. Las arquitecturas CISC como x86 admiten técnicas adicionales, como las instrucciones de transferencia de control "rápido" SYSCALL/SYSENTER o SYSRET/SYSEXIT, diseñadas para transferir rápidamente el control sin la sobrecarga de una interrupción. – jschmier

Cuestiones relacionadas