File:  [Qemu by Fabrice Bellard] / qemu / tci-dis.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:17:31 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, HEAD
qemu 1.0.1

    1: /*
    2:  * Tiny Code Interpreter for QEMU - disassembler
    3:  *
    4:  * Copyright (c) 2011 Stefan Weil
    5:  *
    6:  * This program is free software: you can redistribute it and/or modify
    7:  * it under the terms of the GNU General Public License as published by
    8:  * the Free Software Foundation, either version 2 of the License, or
    9:  * (at your option) any later version.
   10:  *
   11:  * This program is distributed in the hope that it will be useful,
   12:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   13:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14:  * GNU General Public License for more details.
   15:  *
   16:  * You should have received a copy of the GNU General Public License
   17:  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   18:  */
   19: 
   20: #include "dis-asm.h"
   21: #include "tcg/tcg.h"
   22: 
   23: /* Disassemble TCI bytecode. */
   24: int print_insn_tci(bfd_vma addr, disassemble_info *info)
   25: {
   26:     int length;
   27:     uint8_t byte;
   28:     int status;
   29:     TCGOpcode op;
   30: 
   31:     status = info->read_memory_func(addr, &byte, 1, info);
   32:     if (status != 0) {
   33:         info->memory_error_func(status, addr, info);
   34:         return -1;
   35:     }
   36:     op = byte;
   37: 
   38:     addr++;
   39:     status = info->read_memory_func(addr, &byte, 1, info);
   40:     if (status != 0) {
   41:         info->memory_error_func(status, addr, info);
   42:         return -1;
   43:     }
   44:     length = byte;
   45: 
   46:     if (op >= tcg_op_defs_max) {
   47:         info->fprintf_func(info->stream, "illegal opcode %d", op);
   48:     } else {
   49:         const TCGOpDef *def = &tcg_op_defs[op];
   50:         int nb_oargs = def->nb_oargs;
   51:         int nb_iargs = def->nb_iargs;
   52:         int nb_cargs = def->nb_cargs;
   53:         /* TODO: Improve disassembler output. */
   54:         info->fprintf_func(info->stream, "%s\to=%d i=%d c=%d",
   55:                            def->name, nb_oargs, nb_iargs, nb_cargs);
   56:     }
   57: 
   58:     return length;
   59: }

unix.superglobalmegacorp.com