diff options
-rw-r--r-- | cgthumb2was.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/cgthumb2was.c b/cgthumb2was.c index d6f74c1..2e9a333 100644 --- a/cgthumb2was.c +++ b/cgthumb2was.c @@ -38,8 +38,13 @@ static void w_as_opcode (char *opcode) fprintf (assembly_file,"\t%s\t",opcode); } -static void w_as_opcode_condition (char *opcode,char *condition) +static void w_as_opcode_condition (char *opcode,char *condition,int with_it) { + if (with_it) + { + fprintf (assembly_file,"\tit\t%s",condition); + w_as_newline(); + } fprintf (assembly_file,"\t%s%s\t",opcode,condition); } @@ -1630,12 +1635,12 @@ static void w_as_set_condition_instruction (struct instruction *instruction,char w_as_newline_after_instruction(); } - w_as_opcode_condition (opcode,condition); + w_as_opcode_condition (opcode,condition,0); w_as_register (r); fprintf (assembly_file,",#1"); w_as_newline_after_instruction(); - w_as_opcode_condition (opcode,invert_condition(condition)); + w_as_opcode_condition (opcode,invert_condition(condition),0); w_as_register (r); fprintf (assembly_file,",#0"); w_as_newline_after_instruction(); @@ -1722,7 +1727,7 @@ static void w_as_div_instruction (struct instruction *instruction) w_as_immediate_newline (0); if (log2i<=8){ - w_as_opcode ("addlt"); + w_as_opcode_condition ("add","lt",1); w_as_register_comma (d_reg); w_as_register_comma (d_reg); w_as_immediate_newline (abs_i-1); @@ -1732,7 +1737,7 @@ static void w_as_div_instruction (struct instruction *instruction) w_as_register_comma (d_reg); w_as_immediate_newline (abs_i); - w_as_opcode ("sublt"); + w_as_opcode_condition ("sub","lt",1); w_as_register_comma (d_reg); w_as_scratch_register_comma(); w_as_immediate_newline (1); |