(→Funções) |
|||
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | == | + | {{TOCright}} |
+ | == Funções == | ||
− | + | Os ficheiros da RTS contêm, além das rotinas de início ('''_start''') e fim ('''_exit'''), um conjunto de funções semelhantes às da biblioteca de C: | |
− | * | + | === Writing to stdout === |
− | * | + | * '''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. |
− | * | + | |
− | * | + | === Reading from stdin === |
− | * | + | * '''char *readln(char *buf, int size)''' -- Equivale a '''fgets(buf, size, stdin)''' em C. |
− | * | + | * '''char readb()''' -- Lê um byte do terminal. |
− | * | + | * '''int readi()''' -- Lê um inteiro decimal, isolado numa linha, do terminal. |
− | * | + | * '''double readd()''' -- Lê um valor real em precisão dupla, isolado numa linha, do terminal. |
− | * | + | |
− | * | + | === Other === |
+ | * '''int strlen(const char *s)''' -- the same as in C. | ||
+ | * '''int atoi(const char *s)''' -- the same as in 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 '''s''' 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 == | == System Calls == | ||
− | + | O ficheiro '''kernel.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 intro | ||
prompt$ man 2 syscalls | prompt$ man 2 syscalls | ||
− | |||
− | Algumas destas chamadas não existem na biblioteca de C, outras | + | 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]] |
Os ficheiros da RTS 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 kernel.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.