diff options
Diffstat (limited to 'src/arch/archbase.c')
-rw-r--r-- | src/arch/archbase.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/arch/archbase.c b/src/arch/archbase.c new file mode 100644 index 0000000..61e2396 --- /dev/null +++ b/src/arch/archbase.c @@ -0,0 +1,79 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * archbase.c - définitions de base pour les architectures + * + * Copyright (C) 2009 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 "archbase.h" + + +#include <stdio.h> + + + +/****************************************************************************** +* * +* Paramètres : addr = adresse virtuelle ou physique à traiter. * +* msize = taille de cette adresse. * +* buffer = chaîne de caractères à constituer. [OUT] * +* * +* Description : Transforme une adresse en chaîne de caractères. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +size_t vmpa_to_string(vmpa_t addr, MemoryDataSize msize, char buffer[VMPA_MAX_SIZE]) +{ + size_t result; /* Taille en place à renvoyer */ + + switch (msize) + { + case MDS_8_BITS: + snprintf(buffer, VMPA_MAX_SIZE,"0x%02llx", addr); + result = 4; + break; + + case MDS_16_BITS: + snprintf(buffer, VMPA_MAX_SIZE, "0x%04llx", addr); + result = 6; + break; + + case MDS_32_BITS: + snprintf(buffer, VMPA_MAX_SIZE, "0x%08llx", addr); + result = 10; + break; + + case MDS_64_BITS: + snprintf(buffer, VMPA_MAX_SIZE, "0x%016llx", addr); + result = 18; + break; + + default: + result = 0; + break; + + } + + return result; + +} |