mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-12-24 02:33:19 +00:00
Refactoring assembly : move x86 registers to separate file
This commit is contained in:
parent
6d63592ada
commit
24ed2ea6ef
16
src/cpu.h
16
src/cpu.h
@ -17,7 +17,7 @@
|
|||||||
#ifndef __CPU_H_
|
#ifndef __CPU_H_
|
||||||
#define __CPU_H_
|
#define __CPU_H_
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
#if !defined(__ASSEMBLER__)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -116,18 +116,4 @@ extern int16_t cpu65_cycles_to_execute;
|
|||||||
#define V_Flag_6502 0x40 // o[V]erflow
|
#define V_Flag_6502 0x40 // o[V]erflow
|
||||||
#define N_Flag_6502 0x80 // [N]egative
|
#define N_Flag_6502 0x80 // [N]egative
|
||||||
|
|
||||||
#define X_Reg %bl /* 6502 X register in %bl */
|
|
||||||
#define Y_Reg %bh /* 6502 Y register in %bh */
|
|
||||||
#define XY_Regs_32 %ebx /* 6502 X&Y flags */
|
|
||||||
#define A_Reg %cl /* 6502 A register in %cl */
|
|
||||||
#define F_Reg %ch /* 6502 flags in %ch */
|
|
||||||
#define FF_Reg %ecx /* 6502 F&A flags */
|
|
||||||
#define SP_Reg_L %dl /* 6502 Stack pointer low */
|
|
||||||
#define SP_Reg_H %dh /* 6502 Stack pointer high */
|
|
||||||
#define SP_Reg %edx /* 6502 Stack pointer */
|
|
||||||
#define PC_Reg %si /* 6502 Program Counter */
|
|
||||||
#define PC_Reg_E %esi /* 6502 Program Counter */
|
|
||||||
#define EffectiveAddr %di /* Effective address */
|
|
||||||
#define EffectiveAddr_E %edi /* Effective address */
|
|
||||||
|
|
||||||
#endif // whole file
|
#endif // whole file
|
||||||
|
27
src/x86/cpu-regs.h
Normal file
27
src/x86/cpu-regs.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Apple // emulator for *nix
|
||||||
|
*
|
||||||
|
* This software package is subject to the GNU General Public License
|
||||||
|
* version 2 or later (your choice) as published by the Free Software
|
||||||
|
* Foundation.
|
||||||
|
*
|
||||||
|
* THERE ARE NO WARRANTIES WHATSOEVER.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "cpu.h"
|
||||||
|
|
||||||
|
#define X_Reg %bl /* 6502 X register in %bl */
|
||||||
|
#define Y_Reg %bh /* 6502 Y register in %bh */
|
||||||
|
#define XY_Regs %ebx /* 6502 X&Y flags */
|
||||||
|
#define A_Reg %cl /* 6502 A register in %cl */
|
||||||
|
#define F_Reg %ch /* 6502 flags in %ch */
|
||||||
|
#define FF_Reg %ecx /* 6502 F&A flags */
|
||||||
|
#define SP_Reg_L %dl /* 6502 Stack pointer low */
|
||||||
|
#define SP_Reg_H %dh /* 6502 Stack pointer high */
|
||||||
|
#define SP_Reg %edx /* 6502 Stack pointer */
|
||||||
|
#define PC_Reg %si /* 6502 Program Counter */
|
||||||
|
#define PC_Reg_E %esi /* 6502 Program Counter */
|
||||||
|
#define EffectiveAddr %di /* Effective address */
|
||||||
|
#define EffectiveAddr_E %edi /* Effective address */
|
||||||
|
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "apple2.h"
|
#include "apple2.h"
|
||||||
#include "cpu.h"
|
#include "cpu-regs.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
#define DebugCurrEA SN(cpu65_debug)
|
#define DebugCurrEA SN(cpu65_debug)
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#define __ASSEMBLY__
|
#define __ASSEMBLY__
|
||||||
#include "apple2.h"
|
#include "apple2.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "cpu.h"
|
#include "cpu-regs.h"
|
||||||
|
|
||||||
#define GLUE_FIXED_READ(func,address) \
|
#define GLUE_FIXED_READ(func,address) \
|
||||||
E(func) movb SN(address)(EffectiveAddr_E),%al; \
|
E(func) movb SN(address)(EffectiveAddr_E),%al; \
|
||||||
@ -60,7 +60,7 @@ E(func) addl SN(pointer),EffectiveAddr_E; \
|
|||||||
// TODO FIXME : implement CDECL prologue/epilogues...
|
// TODO FIXME : implement CDECL prologue/epilogues...
|
||||||
#define GLUE_C_WRITE(func) \
|
#define GLUE_C_WRITE(func) \
|
||||||
E(func) pushl %eax; \
|
E(func) pushl %eax; \
|
||||||
pushl XY_Regs_32; \
|
pushl XY_Regs; \
|
||||||
pushl FF_Reg; \
|
pushl FF_Reg; \
|
||||||
pushl SP_Reg; \
|
pushl SP_Reg; \
|
||||||
pushl PC_Reg_E; \
|
pushl PC_Reg_E; \
|
||||||
@ -73,13 +73,13 @@ E(func) pushl %eax; \
|
|||||||
popl PC_Reg_E; \
|
popl PC_Reg_E; \
|
||||||
popl SP_Reg; \
|
popl SP_Reg; \
|
||||||
popl FF_Reg; \
|
popl FF_Reg; \
|
||||||
popl XY_Regs_32; \
|
popl XY_Regs; \
|
||||||
popl %eax; \
|
popl %eax; \
|
||||||
ret;
|
ret;
|
||||||
|
|
||||||
// TODO FIXME : implement CDECL prologue/epilogues...
|
// TODO FIXME : implement CDECL prologue/epilogues...
|
||||||
#define _GLUE_C_READ(func, ...) \
|
#define _GLUE_C_READ(func, ...) \
|
||||||
E(func) pushl XY_Regs_32; \
|
E(func) pushl XY_Regs; \
|
||||||
pushl FF_Reg; \
|
pushl FF_Reg; \
|
||||||
pushl SP_Reg; \
|
pushl SP_Reg; \
|
||||||
pushl PC_Reg_E; \
|
pushl PC_Reg_E; \
|
||||||
@ -93,7 +93,7 @@ E(func) pushl XY_Regs_32; \
|
|||||||
popl PC_Reg_E; \
|
popl PC_Reg_E; \
|
||||||
popl SP_Reg; \
|
popl SP_Reg; \
|
||||||
popl FF_Reg; \
|
popl FF_Reg; \
|
||||||
popl XY_Regs_32; \
|
popl XY_Regs; \
|
||||||
__VA_ARGS__ \
|
__VA_ARGS__ \
|
||||||
ret;
|
ret;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user