he seguido un .dok :p
This commit is contained in:
parent
a3a86c21ba
commit
85f8938cbf
|
@ -1,5 +1,196 @@
|
||||||
<%title%>El compilador (ediv)<%/title%>
|
<%title%>El compilador (ediv)
|
||||||
<div align="justify"><p><h1>El compilador (<i>ediv</i>)</h1></p>
|
<%/title%>
|
||||||
<p>El compilador en sí es un ejecutable llamado <code>ediv</code>. Se encuentra en la carpeta <code>bin</code> y, naturalmente, es el programa encargado de compilar un archivo de código fuente <code>.prg</code> en lenguaje DIV para crear un ejecutable independiente a partir de él.</p>
|
<div align="justify">
|
||||||
|
<p>
|
||||||
|
<h1>El compilador (<i>ediv</i>)</h1></p>
|
||||||
|
<p>El compilador en sí es un ejecutable llamado <code>ediv</code>. Se
|
||||||
|
encuentra en la carpeta <code>bin</code>, y es el programa encargado de compilar
|
||||||
|
un archivo de código fuente <code>.prg</code> en lenguaje DIV para
|
||||||
|
crear un ejecutable independiente a partir de él.</p>
|
||||||
|
<p>Este ejecutable es un programa de consola. Para funcionar, necesita que le
|
||||||
|
pasemos algunos parámetros en la línea de comandos. La sintaxis
|
||||||
|
es la siguiente:</p>
|
||||||
|
<p><code>ediv [opciones] archivo.prg [ejecutable]</code></p>
|
||||||
|
<p>A continuación se detallan cada uno de los argumentos:</p>
|
||||||
</div>
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<div align="justify"><code>opciones</code>: es una combinación de las
|
||||||
|
siguientes opciones posibles:<br>
|
||||||
|
<br>
|
||||||
|
<table border="1" cellspacing="0" cellpadding="6">
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-h</td>
|
||||||
|
<td>--help</td>
|
||||||
|
<td>Muestra ayuda sobre la sintaxis del programa y las opciones disponibles.
|
||||||
|
No se realiza ninguna otra operación.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-d</td>
|
||||||
|
<td>--debug</td>
|
||||||
|
<td>Permite utilizar el trazador durante la ejecución del programa.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-l</td>
|
||||||
|
<td>--list</td>
|
||||||
|
<td>Genera un archivo de texto aparte que contiene el listado del programa
|
||||||
|
en código intermedio (EML).</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-t</td>
|
||||||
|
<td>--table</td>
|
||||||
|
<td>Genera un archivo de texto aparte, con extensión .tab, que
|
||||||
|
contiene información avanzada para comprobar errores de compilación.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-c</td>
|
||||||
|
<td>--check</td>
|
||||||
|
<td>No genera un ejecutable. Se utiliza cuando sólamente se quiere
|
||||||
|
comprobar si un programa está escrito sin errores léxicos
|
||||||
|
ni de sintaxis.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-s</td>
|
||||||
|
<td>--system</td>
|
||||||
|
<td>Permite especificar el Sistema Operativo para el cual se quiere
|
||||||
|
generar el ejecutable, en el caso de que se desee crear un ejecutable
|
||||||
|
para un sistema distinto del actual.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-n</td>
|
||||||
|
<td>--news</td>
|
||||||
|
<td>Obtiene de Internet información de última hora acerca
|
||||||
|
de eDIV.</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>-v</td>
|
||||||
|
<td>--version</td>
|
||||||
|
<td>No realiza ninguna operación, salvo mostrar la versión
|
||||||
|
actual del compilador.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><code>archivo.prg</code>: es el archivo fuente que se compilará.</li>
|
||||||
|
<li><code>ejecutable</code>: es el nombre que se quiere que tenga el ejecutable
|
||||||
|
final. Si se omite, el ejecutable tendrá el mismo nombre que el archivo
|
||||||
|
fuente.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Una vez ejecutado el programa con los parámetros adecuados, el compilador
|
||||||
|
nos irá mostrando el estado del proceso, y por último nos informará
|
||||||
|
si la compilación ha tenido éxito. Si ocurre algún error,
|
||||||
|
se mostrará un mensaje explicando el error. Si el error se encuentra
|
||||||
|
en el fichero fuente, se nos indicará el número de línea
|
||||||
|
y de carácter donde se localiza el error. Por ejemplo:</p>
|
||||||
|
<br>
|
||||||
|
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td><table width="400" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td width="110"><font size="+1"><code>malvado.prg</code></font></td>
|
||||||
|
<td width="10"><font size="+1"><code>:</code></font></td>
|
||||||
|
<td width="10"><font size="+1"><code>6</code></font></td>
|
||||||
|
<td width="10"><font size="+1"><code>:</code></font></td>
|
||||||
|
<td width="20"><font size="+1"><code>18</code></font></td>
|
||||||
|
<td width="20"><font size="+1"><code>: </code></font></td>
|
||||||
|
<td width="70"><font size="+1"><code>ERROR 9</code></font></td>
|
||||||
|
<td width="20"><font size="+1"><code>: </code></font></td>
|
||||||
|
<td width="130"><font size="+1"><code>Esperando ';'</code></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="img/rojo.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/transparente.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/rojo.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/transparente.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/rojo.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/transparente.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/rojo.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/transparente.gif" width="100%" height="1"></td>
|
||||||
|
<td><img src="img/rojo.gif" width="100%" height="1"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><div align="center"><font size="-2">nombre del fichero en el que
|
||||||
|
se encuentra el error</font></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="36"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="36"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><font size="-2">código del<br>
|
||||||
|
error</font></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><div align="center"><font size="-2">descripción
|
||||||
|
del error </font></div></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4"><div align="right"><font size="-2">número de
|
||||||
|
línea</font></div></td>
|
||||||
|
<td valign="top"><div align="center"><img src="img/rojo.gif" width="1" height="18"></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="7"><div align="center"><font size="-2">número de
|
||||||
|
carácter en la línea</font></div></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"> </td>
|
||||||
|
</tr>
|
||||||
|
</table></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p> </p>
|
||||||
|
<h2>Esquema de funcionamiento del compilador</h2>
|
||||||
|
<p>No está de más tener una idea de las operaciones que hace el
|
||||||
|
compilador, especialmente por si surge algún problema, para saber de
|
||||||
|
dónde puede venir el fallo y cómo se puede arreglar.</p>
|
||||||
|
<ol>
|
||||||
|
<li>Primero, eDIV lee la configuración del archivo <code>ediv.cfg</code>.
|
||||||
|
Dicho archivo es necesario, ya que contiene información acerca de los
|
||||||
|
ajustes por defecto del compilador y las prioridades de las librerías.</li>
|
||||||
|
<li>A continuación, el programa detecta el idioma del sistema (si no
|
||||||
|
se ha forzado uno en el archivo de configuración).</li>
|
||||||
|
<li>Luego se procesan los argumentos de la línea de comandos.</li>
|
||||||
|
<li>Después se carga el archivo fuente (<code>.prg</code>) en memoria
|
||||||
|
y se compone el nombre del ejecutable final.</li>
|
||||||
|
<li>Seguidamente se comprueba que existe el <em>stub</em> correspondiente al
|
||||||
|
Sistema Operativo elegido. El <em>stub</em> es un archivo con extensión
|
||||||
|
<code>.rel</code> o <code>.dbg</code> que contiene el primer segmento del
|
||||||
|
ejecutable final, al cual después se agregará el código
|
||||||
|
del programa compilado.</li>
|
||||||
|
<li>A continuación se llama a una rutina de preparación que pone
|
||||||
|
a cero los datos internos del compilador.</li>
|
||||||
|
<li>Después se cargan todas las librerías que se encuentran en
|
||||||
|
el directorio correspondiente.</li>
|
||||||
|
<li>Luego se realiza una primera compilación que tiene como único
|
||||||
|
objetivo saber qué elementos de las librerías se utilizan, para
|
||||||
|
poder descartar las librerías que no se usan en el programa.</li>
|
||||||
|
<li>Se vuelve a llamar a la rutina del paso 6, para restablecer todos los parámetros
|
||||||
|
del compilador.</li>
|
||||||
|
<li>De nuevo se cargan las librerías, pero esta vez sólamente
|
||||||
|
las que se utilizan.</li>
|
||||||
|
<li>Se compila de nuevo el programa. El resultado es un código intermedio
|
||||||
|
que ha reservado únicamente la memoria que necesita para las librerías
|
||||||
|
que el programa necesita específicamente. De esta forma hemos ahorrado
|
||||||
|
mucha memoria y espacio en el paquete final del programa compilado (ejecutable
|
||||||
|
+ librerías), ya que hemos descartado todas las librerías innecesarias.</li>
|
||||||
|
<li>Se crea el archivo del ejecutable con el contenido del <em>stub</em>. Luego
|
||||||
|
se agrega el código intermedio comprimido del programa. Y por último,
|
||||||
|
en el caso de que hayamos indicado el parámetro --debug, añadimos
|
||||||
|
información de depurado al ejecutable para permitir que funcione el
|
||||||
|
trazador. </li>
|
||||||
|
</ol>
|
||||||
<%end%>
|
<%end%>
|
Binary file not shown.
Loading…
Reference in a new issue