scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

  1#include <scc/mach.h>
  2#include <scc/scc.h>
  3
  4#include "../as.h"
  5#include "../x86/proc.h"
  6
  7unsigned long long maxaddr = 0xFFFFFFFF;
  8int endian = LITTLE_ENDIAN;
  9
 10void
 11iarch(void)
 12{
 13	static struct {
 14		char *name;
 15		unsigned char type;
 16	} regs[] = {
 17		"CS", AREG_CS,
 18		"DS", AREG_DS,
 19		"SS", AREG_SS,
 20		"ES", AREG_ES,
 21		"FS", AREG_FS,
 22		"GS", AREG_GS,
 23
 24		"AX", AREG_AX,
 25		"AL", AREG_AL,
 26		"AH", AREG_AH,
 27		"EAX", AREG_EAX,
 28
 29		"BC", AREG_BX,
 30		"BL", AREG_BL,
 31		"BH", AREG_BH,
 32		"EBX", AREG_EBX,
 33
 34		"CX", AREG_CX,
 35		"CL", AREG_CL,
 36		"CH", AREG_CH,
 37		"ECX", AREG_ECX,
 38
 39		"DX", AREG_DX,
 40		"DL", AREG_DL,
 41		"DH", AREG_DH,
 42		"EDX", AREG_EDX,
 43
 44		"SI", AREG_SI,
 45		"ESI", AREG_ESI,
 46		"DI", AREG_DI,
 47		"EDI", AREG_EDI,
 48
 49		"SP", AREG_SP,
 50		"ESP", AREG_ESP,
 51
 52		"BP", AREG_BP,
 53		"EBP", AREG_EBP,
 54
 55		"R0", AREG_R0,
 56		"MM0", AREG_MM0,
 57		"R1", AREG_R1,
 58		"MM1", AREG_MM1,
 59		"R2", AREG_R2,
 60		"MM2", AREG_MM2,
 61		"R3", AREG_R3,
 62		"MM3", AREG_MM3,
 63		"R4", AREG_R4,
 64		"MM4", AREG_MM4,
 65		"R5", AREG_R5,
 66		"MM5", AREG_MM5,
 67		"R6", AREG_R6,
 68		"MM6", AREG_MM6,
 69		"R7", AREG_R7,
 70		"MM7", AREG_MM7,
 71
 72		"XMM0", AREG_XMM0,
 73		"XMM1", AREG_XMM1,
 74		"XMM2", AREG_XMM2,
 75		"XMM3", AREG_XMM3,
 76		"XMM4", AREG_XMM4,
 77		"XMM5", AREG_XMM5,
 78		"XMM6", AREG_XMM6,
 79		"XMM7", AREG_XMM7,
 80
 81		"YMM0", AREG_YMM0,
 82		"YMM1", AREG_YMM1,
 83		"YMM2", AREG_YMM2,
 84		"YMM3", AREG_YMM3,
 85		"YMM4", AREG_YMM4,
 86		"YMM5", AREG_YMM5,
 87		"YMM6", AREG_YMM6,
 88		"YMM7", AREG_YMM7,
 89
 90		"MXCSR", AREG_MXCSR,
 91
 92		NULL
 93	}, *bp;
 94
 95	for (bp = regs; bp->name; ++bp) {
 96		Symbol *sym = lookup(bp->name);
 97		sym->flags = FREG;
 98		sym->value = bp->type;
 99	}
100}