diff options
Diffstat (limited to 'src/analysis/block.c')
-rw-r--r-- | src/analysis/block.c | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/analysis/block.c b/src/analysis/block.c new file mode 100644 index 0000000..58b1fee --- /dev/null +++ b/src/analysis/block.c @@ -0,0 +1,155 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * block.c - encadrement des instructions par blocs + * + * Copyright (C) 2012 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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 <http://www.gnu.org/licenses/>. + */ + + +#include "block.h" + + +#include "block-int.h" + + + +/* Initialise la classe des blocs d'instructions. */ +static void g_instr_block_class_init(GInstrBlockClass *); + +/* Initialise un bloc d'instructions. */ +static void g_instr_block_init(GInstrBlock *); + +/* Supprime toutes les références externes. */ +static void g_instr_block_dispose(GInstrBlock *); + +/* Procède à la libération totale de la mémoire. */ +static void g_instr_block_finalize(GInstrBlock *); + + + + + + + + +/****************************************************************************** +* * +* Paramètres : a = premier opérande à consulter. * +* b = second opérande à consulter. * +* * +* Description : Compare un accès registre avec un autre. * +* * +* Retour : Bilan de la comparaison. * +* * +* Remarques : - * +* * +******************************************************************************/ + +int compare_reg_accesses(const reg_access *a, const reg_access *b) +{ + return g_arch_register_compare(a->reg, b->reg); + +} + + + + + + +/* Indique le type défini pour un bloc d'instructions. */ +G_DEFINE_TYPE(GInstrBlock, g_instr_block, G_TYPE_OBJECT); + + +/****************************************************************************** +* * +* Paramètres : class = classe à initialiser. * +* * +* Description : Initialise la classe des blocs d'instructions. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_instr_block_class_init(GInstrBlockClass *class) +{ + GObjectClass *object; /* Autre version de la classe */ + + object = G_OBJECT_CLASS(class); + + object->dispose = (GObjectFinalizeFunc/* ! */)g_instr_block_dispose; + object->finalize = (GObjectFinalizeFunc)g_instr_block_finalize; + +} + + +/****************************************************************************** +* * +* Paramètres : block = instance à initialiser. * +* * +* Description : Initialise un bloc d'instructions. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_instr_block_init(GInstrBlock *block) +{ + +} + + +/****************************************************************************** +* * +* Paramètres : block = instance d'objet GLib à traiter. * +* * +* Description : Supprime toutes les références externes. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_instr_block_dispose(GInstrBlock *block) +{ + G_OBJECT_CLASS(g_instr_block_parent_class)->dispose(G_OBJECT(block)); + +} + + +/****************************************************************************** +* * +* Paramètres : block = instance d'objet GLib à traiter. * +* * +* Description : Procède à la libération totale de la mémoire. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_instr_block_finalize(GInstrBlock *block) +{ + G_OBJECT_CLASS(g_instr_block_parent_class)->finalize(G_OBJECT(block)); + +} |