Line 1: | Line 1: | ||
+ | {{TOCright}} | ||
== Funções == | == Funções == | ||
O ficheiro <tt>lib.asm</tt> contém, além das rotinas de início (<tt>_start</tt>) e fim (<tt>_exit</tt>), um conjunto de funções semelhantes às da biblioteca de C: | O ficheiro <tt>lib.asm</tt> contém, além das rotinas de início (<tt>_start</tt>) e fim (<tt>_exit</tt>), um conjunto de funções semelhantes às da biblioteca de C: | ||
+ | === Writing to stdout === | ||
* <tt>void println()</tt> -- Imprime o caráter de mudança de linha (<tt>\n</tt>). | * <tt>void println()</tt> -- Imprime o caráter de mudança de linha (<tt>\n</tt>). | ||
* <tt>void printsp(int n)</tt> -- Imprime <tt>n</tt> espaços brancos. | * <tt>void printsp(int n)</tt> -- Imprime <tt>n</tt> espaços brancos. | ||
Line 8: | Line 10: | ||
* <tt>void printi(int i)</tt> -- Imprime o valor inteiro <tt>i</tt>, em decimal. | * <tt>void printi(int i)</tt> -- Imprime o valor inteiro <tt>i</tt>, em decimal. | ||
* <tt>void printd(double d)</tt> -- Imprime o valor real em precisão dupla num formato equivalente ao <tt>%g</tt> da função <tt>printf</tt> da linguagem C. | * <tt>void printd(double d)</tt> -- Imprime o valor real em precisão dupla num formato equivalente ao <tt>%g</tt> da função <tt>printf</tt> da linguagem C. | ||
+ | |||
+ | === 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> -- Lê um byte do terminal. | * <tt>int readb()</tt> -- Lê um byte do terminal. | ||
* <tt>int readi()</tt> -- Lê um inteiro decimal, isolado numa linha, 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 readd()</tt> -- Lê um valor real em precisão dupla, isolado numa linha, do terminal. | ||
− | * <tt>int strlen(const char *s)</tt> -- | + | |
− | * <tt>int atoi(const char *s)</tt> -- | + | === Other === |
+ | * <tt>int strlen(const char *s)</tt> -- the same as in C. | ||
+ | * <tt>int atoi(const char *s)</tt> -- the same as in C. | ||
* <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. |
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.