Coverage Report

Created: 2024-08-21 06:24

/src/capstonev5/arch/ARM/ARMModule.c
Line
Count
Source (jump to first uncovered line)
1
/* Capstone Disassembly Engine */
2
/* By Dang Hoang Vu <danghvu@gmail.com> 2013 */
3
4
#ifdef CAPSTONE_HAS_ARM
5
6
#include "../../cs_priv.h"
7
#include "../../MCRegisterInfo.h"
8
#include "ARMDisassembler.h"
9
#include "ARMInstPrinter.h"
10
#include "ARMMapping.h"
11
#include "ARMModule.h"
12
13
cs_err ARM_global_init(cs_struct *ud)
14
5.75k
{
15
5.75k
  MCRegisterInfo *mri;
16
5.75k
  mri = cs_mem_malloc(sizeof(*mri));
17
18
5.75k
  ARM_init(mri);
19
5.75k
  ARM_getRegName(ud, 0);  // use default get_regname
20
21
5.75k
  ud->printer = ARM_printInst;
22
5.75k
  ud->printer_info = mri;
23
5.75k
  ud->reg_name = ARM_reg_name;
24
5.75k
  ud->insn_id = ARM_get_insn_id;
25
5.75k
  ud->insn_name = ARM_insn_name;
26
5.75k
  ud->group_name = ARM_group_name;
27
5.75k
  ud->post_printer = ARM_post_printer;
28
5.75k
#ifndef CAPSTONE_DIET
29
5.75k
  ud->reg_access = ARM_reg_access;
30
5.75k
#endif
31
32
5.75k
  if (ud->mode & CS_MODE_THUMB)
33
3.39k
    ud->disasm = Thumb_getInstruction;
34
2.35k
  else
35
2.35k
    ud->disasm = ARM_getInstruction;
36
37
5.75k
  return CS_ERR_OK;
38
5.75k
}
39
40
cs_err ARM_option(cs_struct *handle, cs_opt_type type, size_t value)
41
627
{
42
627
  switch(type) {
43
0
    case CS_OPT_MODE:
44
0
      if (value & CS_MODE_THUMB)
45
0
        handle->disasm = Thumb_getInstruction;
46
0
      else
47
0
        handle->disasm = ARM_getInstruction;
48
49
0
      handle->mode = (cs_mode)value;
50
51
0
      break;
52
627
    case CS_OPT_SYNTAX:
53
627
      ARM_getRegName(handle, (int)value);
54
627
      handle->syntax = (int)value;
55
627
      break;
56
0
    default:
57
0
      break;
58
627
  }
59
60
627
  return CS_ERR_OK;
61
627
}
62
63
#endif