X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=assembler%2Fmain.c;h=a62a15eca52028a6dc2e0efcfde6ffc659ae9fe2;hb=HEAD;hp=8abe03c8fbbe51ac3371b0c9990ce313f6aa6dd3;hpb=bcf9f0184d616b059b84643bb4296f713a2070e7;p=b43-tools.git diff --git a/assembler/main.c b/assembler/main.c index 8abe03c..a62a15e 100644 --- a/assembler/main.c +++ b/assembler/main.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 Michael Buesch + * Copyright (C) 2006-2010 Michael Buesch * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 @@ -429,7 +429,7 @@ static struct code_output * do_assemble_insn(struct assembler_context *ctx, struct instruction *insn, unsigned int opcode) { - int i; + unsigned int i; struct operlist *ol; int nr_oper = 0; uint64_t code = 0; @@ -737,6 +737,9 @@ static void assemble_instruction(struct assembler_context *ctx, unsigned int opcode; switch (insn->op) { + case OP_MUL: + do_assemble_insn(ctx, insn, 0x101); + break; case OP_ADD: do_assemble_insn(ctx, insn, 0x1C0); break; @@ -855,6 +858,22 @@ static void assemble_instruction(struct assembler_context *ctx, out = do_assemble_insn(ctx, insn, 0x0DC | 0x1); out->is_jump_insn = 1; break; + case OP_JDN: + out = do_assemble_insn(ctx, insn, 0x0D6); + out->is_jump_insn = 1; + break; + case OP_JDPZ: + out = do_assemble_insn(ctx, insn, 0x0D6 | 0x1); + out->is_jump_insn = 1; + break; + case OP_JDP: + out = do_assemble_insn(ctx, insn, 0x0D8); + out->is_jump_insn = 1; + break; + case OP_JDNZ: + out = do_assemble_insn(ctx, insn, 0x0D8 | 0x1); + out->is_jump_insn = 1; + break; case OP_JZX: opcode = merge_ext_into_opcode(ctx, 0x400, insn); out = do_assemble_insn(ctx, insn, opcode); @@ -1017,7 +1036,7 @@ static void resolve_labels(struct assembler_context *ctx) { struct code_output *c; int addr; - int i; + unsigned int i; unsigned int current_address; /* Calculate the absolute addresses for each instruction. */ @@ -1241,7 +1260,7 @@ static void initialize(void) { INIT_LIST_HEAD(&infile.sl); INIT_LIST_HEAD(&infile.ivals); -#ifdef YYDEBUG +#if YYDEBUG if (IS_INSANE_DEBUG) yydebug = 1; else