214 lines
11 KiB
Plaintext
214 lines
11 KiB
Plaintext
<%title%>El compilador (ediv)
|
|
<%/title%>
|
|
<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>
|
|
<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><div align="justify">Muestra ayuda sobre la sintaxis del programa
|
|
y las opciones disponibles. No se realiza ninguna otra operación.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-d</td>
|
|
<td>--debug</td>
|
|
<td><div align="justify">Permite utilizar el trazador durante la ejecución
|
|
del programa.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-l</td>
|
|
<td>--list</td>
|
|
<td><div align="justify">Genera un archivo de texto aparte que contiene
|
|
el listado del programa en código intermedio (EML).</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-t</td>
|
|
<td>--table</td>
|
|
<td><div align="justify">Genera un archivo de texto aparte, con extensión
|
|
.tab, que contiene información avanzada para comprobar errores
|
|
de compilación.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-c</td>
|
|
<td>--check</td>
|
|
<td><div align="justify">No genera un ejecutable. Se utiliza cuando
|
|
sólamente se quiere comprobar si un programa está
|
|
escrito sin errores léxicos ni de sintaxis.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-s</td>
|
|
<td>--system</td>
|
|
<td><div align="justify">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.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-n</td>
|
|
<td>--news</td>
|
|
<td><div align="justify">Obtiene de Internet información de última
|
|
hora acerca de eDIV.</div></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td>-v</td>
|
|
<td>--version</td>
|
|
<td><div align="justify">No realiza ninguna operación, salvo
|
|
mostrar la versión actual del compilador.</div></td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<div align="justify"><code>archivo.prg</code>: es el archivo fuente que se
|
|
compilará.</div>
|
|
</li>
|
|
<li>
|
|
<div align="justify"><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.</div>
|
|
</li>
|
|
</ul>
|
|
<p align="justify">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 align="justify">Es posible que, una vez corregido el error, al intentar compilar
|
|
de nuevo aparezca otro error. Hay que corregir todos los errores del programa
|
|
fuente para que eDIV sea capaz de compilarlo. También es posible que
|
|
se muestren mensajes de advertencia; si es así, eDIV compilará
|
|
el programa correctamente (siempre que no encuentre ningún error), aunque
|
|
es posible que desee corregir el listado para que no se muestren esos mensajes.</p>
|
|
<p> </p>
|
|
<h2>Esquema de funcionamiento del compilador</h2>
|
|
<p align="justify">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>
|
|
<div align="justify">
|
|
<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>
|
|
</div>
|
|
<ol>
|
|
</ol>
|
|
<%end%> |