|
|
Line 1: |
Line 1: |
| {{TOCright}}
| | #REDIRECT [[ist:Manual da RTS]] |
| == Funções ==
| |
| | |
| Os ficheiros da RTS 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 printsp(int n)</tt> -- Imprime <tt>n</tt> espaços brancos.
| |
| * <tt>void prints(const char *s)</tt> -- Imprime a cadeia de caracteres <tt>s</tt>, terminada em NULL (<tt>\0</tt>).
| |
| * <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.
| |
| | |
| === Reading from stdin ===
| |
| * <tt>char *readln(char *buf, int size)</tt> -- Equivale a <tt>fgets(buf, size, stdin)</tt> em C.
| |
| * <tt>char readb()</tt> -- Lê um byte do terminal.
| |
| * <tt>int readi()</tt> -- Lê um inteiro decimal, isolado numa linha, do terminal.
| |
| * <tt>double readd()</tt> -- Lê um valor real em precisão dupla, isolado numa linha, do terminal.
| |
| | |
| === 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>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> 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 ==
| |
| | |
| O ficheiro <tt>kernel.asm</tt> 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.
| |
| | |
| [[category:Compiladores]] | |
| [[category:Ensino]]
| |
| [[en:RTS Manual]]
| |