Mercurial > hg-old > index.cgi
diff src/insn_gen.c @ 65:31d8e85706e7
Implemented setdp and corrected handling of direct page detection in insn_gen_aux()
author | lost |
---|---|
date | Mon, 05 Jan 2009 01:40:01 +0000 |
parents | da1337724ecd |
children | a338d496350e |
line wrap: on
line diff
--- a/src/insn_gen.c Mon Jan 05 01:27:08 2009 +0000 +++ b/src/insn_gen.c Mon Jan 05 01:40:01 2009 +0000 @@ -38,7 +38,8 @@ lwasm_expr_stack_t *s; int f8 = 0; int f16 = 0; - + int isdp = 0; + optr2 = *optr; while (*optr2 && !isspace(*optr2) && *optr2 != ',') optr2++ /* do nothing */ ; @@ -67,7 +68,7 @@ register_error(as, l, 1, "Bad expression"); return; } - if (!lwasm_expr_is_constant(s)) + if (!lwasm_expr_is_constant(s) && as -> passnum == 1) { f16 = 1; l -> fsize = 2; @@ -75,8 +76,11 @@ } v1 = lwasm_expr_get_value(s); lwasm_expr_stack_free(s); + + if (((v1 >> 8) & 0xff) == (as -> dpval & 0xff)) + isdp = 1; - if (f8 || (!f16 && v1 >= -128 && v1 <= 255)) + if (f8 || (!f16 && isdp)) { v1 = v1 & 0xffff; tv = v1 - ((as -> dpval) << 8);