/* Chrysalide - Outil d'analyse de fichiers binaires * spec.h - prototypes pour la représentation complète d'un encodage * * Copyright (C) 2014-2017 Cyrille Bagard * * This file is part of Chrysalide. * * Chrysalide is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Chrysalide is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #ifndef _TOOLS_D2C_SPEC_H #define _TOOLS_D2C_SPEC_H #include #include "pproc.h" #include "bits/manager.h" #include "conv/manager.h" #include "format/manager.h" #include "hooks/manager.h" #include "rules/manager.h" #include "syntax/manager.h" /* Mémorisation d'un encodage complet */ typedef struct _encoding_spec encoding_spec; /* Crée un nouveau suivi de l'encodage d'une instruction. */ encoding_spec *create_encoding_spec(void); /* Supprime de la mémoire un suivi d'encodage d'une instruction. */ void delete_encoding_spec(encoding_spec *); /* Définit le nom de code d'une spécification d'encodage. */ void define_encoding_spec_code_name(encoding_spec *, char *, unsigned int); /* Indique si une spécification se range dans une catégorie. */ bool has_encoding_spec_prefix(const encoding_spec *, const char *); /* Fournit le gestionnaire des définitions d'opérandes. */ operands_format *get_format_in_encoding_spec(const encoding_spec *); /* Fournit le gestionnaire des bits d'un encodage d'instruction. */ coding_bits *get_bits_in_encoding_spec(const encoding_spec *); /* Fournit l'indicateur des écritures correctes d'assembleur. */ asm_syntax *get_syntax_in_encoding_spec(const encoding_spec *); /* Fournit la liste des fonctions de conversion. */ conv_list *get_conversions_in_encoding_spec(const encoding_spec *); /* Fournit la liste des fonctions à lier à une instruction. */ instr_hooks *get_hooks_in_encoding_spec(const encoding_spec *); /* Fournit un ensemble de règles supplémentaires éventuel. */ decoding_rules *get_rules_in_encoding_spec(const encoding_spec *); /* Traduit en code une sous-fonction de désassemblage. */ bool write_encoding_spec_disass(const encoding_spec *, int, const char *, const char *, const char *, const char *, unsigned int, const pre_processor *); /* Traduit en code une sous-fonction de désassemblage. */ bool write_encoding_spec_format_disass(const encoding_spec *, int, const char *, const char *, const char *, char, const char *, const pre_processor *, const char *); #endif /* _TOOLS_D2C_SPEC_H */