Difference between revisions of "Manual da RTS"

From Wiki**3

(Reading from stdin)
(Funções)
 
(4 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== Funções ==
 
== 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:
+
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 ===
 
=== Writing to stdout ===
* '''void println()''' -- Imprime o caráter de mudança de linha (<tt>\n</tt>).
+
* '''void println()''' -- Imprime o caráter de mudança de linha ('''\n''').
* '''void printsp(int n)''' -- Imprime <tt>n</tt> espaços brancos.
+
* '''void printsp(int n)''' -- Imprime '''n''' espaços brancos.
* '''void prints(const char *s)''' -- Imprime a cadeia de caracteres <tt>s</tt>, terminada em NULL (<tt>\0</tt>).
+
* '''void prints(const char *s)''' -- Imprime a cadeia de caracteres '''s''', terminada em NULL ('''\0''').
* '''void printi(int i)''' -- Imprime o valor inteiro <tt>i</tt>, em decimal.
+
* '''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 <tt>%g</tt> da função <tt>printf</tt> da linguagem C.
+
* '''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 ===
 
=== Reading from stdin ===
Line 18: Line 18:
  
 
=== Other ===
 
=== Other ===
* <tt>int strlen(const char *s)</tt> -- the same as in C.
+
* '''int strlen(const char *s)''' -- the same as in C.
* <tt>int atoi(const char *s)</tt> -- the same as in C.
+
* '''int atoi(const char *s)''' -- 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.
+
* '''double atod(const char *s)''' -- Converte uma cadeia de caracteres ASCII, terminada em NULL ('''\0''') 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.
+
* '''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.
* <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.
+
* '''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 <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:
+
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

Latest revision as of 13:17, 5 April 2024

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

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.