summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/assembler.c114
-rw-r--r--lib/linker.c10
-rw-r--r--lib/simulator.c26
-rw-r--r--po/ProjetArchi.pot124
4 files changed, 164 insertions, 110 deletions
diff --git a/lib/assembler.c b/lib/assembler.c
index edf6aed..64eafb9 100644
--- a/lib/assembler.c
+++ b/lib/assembler.c
@@ -1235,6 +1235,8 @@ static instruct_t *e_match_i(phon_t * phons, instruct_t * instructs, expression_
break;
}
}
+
+ debug_print_expression(e);
for (instructs = instructs->next; instructs; instructs = instructs->next) {
t = e;
@@ -1255,22 +1257,22 @@ static instruct_t *e_match_i(phon_t * phons, instruct_t * instructs, expression_
}
break;
case 'C':
- if ((t->e_subtype != E_VALUE) && (t->e_subtype != E_LABEL)
- && (t->e_subtype != E_OPERATION)) {
+ if ((t->e_subtype != E_VALUE) && (t->e_subtype != E_LABEL)) {
go_out = 1;
- if (t->e_subtype == E_OPERATION) {
- if (t->op == OP_FUNC_CALL)
- go_out = 0;
- }
}
- if ((t->e_subtype == E_OPERATION) && (!(((t->child->e_subtype == E_LABEL)
- && (t->child->next->e_subtype ==
- E_VALUE))
- || ((t->child->e_subtype == E_VALUE)
- && (t->child->next->e_subtype ==
- E_LABEL))))) {
- go_out = 1;
+ if ((t->e_subtype == E_OPERATION)
+ && ((t->op == OP_PLUS) || (t->op == OP_MOINS))) {
+ if (((t->child->e_subtype == E_LABEL)
+ && (t->child->next->e_subtype == E_VALUE))
+ || ((t->child->e_subtype == E_VALUE)
+ && (t->child->next->e_subtype == E_LABEL))) {
+ go_out = 0;
+ }
+ }
+
+ if ((t->e_subtype == E_OPERATION) && (t->op == OP_FUNC_CALL)) {
+ go_out = 0;
}
break;
@@ -1292,6 +1294,34 @@ static instruct_t *e_match_i(phon_t * phons, instruct_t * instructs, expression_
}
}
+ if (instructs) {
+ fprintf(stderr, " o Instruction contenant %i champs explicites et %i champs implicites.\n",
+ instructs->nbexplicit, instructs->nbimplicit);
+ fprintf(stderr, " => Champs explicites.\n");
+ for (i = 0; i < instructs->nbexplicit; i++) {
+ fprintf(stderr, " + %s <= %s (type %s)\n",
+ instructs->names[i],
+ instructs->strings[i] ? instructs->strings[i] : "Pas de chaîne associée",
+ instructs->etypes[i] ? "prédéfinit" : "direct");
+ }
+ fprintf(stderr, " => Champs implicites.\n");
+ for (i = 0; i < instructs->nbimplicit; i++) {
+ switch (instructs->itypes[i]) {
+ case 0:
+ fprintf(stderr, " + %s <= %s (type direct)\n", instructs->implicits[i],
+ instructs->istrings[i]);
+ break;
+ case 1:
+ fprintf(stderr, " + %s <= %s (type prédéfinit)\n", instructs->implicits[i],
+ instructs->istrings[i]);
+ break;
+ case 2:
+ fprintf(stderr, " + %s <= %i (type valeur)\n", instructs->implicits[i],
+ instructs->ivalues[i]);
+ break;
+ }
+ }
+ }
return instructs;
}
@@ -1421,7 +1451,6 @@ static int evaluate_field(_TableauVariable it, char *field, field_t * fields)
break;
}
}
-
if (!(fields)) {
exception(1, _("Unknow field in metalanguage"));
}
@@ -1456,7 +1485,7 @@ void asm_eol(void)
int i;
char trouve;
_TableauVariable it;
- bytestream_t * pi;
+ bytestream_t *pi;
switch (special) {
case 2: /* Cas de #define */
@@ -1470,7 +1499,6 @@ void asm_eol(void)
break;
case 0: /* Cas normal */
/* C'est ici la bonne histoire... Il faut reconnaitre l'instruction */
-
e_current = e_line;
if (!(e_current))
break;
@@ -1577,7 +1605,7 @@ void asm_eol(void)
/* Operation cruciale: nous avons l'instruction qui correspond le mieux à notre
expression, on va tenter de l'évaluer */
-
+
pi = pushuninit(1);
Initialise(&it);
@@ -1672,7 +1700,7 @@ void asm_eol(void)
break;
}
}
-
+
pi->Encoded = evaluate_field(it, "FI", fields);
DetruitTab(&it);
break;
@@ -1694,7 +1722,7 @@ void asm_eol(void)
static void writeword(unsigned long int a, FILE * f, int n)
{
int i;
-
+
fprintf(stderr, "ÉCriture de %08lX sur %i\n", a, fileno(f));
if (fwrite(&a, sizeof(unsigned long int), 1, f) != 1) {
@@ -1735,10 +1763,7 @@ static void writestring(char *string, FILE * f)
| | | .| | |
| +---+--+---+ |
| |
-\****************/
-
-/* Cette fonction ajoute un fichier à un autre */
-
+\****************//* Cette fonction ajoute un fichier à un autre */
void appendfile(FILE * f, char *name)
{
unsigned long int a;
@@ -1790,8 +1815,8 @@ void asm_eof(FILE * f)
pushcontext(_("Dumping text segment"));
for (ttext = ttext->next; ttext; ttext = ttext->next) {
- sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."), ttext->offset,
- ttext->line, ttext->filename);
+ sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."),
+ ttext->offset, ttext->line, ttext->filename);
fprintf(stderr, "%s\n", errctx);
pushcontext(errctx);
@@ -1803,6 +1828,7 @@ void asm_eof(FILE * f)
a = ttext->Expr->avalue;
break;
case E_LABEL:
+ fprintf(stderr, "Symbole externe %s\n", ttext->Expr->symbol);
a = ttext->Expr->avalue;
nbsymbols++;
writeword(1, f2, 1);
@@ -1819,7 +1845,9 @@ void asm_eof(FILE * f)
}
}
if (ttext->Expr->op == OP_DECAL) {
- if ((ttext->Expr->child->e_subtype == E_LABEL) && (ttext->Expr->child->next->e_subtype == E_VALUE)) {
+ if ((ttext->Expr->child->e_subtype == E_LABEL)
+ && (ttext->Expr->child->next->e_subtype == E_VALUE)) {
+ fprintf(stderr, "Symbole externe %s\n", ttext->Expr->child->symbol);
a = ttext->Expr->child->next->avalue;
nbsymbols++;
writeword(1, f2, 1);
@@ -1831,8 +1859,13 @@ void asm_eof(FILE * f)
}
}
if (ttext->Expr->op == OP_PLUS) {
- if (((ttext->Expr->child->e_subtype == E_LABEL) && (ttext->Expr->child->next->e_subtype == E_VALUE)) || ((ttext->Expr->child->e_subtype == E_VALUE) && (ttext->Expr->child->next->e_subtype == E_LABEL))) {
+ if (((ttext->Expr->child->e_subtype == E_LABEL)
+ && (ttext->Expr->child->next->e_subtype == E_VALUE))
+ || ((ttext->Expr->child->e_subtype == E_VALUE)
+ && (ttext->Expr->child->next->e_subtype == E_LABEL))) {
if (ttext->Expr->child->e_subtype == E_LABEL) {
+ fprintf(stderr, "Symbole externe %s\n",
+ ttext->Expr->child->symbol);
a = ttext->Expr->child->next->avalue;
nbsymbols++;
writeword(1, f2, 1);
@@ -1841,6 +1874,8 @@ void asm_eof(FILE * f)
writestring(ttext->Expr->child->symbol, f2);
nbe++;
} else {
+ fprintf(stderr, "Symbole externe %s\n",
+ ttext->Expr->child->next->symbol);
a = ttext->Expr->child->avalue;
nbsymbols++;
writeword(1, f2, 1);
@@ -1891,6 +1926,7 @@ void asm_eof(FILE * f)
} else {
if (ttext->Label) {
nbsymbols++;
+ fprintf(stderr, "Symbole interne %s\n", ttext->Label);
writeword(0, f2, 1);
writeword(ttext->offset, f2, 1);
if (ttext->Label[strlen(ttext->Label) - 1] == ':') {
@@ -1909,8 +1945,8 @@ void asm_eof(FILE * f)
pushcontext(_("Dumping data segment"));
for (tdata = tdata->next; tdata; tdata = tdata->next) {
- sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."), tdata->offset,
- tdata->line, tdata->filename);
+ sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."),
+ tdata->offset, tdata->line, tdata->filename);
fprintf(stderr, "%s\n", errctx);
pushcontext(errctx);
@@ -1923,9 +1959,10 @@ void asm_eof(FILE * f)
break;
case E_LABEL:
a = tdata->Expr->avalue;
+ fprintf(stderr, "Symbole externe %s\n", tdata->Expr->child->symbol);
nbsymbols++;
writeword(3, f2, 1);
- writeword(tdata->offset + s_text, f2, 1);
+ writeword(tdata->offset, f2, 1);
writeword(strlen(tdata->Expr->symbol), f2, 1);
writestring(tdata->Expr->symbol, f2);
nbe++;
@@ -1970,8 +2007,9 @@ void asm_eof(FILE * f)
} else {
if (tdata->Label) {
nbsymbols++;
+ fprintf(stderr, "Symbole interne %s\n", tdata->Label);
writeword(2, f2, 1);
- writeword(tdata->offset + s_text, f2, 1);
+ writeword(tdata->offset, f2, 1);
writeword(strlen(tdata->Label), f2, 1);
writestring(tdata->Label, f2);
nbi++;
@@ -1987,15 +2025,16 @@ void asm_eof(FILE * f)
pushcontext(_("Dumping bss segment"));
for (tbss = tbss->next; tbss; tbss = tbss->next) {
- sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."), tbss->offset,
- tbss->line, tbss->filename);
+ sprintf(errctx, _("Processing word number %i coming from line %i of the file %s."),
+ tbss->offset, tbss->line, tbss->filename);
pushcontext(errctx);
if (!tbss->size) {
if (tbss->Label) {
nbsymbols++;
writeword(4, f2, 1);
- writeword(tbss->offset + s_text + s_data, f2, 1);
+ fprintf(stderr, "Symbole interne %s\n", tbss->Label);
+ writeword(tbss->offset, f2, 1);
writeword(strlen(tbss->Label), f2, 1);
writestring(tbss->Label, f2);
nbi++;
@@ -2054,10 +2093,7 @@ void assembler_flush(void)
delete_bytestream(data);
delete_bytestream(bss);
}
-
-/* Fonction générique qui va traiter un fichier entier */
-
-static int process_file(char *name)
+/* Fonction générique qui va traiter un fichier entier */ static int process_file(char *name)
{
FILE *f;
char buf[BUFSIZ], errctx[BUFSIZ], *p;
@@ -2072,6 +2108,7 @@ static int process_file(char *name)
return 1;
}
popcontext();
+
pushcontext(_("Reading file"));
while (fgets(buf, BUFSIZ, f)) {
sprintf(errctx, _("Reading line %i"), line = ++i);
@@ -2109,6 +2146,7 @@ void assemble_file(char *iname, char *oname)
exception(1, _("Error writing output file"));
}
popcontext();
+
if (process_file(iname)) {
exception(1, _("Error reading file"));
}
diff --git a/lib/linker.c b/lib/linker.c
index 0228a9f..0be4cfc 100644
--- a/lib/linker.c
+++ b/lib/linker.c
@@ -98,7 +98,7 @@ static char *readstring(FILE * f)
static void addsymbol(char *name, int offset, int type)
{
symbol_t *newsymbol;
-
+
newsymbol = (symbol_t *) Emalloc(sizeof(symbol_t));
newsymbol->next = NULL;
newsymbol->type = type;
@@ -210,6 +210,7 @@ static void dumprelog(FILE * f)
{
symbol_t *s = symbols, *t;
char trouve, err[BUFSIZ];
+ Uint32 decal;
for (s = s->next; s; s = s->next) {
if (s->type & 1) {
@@ -222,21 +223,22 @@ static void dumprelog(FILE * f)
case 1: /* text */
switch (t->type) {
case 0:
- objects[s->objindex]->text[s->offset] +=
+ decal =
objects[t->objindex]->textstart + t->offset;
break;
case 2:
- objects[s->objindex]->text[s->offset] +=
+ decal =
textsize + objects[t->objindex]->datastart + t->offset;
break;
case 4:
- objects[s->objindex]->text[s->offset] +=
+ decal =
textsize + datasize + objects[t->objindex]->bssstart + t->offset;
break;
default:
exception(1, _("Internal error"));
break;
}
+ objects[s->objindex]->text[s->offset] += decal;
writeword(objects[s->objindex]->textstart + s->offset, f);
break;
case 3: /* data */
diff --git a/lib/simulator.c b/lib/simulator.c
index 9a859f4..802587b 100644
--- a/lib/simulator.c
+++ b/lib/simulator.c
@@ -98,8 +98,10 @@ void DecodeExec(Uint32 instruction)
Uint32 champ_registre_resultat, val1, val2, resultat;
int test1, test2;
Uint32 val; /* valeur qui va etre stockée */
-
+
+
if (Opcode(instruction) & 0x80) {
+ fprintf(stderr, "Opcode FPU\n");
fpu(Opcode(instruction));
} else {
switch (Opcode(instruction)) {
@@ -111,6 +113,7 @@ void DecodeExec(Uint32 instruction)
case 5:
case 6:
case 7:
+ fprintf(stderr, "Opcode ALU\n");
/* ALU */
champ_registre_resultat = Champ1(instruction); /* Champ du registre dans lequel va etre stocké le résultat */
val1 = LireRegistre(Champ2(instruction)); /* Premier entier qui va etre utilisé dans l'opération */
@@ -185,6 +188,7 @@ void DecodeExec(Uint32 instruction)
}
break;
case 8: /* MOV */
+ fprintf(stderr, "Opcode MOV\n");
if (ValeurBit(Extension(instruction), 4) == 1) { /* MOV conditionnel */
if (ValeurBit(Extension(instruction), 5) == 0) { /* Test normal */
switch (champ(Extension(instruction) >> 2, 4)) { /* teste les bits 2 et 3 */
@@ -220,28 +224,38 @@ void DecodeExec(Uint32 instruction)
}
/* Pas de MOV conditionnel */
if (ValeurBit(Extension(instruction), 1) == 0) { /* Mov arg1 arg2 */
+ fprintf(stderr, "MOV arg1, arg2\n");
if (ValeurBit(Extension(instruction), 0) == 0) { /* arg2 = reg */
+ fprintf(stderr, "arg2 = reg (%i)\n", Champ2(instruction));
if (champ(Champ1(instruction), 2) == 0) { /* r/m de arg1 = 0 */
+ fprintf(stderr, "arg1 = reg (%i)\n", Champ3(instruction));
EcrireRegistre(Champ3(instruction), LireRegistre(Champ2(instruction)));
} else {
+ fprintf(stderr, "arg1 = adresse\n");
ST(Adresse(Champ1(instruction), instruction),
LireRegistre(Champ2(instruction)));
}
} else { /* arg2 = imm32 */
+ fprintf(stderr, "arg2 = imm (%i)\n", LireInstruction());
if (champ(Champ1(instruction), 2) == 0) { /* r/m de arg1 = 0 */
+ fprintf(stderr, "arg1 = reg (%i)\n", Champ3(instruction));
EcrireRegistre(Champ3(instruction), LireInstruction());
IncrementeCompteurOrdinal();
} else {
+ fprintf(stderr, "arg1 = adresse\n");
ST(Adresse(Champ1(instruction), instruction), LireInstruction());
IncrementeCompteurOrdinal();
}
}
} else {
+ fprintf(stderr, "MOV arg2, arg1\n");
if (ValeurBit(Extension(instruction), 0) == 0) { /* arg2 = reg */
+ fprintf(stderr, "arg2 = reg (%i)\n", Champ2(instruction));
if (champ(Champ1(instruction), 2) == 0) { /* r/m de arg1 = 0 */
+ fprintf(stderr, "arg1 = reg (%i)\n", Champ3(instruction));
EcrireRegistre(Champ2(instruction), LireRegistre(Champ3(instruction)));
-
} else {
+ fprintf(stderr, "arg1 = addresse\n");
EcrireRegistre(Champ2(instruction),
LD(Adresse(Champ1(instruction), instruction)));
}
@@ -392,10 +406,13 @@ void AfficheReg(void) // affiche reg
void Debogueur(void)
{
int out = 0;
+
+ Uint32 instruction = LireInstruction();
while (!out) {
AfficheReg();
- fprintf(stderr, "%08lX:%08lX > ", LireRegistrePC(), LD(LireRegistrePC()));
+ fprintf(stderr, "Opcode: %02X, extension: %02X, champ1: %02X, champ2: %02X, champ3: %02X\n", Opcode(instruction), Extension(instruction), Champ1(instruction), Champ2(instruction), Champ3(instruction));
+ fprintf(stderr, "%08lX:%08lX > ", LireRegistrePC(), instruction);
switch (fgetc(input)) {
case 'G':
@@ -438,11 +455,8 @@ void Traitement(Uint32 entrypoint)
Debogueur();
clearterm();
}
- fprintf(stderr, "Kapoue1\n");
instruction = LireInstruction();
- fprintf(stderr, "Kapoue2\n");
IncrementeCompteurOrdinal();
- fprintf(stderr, "Kapoue3\n");
DecodeExec(instruction);
}
}
diff --git a/po/ProjetArchi.pot b/po/ProjetArchi.pot
index 15241ab..a0d0ef0 100644
--- a/po/ProjetArchi.pot
+++ b/po/ProjetArchi.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-04-16 23:40+0200\n"
+"POT-Creation-Date: 2001-04-17 00:44+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -123,184 +123,184 @@ msgstr ""
msgid "Something wrong, should never got here..."
msgstr ""
-#: lib/assembler.c:1281
+#: lib/assembler.c:1283
msgid "Unknow predefined string into the meta language"
msgstr ""
-#: lib/assembler.c:1307
+#: lib/assembler.c:1337
msgid "Pattern not matching..."
msgstr ""
-#: lib/assembler.c:1315 lib/assembler.c:1345 lib/assembler.c:1598
-#: lib/assembler.c:1614 lib/assembler.c:1628
+#: lib/assembler.c:1345 lib/assembler.c:1375 lib/assembler.c:1626
+#: lib/assembler.c:1642 lib/assembler.c:1656
msgid "Unknow constant type in the meta language"
msgstr ""
-#: lib/assembler.c:1327 lib/assembler.c:1369 lib/assembler.c:1396
+#: lib/assembler.c:1357 lib/assembler.c:1399 lib/assembler.c:1426
msgid ""
"Error in the metalanguage (pattern should be here if not a constant type)"
msgstr ""
-#: lib/assembler.c:1357 lib/assembler.c:1382 lib/assembler.c:1390
-#: lib/assembler.c:1656
+#: lib/assembler.c:1387 lib/assembler.c:1412 lib/assembler.c:1420
+#: lib/assembler.c:1684
msgid "Logical error in meta language"
msgstr ""
-#: lib/assembler.c:1426
+#: lib/assembler.c:1455
msgid "Unknow field in metalanguage"
msgstr ""
-#: lib/assembler.c:1436
+#: lib/assembler.c:1465
msgid "Can't evaluate directly expression"
msgstr ""
-#: lib/assembler.c:1442
+#: lib/assembler.c:1471
msgid "Value too large for field"
msgstr ""
-#: lib/assembler.c:1494 lib/assembler.c:1680
+#: lib/assembler.c:1522 lib/assembler.c:1708
msgid "Unknow instruction"
msgstr ""
-#: lib/assembler.c:1519
+#: lib/assembler.c:1547
msgid "Unknow constant"
msgstr ""
-#: lib/assembler.c:1528
+#: lib/assembler.c:1556
msgid "Bad constant for an immediate value"
msgstr ""
-#: lib/assembler.c:1545
+#: lib/assembler.c:1573
msgid "Bad constant for a string"
msgstr ""
-#: lib/assembler.c:1562
+#: lib/assembler.c:1590
msgid "Bad array size"
msgstr ""
-#: lib/assembler.c:1572
+#: lib/assembler.c:1600
msgid "You can only have an instruction into a .text segment"
msgstr ""
-#: lib/assembler.c:1575
+#: lib/assembler.c:1603
msgid "Unmatched instruction"
msgstr ""
-#: lib/assembler.c:1704 lib/assembler.c:1749 lib/linker.c:45 lib/linker.c:67
+#: lib/assembler.c:1732 lib/assembler.c:1774 lib/linker.c:45 lib/linker.c:67
msgid "Error writing file"
msgstr ""
-#: lib/assembler.c:1758 lib/assembler.c:2113 lib/linker.c:56
+#: lib/assembler.c:1783 lib/assembler.c:2151 lib/linker.c:56
#: lib/simulator.c:42
msgid "Error reading file"
msgstr ""
-#: lib/assembler.c:1775
+#: lib/assembler.c:1800
msgid "Creating temporary files"
msgstr ""
-#: lib/assembler.c:1778
+#: lib/assembler.c:1803
msgid "Error writing file __text__"
msgstr ""
-#: lib/assembler.c:1782
+#: lib/assembler.c:1807
msgid "Error writing file __symbols__"
msgstr ""
-#: lib/assembler.c:1786
+#: lib/assembler.c:1811
msgid "Dumping memory into object file"
msgstr ""
#. Segment de texte
-#: lib/assembler.c:1791
+#: lib/assembler.c:1816
msgid "Dumping text segment"
msgstr ""
-#: lib/assembler.c:1793 lib/assembler.c:1912 lib/assembler.c:1990
+#: lib/assembler.c:1818 lib/assembler.c:1948 lib/assembler.c:2028
#, c-format
msgid "Processing word number %i coming from line %i of the file %s."
msgstr ""
-#: lib/assembler.c:1856 lib/assembler.c:1859 lib/assembler.c:1935
-#: lib/assembler.c:1938
+#: lib/assembler.c:1891 lib/assembler.c:1894 lib/assembler.c:1972
+#: lib/assembler.c:1975
msgid "Can't evaluate expression for a direct value"
msgstr ""
-#: lib/assembler.c:1863 lib/assembler.c:1942
+#: lib/assembler.c:1898 lib/assembler.c:1979
msgid "Can only use the diff() function onto labels"
msgstr ""
-#: lib/assembler.c:1868 lib/assembler.c:1872 lib/assembler.c:1947
-#: lib/assembler.c:1951
+#: lib/assembler.c:1903 lib/assembler.c:1907 lib/assembler.c:1984
+#: lib/assembler.c:1988
msgid "Can only evaluate a diff on local symbols"
msgstr ""
-#: lib/assembler.c:1876 lib/assembler.c:1955
+#: lib/assembler.c:1911 lib/assembler.c:1992
msgid "Can only evaluate a diff on symbols from the same segment"
msgstr ""
-#: lib/assembler.c:1882 lib/assembler.c:1961
+#: lib/assembler.c:1917 lib/assembler.c:1998
msgid "Can't evaluate expression"
msgstr ""
#. Segment de data
-#: lib/assembler.c:1910
+#: lib/assembler.c:1946
msgid "Dumping data segment"
msgstr ""
#. Segment bss
-#: lib/assembler.c:1988
+#: lib/assembler.c:2026
msgid "Dumping bss segment"
msgstr ""
-#: lib/assembler.c:2034
+#: lib/assembler.c:2073
#, c-format
msgid ""
"Statistics: %i words of text, %i words of data, and %i words reserved.\n"
"%i symbols generated with %i internal and %i external.\n"
msgstr ""
-#: lib/assembler.c:2066
+#: lib/assembler.c:2102
msgid "Loading file"
msgstr ""
-#: lib/assembler.c:2067 lib/meta.c:516
+#: lib/assembler.c:2103 lib/meta.c:516
#, c-format
msgid "Opening file '%s'"
msgstr ""
-#: lib/assembler.c:2075 lib/meta.c:524
+#: lib/assembler.c:2112 lib/meta.c:524
msgid "Reading file"
msgstr ""
-#: lib/assembler.c:2077 lib/meta.c:526
+#: lib/assembler.c:2114 lib/meta.c:526
#, c-format
msgid "Reading line %i"
msgstr ""
-#: lib/assembler.c:2086
+#: lib/assembler.c:2123
#, c-format
msgid "Summering line %s"
msgstr ""
-#: lib/assembler.c:2105
+#: lib/assembler.c:2142
#, c-format
msgid "Assembling file %s...\n"
msgstr ""
-#: lib/assembler.c:2106
+#: lib/assembler.c:2143
msgid "Opening output file"
msgstr ""
-#: lib/assembler.c:2109
+#: lib/assembler.c:2146
msgid "Error writing output file"
msgstr ""
-#: lib/assembler.c:2115 lib/linker.c:277
+#: lib/assembler.c:2153 lib/linker.c:279
msgid "Writing output file"
msgstr ""
-#: lib/assembler.c:2116
+#: lib/assembler.c:2154
#, c-format
msgid "Generating output file %s...\n"
msgstr ""
@@ -483,41 +483,41 @@ msgstr ""
msgid "Reading text and data segments"
msgstr ""
-#: lib/linker.c:218
+#: lib/linker.c:219
#, c-format
msgid "Symbol %s not found"
msgstr ""
-#: lib/linker.c:237 lib/linker.c:257 lib/linker.c:263
+#: lib/linker.c:238 lib/linker.c:259 lib/linker.c:265
msgid "Internal error"
msgstr ""
-#: lib/linker.c:281
+#: lib/linker.c:283
msgid "No startpoint defined."
msgstr ""
-#: lib/linker.c:284
+#: lib/linker.c:286
msgid "Writing headers"
msgstr ""
-#: lib/linker.c:293
+#: lib/linker.c:295
msgid "Writing relocating informations"
msgstr ""
-#: lib/linker.c:296
+#: lib/linker.c:298
msgid "Writing text segments"
msgstr ""
-#: lib/linker.c:301
+#: lib/linker.c:303
msgid "Writing data segments"
msgstr ""
-#: lib/linker.c:308
+#: lib/linker.c:310
#, c-format
msgid "Statistics: %i words of text, %i words of data and reserving %i words\n"
msgstr ""
-#: lib/linker.c:310
+#: lib/linker.c:312
#, c-format
msgid "Output file size: %i words containing %i relocating offsets.\n"
msgstr ""
@@ -531,19 +531,19 @@ msgid "Adresse: Unmatched Addr Field"
msgstr ""
#. arg2 = imm32
-#: lib/simulator.c:249
+#: lib/simulator.c:263
msgid "MOV: Memory to Memory Forbidden On This Type Of Processor"
msgstr ""
-#: lib/simulator.c:369
+#: lib/simulator.c:383
msgid "DecodeExec: Invalid Opcode"
msgstr ""
-#: lib/simulator.c:418
+#: lib/simulator.c:435
msgid "Shutdown requested"
msgstr ""
-#: lib/simulator.c:420
+#: lib/simulator.c:437
msgid ""
"Help:\n"
"G: go\n"
@@ -553,16 +553,16 @@ msgid ""
msgstr ""
#. verification de la signature
-#: lib/simulator.c:460
+#: lib/simulator.c:474
msgid "Invalid Signature"
msgstr ""
-#: lib/simulator.c:463
+#: lib/simulator.c:477
#, c-format
msgid "Loading file %s"
msgstr ""
-#: lib/simulator.c:498
+#: lib/simulator.c:512
#, c-format
msgid "Executing file %s"
msgstr ""