summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mb86235/mb86235fe.h
blob: ef8bff02df8c3b0534dfb68cdcdd5857d6b4ee86 (plain) (blame)
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
// license:BSD-3-Clause
// copyright-holders:Ville Linde

/******************************************************************************

    Front-end for MB86235 recompiler

******************************************************************************/

#pragma once

#include "mb86235.h"
#include "cpu/drcfe.h"

#ifndef __MB86235FE_H__
#define __MB86235FE_H__

class mb86235_frontend : public drc_frontend
{
public:
	mb86235_frontend(mb86235_device *core, uint32_t window_start, uint32_t window_end, uint32_t max_sequence);

protected:
	// required overrides
	virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override;

private:

	mb86235_device *m_core;

	void describe_alu(opcode_desc &desc, uint32_t aluop);
	void describe_mul(opcode_desc &desc, uint32_t mulop);
	void describe_xfer1(opcode_desc &desc);
	void describe_double_xfer1(opcode_desc &desc);
	void describe_xfer2(opcode_desc &desc);
	void describe_double_xfer2(opcode_desc &desc);
	void describe_xfer3(opcode_desc &desc);
	void describe_control(opcode_desc &desc);
	void describe_alu_input(opcode_desc &desc, int reg);
	void describe_mul_input(opcode_desc &desc, int reg);
	void describe_alumul_output(opcode_desc &desc, int reg);
	void describe_reg_read(opcode_desc &desc, int reg);
	void describe_reg_write(opcode_desc &desc, int reg);
	void describe_ea(opcode_desc &desc, int md, int arx, int ary, int disp);
};

#endif /* __MB86235FE_H__ */