m |
|||
Line 13: | Line 13: | ||
=== Reading from stdin === | === Reading from stdin === | ||
* <tt>char *readln(char *buf, int size)</tt> -- Equivale a <tt>fgets(buf, size, stdin)</tt> em C. | * <tt>char *readln(char *buf, int size)</tt> -- Equivale a <tt>fgets(buf, size, stdin)</tt> em C. | ||
− | * <tt>int readb()</tt> -- | + | * <tt>int readb()</tt> -- Lê um byte do terminal. |
− | * <tt>int readi()</tt> -- | + | * <tt>int readi()</tt> -- Lê um inteiro decimal, isolado numa linha, do terminal. |
− | * <tt>int readd()</tt> -- | + | * <tt>int readd()</tt> -- Lê um valor real em precisão dupla, isolado numa linha, do terminal. |
=== Other === | === Other === | ||
Line 22: | Line 22: | ||
* <tt>double atod(const char *s)</tt> -- Converte uma cadeia de caracteres ASCII, terminada em NULL (<tt>\0</tt>) no valor real em precisão dupla que representa. | * <tt>double atod(const char *s)</tt> -- Converte uma cadeia de caracteres ASCII, terminada em NULL (<tt>\0</tt>) 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 (<tt>\0</tt>), situada num bloco de memória fixo (é reutilizado em chamadas subsequentes), em decimal. | * <tt>const char *itoa(int i)</tt> -- Converte um valor inteiro para uma cadeia de caracteres ASCII, terminada em NULL (<tt>\0</tt>), 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 <tt>ndig</tt> | + | * <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 <tt>ndig</tt> dígitos significativos, terminada em NULL (<tt>\0</tt>), num formato equivalente ao <tt>%g</tt> da linguagem C. O resultado é guardado na cadeia <tt>s</tt> 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 == |
O ficheiro lib.asm contém, além das rotinas de início (_start) e fim (_exit), um conjunto de funções semelhantes às da biblioteca de C:
O ficheiro sys.asm contém as chamadas ao sistema que podem ser realizadas em programas escritos na linguagem em implementação. Uma explicação das chamadas ao sistema pode ser obtida através de:
prompt$ man 2 intro prompt$ man 2 syscalls
Algumas destas chamadas não existem na biblioteca de C, outras têm um comportamente diferente da rotina C homónima.