-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaddress.h
66 lines (56 loc) · 1.3 KB
/
address.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifndef __ADDRESS_H_
#define __ADDRESS_H_
typedef unsigned addr_t;
#define MAX_NO_REGISTERS 34
#define HI 32
#define LO 33
#define STACK_START 0x7fffc000
#define GLOBAL_START 0x10000000
#define RETURN_ADDRESS 0
#define SIZE_OF_BYTE 1
#define SIZE_OF_WORD 4
#define SIZE_OF_HALF_WORD (SIZE_OF_WORD)/2
#define SIZE_OF_BLOCK B
#define INFINITY 0x7fffc000
#define WIDENING_POINT 5
#define GET_MEM(x) ((x) / SIZE_OF_BLOCK)
#define REG_START 16
#define REG_END 23
#define REG_STACK 29
#define REG_GLOBAL 28
/* cfg node list */
struct slist
{
void* dst;
struct slist* next;
};
typedef struct slist* slist_p;
typedef struct slist slist_s;
/* A strided interval domain */
struct ric {
addr_t lower_bound;
addr_t upper_bound;
addr_t stride;
};
typedef struct ric ric_s;
typedef struct ric* ric_p;
/* Abstract memory locations */
struct abs_mem {
int valid;
int inst_addr;
ric_p addr;
ric_p value;
struct abs_mem* next;
};
typedef struct abs_mem abs_mem_s;
typedef struct abs_mem* abs_mem_p;
void analyze_address(void);
int gcd(int a, int b);
#ifndef DE_INST_T_DEFINED
#define DE_INST_T_DEFINED
struct de_inst_t;
typedef struct de_inst_t de_inst_t;
#endif
ric_p getAddrBaseOffset(de_inst_t* inst, int base, int offset, int opt);
ric_p getAddrBaseIndex(de_inst_t* inst, int base, int index, int opt);
#endif