(New page: == Library Routines == O ficheiro \verb|lib.asm| contém, além das rotinas de arranque (\verb|_start|) e de terminação (\verb|_exit|), um conjunto de rotinas de biblioteca que poderá ...) |
|||
Line 1: | Line 1: | ||
== Library Routines == | == Library Routines == | ||
− | + | File <tt>lib.asm</tt> contém, além das rotinas de arranque (\verb|_start|) e de terminação (\verb|_exit|), um conjunto de rotinas de biblioteca que poderá utilizar, com nomes auto-explicativos e semelhantes aos da biblioteca de C: | |
− | + | * <tt>void println()</tt> -- Imprime o caráter de mudança de linha (\verb|\n|). | |
− | + | * <tt>void printsp(int n)</tt> -- Imprime \verb|n| espaços brancos. | |
− | + | * <tt>void prints(const char *s)</tt> -- Imprime a cadeia de caracteres \verb|s|, terminada em NULL (\verb|\0|). | |
− | + | * <tt>void printi(int i)</tt> -- Imprime o valor inteiro \verb|i|, em decimal. | |
− | + | * <tt>void printd(double d)</tt> -- Imprime o valor real em precisão dupla num formato equivalente ao \verb|%g| da função \verb|printf| da linguagem C. | |
− | + | * <tt>char *readln(char *buf, int size)</tt> -- Equivale a \verb|fgets(buf, size, stdin)| em C. | |
− | + | * <tt>int readb()</tt> -- Lê um byte do terminal. | |
− | + | * <tt>int readi()</tt> -- Lê um inteiro decimal, isolado numa linha, do terminal. | |
− | + | * <tt>int readd()</tt> -- Lê um valor real em precisão dupla, isolado numa linha, do terminal. | |
− | + | * <tt>int strlen(const char *s)</tt> -- Equivalente à rotina homónima em C. | |
− | + | * <tt>int atoi(const char *s)</tt> -- Equivalente à rotina homónima em C. | |
− | + | * <tt>double atod(const char *s)</tt> -- Converte uma cadeia de caracteres ASCII, terminada em NULL (\verb|\0|) no valor real em precisão dupla que representa. | |
− | + | * <tt>const char *itoa(int i)</tt> -- Converte um valor inteiro para uma cadeia de caracteres ASCII, terminada em NULL (\verb|\0|), situada num bloco de memória fixo (é reutilizado em chamadas subsequentes), em decimal. | |
− | + | * <tt>const char *dtoa(double d, int ndig, char *s)</tt> -- Converte um valor real em precisão dupla para uma cadeia de caracteres ASCII com \verb|ndig| dÃgitos significativos, terminada em NULL (\verb|\0|), num formato equivalente ao \verb|%g| da linguagem C. O resultado é guardado na cadeia \verb|s| que deverá ter dimensão suficiente ou, caso seja um ponteiro nulo, num bloco de memória fixo reutilizado em chamadas subsequentes. | |
− | |||
− | |||
== System Calls == | == System Calls == |
File lib.asm contém, além das rotinas de arranque (\verb|_start|) e de terminação (\verb|_exit|), um conjunto de rotinas de biblioteca que poderá utilizar, com nomes auto-explicativos e semelhantes aos da biblioteca de C:
File \verb|sys.asm| contém as chamadas ao sistema que pode realizar em programas escritos em NX6. Uma explicação das chamadas ao sistema pode ser obtida através de: \begin{verbatim}
prompt$ man 2 intro prompt$ man 2 syscalls
\end{verbatim}
Algumas destas chamadas não existem na biblioteca de C, outras têm um comportamente diferente da rotina C homónima.