|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: #pragma once
8:
9: class m680x0ACC : public m680x0CCR
10: {
11: public:
12: // res を元に NZVC フラグをセットする。
13: // res の上位ビットは無視される。
14: inline void move_8(uint32 res) {
15: Z = res << 24;
16: N = Z;
17: C = 0;
18: V = 0;
19: }
20:
21: // res を元に NZVC フラグをセットする。
22: // res の上位ビットは無視される。
23: inline void move_16(uint32 res) {
24: Z = res << 16;
25: N = Z;
26: C = 0;
27: V = 0;
28: }
29:
30: // res を元に NZVC フラグをセットする。
31: inline void move_32(uint32 res) {
32: Z = res;
33: N = res;
34: C = 0;
35: V = 0;
36: }
37:
38: uint32 add_8(uint32, uint32);
39: uint32 add_16(uint32, uint32);
40: uint32 add_32(uint32, uint32);
41: uint32 addx_8(uint32, uint32);
42: uint32 addx_16(uint32, uint32);
43: uint32 addx_32(uint32, uint32);
44: uint32 cmp_8(uint32, uint32);
45: uint32 cmp_16(uint32, uint32);
46: uint32 cmp_32(uint32, uint32);
47: uint32 sub_8(uint32, uint32);
48: uint32 sub_16(uint32, uint32);
49: uint32 sub_32(uint32, uint32);
50: uint32 subx_8(uint32, uint32);
51: uint32 subx_16(uint32, uint32);
52: uint32 subx_32(uint32, uint32);
53: uint32 mulu_16(uint32, uint32);
54: uint32 muls_16(uint32, uint32);
55: uint32 mulu_32(uint32, uint32);
56: uint32 muls_32(uint32, uint32);
57: uint64 mulu_64(uint32, uint32);
58: uint64 muls_64(uint32, uint32);
59: void btst(uint32, int);
60: uint32 bchg(uint32, int);
61: uint32 bclr(uint32, int);
62: uint32 bset(uint32, int);
63: uint32 asl_8(uint32, int);
64: uint32 asl_16(uint32, int);
65: uint32 asl_32(uint32, int);
66: uint32 lsl_8(uint32, int);
67: uint32 lsl_16(uint32, int);
68: uint32 lsl_32(uint32, int);
69: uint32 roxl_8(uint32, int);
70: uint32 roxl_16(uint32, int);
71: uint32 roxl_32(uint32, int);
72: uint32 rol_8(uint32, int);
73: uint32 rol_16(uint32, int);
74: uint32 rol_32(uint32, int);
75: uint32 asr_8(uint32, int);
76: uint32 asr_16(uint32, int);
77: uint32 asr_32(uint32, int);
78: uint32 lsr_8(uint32, int);
79: uint32 lsr_16(uint32, int);
80: uint32 lsr_32(uint32, int);
81: uint32 roxr_8(uint32, int);
82: uint32 roxr_16(uint32, int);
83: uint32 roxr_32(uint32, int);
84: uint32 ror_8(uint32, int);
85: uint32 ror_16(uint32, int);
86: uint32 ror_32(uint32, int);
87:
88: void chk2cmp2_32(uint32, uint32, uint32);
89: uint32 abcd_8(uint32 src ,uint32 dst);
90: uint32 sbcd_8(uint32 src, uint32 dst);
91:
92: private:
93: static inline uint32 vflag_add_8(uint32 src, uint32 dst, uint32 res);
94: static inline uint32 vflag_add_16(uint32 src, uint32 dst, uint32 res);
95: static inline uint32 vflag_add_32(uint32 src, uint32 dst, uint32 res);
96: static inline uint32 vflag_sub_8(uint32 src, uint32 dst, uint32 res);
97: static inline uint32 vflag_sub_16(uint32 src, uint32 dst, uint32 res);
98: static inline uint32 vflag_sub_32(uint32 src, uint32 dst, uint32 res);
99: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.