/*
- * Copyright (C) 2006-2010 Michael Buesch <mb@bu3sch.de>
+ * Copyright (C) 2006-2010 Michael Buesch <m@bues.ch>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
struct instruction *insn,
unsigned int opcode)
{
- int i;
+ unsigned int i;
struct operlist *ol;
int nr_oper = 0;
uint64_t code = 0;
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;
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);
{
struct code_output *c;
int addr;
- int i;
+ unsigned int i;
unsigned int current_address;
/* Calculate the absolute addresses for each instruction. */
exit(1);
}
if (IS_VERBOSE_DEBUG)
- fprintf(stderr, "\nCode:\n");
+ printf("\nCode:\n");
list_for_each_entry(c, &ctx->output, list) {
switch (c->type) {
}
}
- switch (output_format) {
+ switch (cmdargs.outformat) {
case FMT_RAW_LE32:
case FMT_RAW_BE32:
/* Nothing */
switch (c->type) {
case OUT_INSN:
if (IS_VERBOSE_DEBUG) {
- fprintf(stderr, "%03X %03X,%03X,%03X\n",
+ printf("%03X %04X,%04X,%04X\n",
c->opcode,
c->operands[0].u.operand,
c->operands[1].u.operand,
ctx->arch);
}
- switch (output_format) {
+ switch (cmdargs.outformat) {
case FMT_B43:
case FMT_RAW_BE32:
code = ((code & (uint64_t)0xFFFFFFFF00000000ULL) >> 32) |
}
}
- if (arg_print_sizes) {
+ if (cmdargs.print_sizes) {
printf("%s: text = %u instructions (%u bytes)\n",
fn, insn_count,
(unsigned int)(insn_count * sizeof(uint64_t)));
{
INIT_LIST_HEAD(&infile.sl);
INIT_LIST_HEAD(&infile.ivals);
-#ifdef YYDEBUG
+#if YYDEBUG
if (IS_INSANE_DEBUG)
yydebug = 1;
else