- DCPU16_WORD reg_work_[2]; /* (private) work registers for holding literal values while decoding instructions */
- struct dcpu16_acct_cb *cb_table_; /* list of callbacks to invoke under certain conditions */
- size_t cb_table_entries_; /* callback list maintenance */
- size_t cb_table_allocated_; /* callback list maintenance */
+};
+
+/* these are used for accounting/watchpointing/modules/&c */
+typedef unsigned int dcpu16_acct_event;
+typedef void (dcpu16_ev_cb_t)(struct dcpu16 *, dcpu16_acct_event, DCPU16_WORD, void *);
+#define DCPU16_ACCT_EV_READ (1<<1)
+#define DCPU16_ACCT_EV_WRITE (1<<2)
+#define DCPU16_ACCT_EV_NOP (1<<3)
+#define DCPU16_ACCT_EV_RESET (1<<4)
+struct dcpu16_acct_cb {
+ dcpu16_ev_cb_t *fn;
+ void *data;
+ dcpu16_acct_event mask;