-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTYPE.hpp
48 lines (39 loc) · 1009 Bytes
/
TYPE.hpp
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
#pragma once
typedef struct {
unsigned int b : 2;
} bit2;
typedef struct {
// bit filed http://wisdom.sakura.ne.jp/programming/c/c38.html , 2021/12/14
unsigned int b : 4;
} bit4;
typedef struct {
unsigned int b : 8;
} bit8;
typedef bit4 WORD;
typedef bit4 DATA;
typedef bit4 ADDR;
typedef bit4 OPRATE;
typedef bit4 OPRAND;
typedef bit2 PORT;
#define GET_WORD(v) v.b
#define SET_WORD(v, x) v.b = x
#define GET_DATA(v) v.b
#define SET_DATA(v, x) v.b = x
#define GET_OPRATE(v) GET_WORD(v)
#define SET_OPRATE(v, b) SET_WORD(v, b)
#define GET_OPRAND(v) GET_WORD(v)
#define SET_OPRAND(v, b) SET_WORD(v, b)
#define PTR_GET_WORD(v) v->b
#define PTR_SET_WORD(v, x) v->b = x
#define PTR_GET_DATA(v) v->b
#define PTR_SET_DATA(v, x) v->b = x
#define COPY_WORD(d, s) d.b = s.b
#define COPY_DATA(d, s) COPY_WORD(d, s)
#define INC_WORD(d) d.b++
#define INC_DATA(d) INC_WORD(d)
#define DEC_DATA(d) d.b--
#define WORD_SIZE 16
#define DATA_SIZE 16
#define OPRATE_SIZE 16
#define OPRAND_SIZE 16
#define PORT_SIZE 4