|
|
Line 1: |
Line 1: |
− | == Library Routines == | + | == Funções == |
| | | |
− | File <tt>lib.asm</tt> contains, in addition to the start (<tt>_start</tt>) and end (<tt>_exit</tt>) routines, a set of library routines similar to the one provided by the C library:
| + | 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: |
| | | |
| * <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>). |
Line 20: |
Line 20: |
| == System Calls == | | == System Calls == |
| | | |
− | File <tt>sys.asm</tt> 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:
| + | O ficheiro <tt>sys.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 intro |
| prompt$ man 2 syscalls | | 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. | + | Algumas destas chamadas não existem na biblioteca de C, outras têm um comportamente diferente da rotina C homónima. |
| | | |
| [[category:Compiladores]] | | [[category:Compiladores]] |
| [[category:Ensino]] | | [[category:Ensino]] |
| [[en:RTS Manual]] | | [[en:RTS Manual]] |
Revision as of 22:45, 15 November 2008
Funções
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:
- void println() -- Imprime o caráter de mudança de linha (\n).
- void printsp(int n) -- Imprime n espaços brancos.
- void prints(const char *s) -- Imprime a cadeia de caracteres s, terminada em NULL (\0).
- void printi(int i) -- Imprime o valor inteiro i, em decimal.
- void printd(double d) -- Imprime o valor real em precisão dupla num formato equivalente ao %g da função printf da linguagem C.
- char *readln(char *buf, int size) -- Equivale a fgets(buf, size, stdin) em C.
- int readb() -- Lê um byte do terminal.
- int readi() -- Lê um inteiro decimal, isolado numa linha, do terminal.
- int readd() -- Lê um valor real em precisão dupla, isolado numa linha, do terminal.
- int strlen(const char *s) -- Equivalente à rotina homónima em C.
- int atoi(const char *s) -- Equivalente à rotina homónima em C.
- double atod(const char *s) -- Converte uma cadeia de caracteres ASCII, terminada em NULL (\0) no valor real em precisão dupla que representa.
- const char *itoa(int i) -- Converte um valor inteiro para uma cadeia de caracteres ASCII, terminada em NULL (\0), situada num bloco de memória fixo (é reutilizado em chamadas subsequentes), em decimal.
- const char *dtoa(double d, int ndig, char *s) -- Converte um valor real em precisão dupla para uma cadeia de caracteres ASCII com ndig dÃgitos significativos, terminada em NULL (\0), num formato equivalente ao %g da linguagem C. O resultado é guardado na cadeia 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
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.