Difference between revisions of "Manual da RTS"

From Wiki**3

(Library Routines)
Line 1: Line 1:
 
== Library Routines ==
 
== Library Routines ==
  
File <tt>lib.asm</tt> contém, além das rotinas de arranque (\verb|_start|) e de terminação (\verb|_exit|), um conjunto de rotinas de biblioteca que poderá utilizar, com nomes auto-explicativos e semelhantes aos da biblioteca de C:
+
File <tt>lib.asm</tt> contém, além das rotinas de arranque (<tt>_start</tt>) e de terminação (<tt>_exit</tt>), um conjunto de rotinas de biblioteca que poderá utilizar, com nomes auto-explicativos e semelhantes aos da biblioteca de C:
  
* <tt>void println()</tt> -- Imprime o caráter de mudança de linha (\verb|\n|).
+
* <tt>void println()</tt> -- Imprime o caráter de mudança de linha (<tt>\n</tt>).
* <tt>void printsp(int n)</tt> -- Imprime \verb|n| espaços brancos.
+
* <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 \verb|s|, terminada em NULL (\verb|\0|).
+
* <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 \verb|i|, 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 \verb|%g| da função \verb|printf| 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.
* <tt>char *readln(char *buf, int size)</tt> -- Equivale a \verb|fgets(buf, size, stdin)| 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.
Line 14: Line 14:
 
* <tt>int strlen(const char *s)</tt> -- Equivalente à rotina homónima em C.
 
* <tt>int strlen(const char *s)</tt> -- Equivalente à rotina homónima em C.
 
* <tt>int atoi(const char *s)</tt> -- Equivalente à rotina homónima em C.
 
* <tt>int atoi(const char *s)</tt> -- Equivalente à rotina homónima em C.
* <tt>double atod(const char *s)</tt> -- Converte uma cadeia de caracteres ASCII, terminada em NULL (\verb|\0|) 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 (\verb|\0|), 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.
* <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 \verb|ndig| dígitos significativos, terminada em NULL (\verb|\0|), num formato equivalente ao \verb|%g| da linguagem C. O resultado é guardado na cadeia \verb|s| que deverá ter dimensão suficiente ou, caso seja um ponteiro nulo, num bloco de memória fixo reutilizado em chamadas subsequentes.
+
* <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 \verb|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 ==
 
== System Calls ==

Revision as of 22:25, 3 March 2008

Library Routines

File lib.asm contém, além das rotinas de arranque (_start) e de terminação (_exit), um conjunto de rotinas de biblioteca que poderá utilizar, com nomes auto-explicativos e semelhantes aos 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 \verb|ndig</tt> 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

File \verb|sys.asm| 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: \begin{verbatim}

 prompt$ man 2 intro
 prompt$ man 2 syscalls

\end{verbatim}

Algumas destas chamadas não existem na biblioteca de C, outras têm um comportamente diferente da rotina C homónima.