From aedd0138b3e6e012d4fc513a0582705b0fb726f8 Mon Sep 17 00:00:00 2001 From: Sergey Date: Sun, 21 Jun 2015 17:56:15 -0700 Subject: [PATCH] Fixed issue #46: broken instruction reordering in assembler. --- src/cmd/as/as.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/cmd/as/as.c b/src/cmd/as/as.c index 61a3e7e..6f30100 100644 --- a/src/cmd/as/as.c +++ b/src/cmd/as/as.c @@ -1225,8 +1225,8 @@ unsigned getexpr (s) void reorder_flush () { if (reorder_full) { - fputword (reorder_word, sfile[segm]); - fputrel (&reorder_rel, rfile[segm]); + fputword (reorder_word, sfile[STEXT]); + fputrel (&reorder_rel, rfile[STEXT]); reorder_full = 0; } } @@ -1945,7 +1945,7 @@ void pass1 () clex = getlex (&cval); switch (clex) { case LEOF: - reorder_flush(); +done: reorder_flush(); segm = STEXT; align (2); segm = SDATA; @@ -2340,11 +2340,10 @@ void pass1 () uerror ("bad syntax"); } clex = getlex (&cval); - if (clex != LEOL) { - if (clex == LEOF) - return; + if (clex == LEOF) + goto done; + if (clex != LEOL) uerror ("bad instruction arguments"); - } } }