mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-06-07 00:04:48 +00:00
Add XMM8-XMM15 to compiler register list
Space out compiler lists
This commit is contained in:
parent
4b1371ae20
commit
3c56fa3096
Binary file not shown.
Binary file not shown.
@ -4,7 +4,7 @@ Bool ParseAsmImm(CCompCtrl *cc,CAsmArg *arg)
|
||||
LexExcept(cc,"Already one immediate at ");
|
||||
arg->imm_or_off_present=TRUE;
|
||||
arg->num.local_asm_undef_hash=NULL;
|
||||
arg->num.glbl_asm_undef_hash=NULL;
|
||||
arg->num.glbl_asm_undef_hash=NULL;
|
||||
cc->asm_undef_hash=NULL;
|
||||
cc->abs_counts=0;
|
||||
cc->flags&=~(CCF_UNRESOLVED+CCF_LOCAL);
|
||||
@ -41,13 +41,18 @@ U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel)
|
||||
arg->reg1=REG_NONE;
|
||||
arg->reg2=REG_NONE;
|
||||
arg->scale=1;
|
||||
while (TRUE) {
|
||||
if (cc->token==TK_IDENT) {
|
||||
if (tmph=cc->hash_entry) {
|
||||
if (tmph->type&HTG_TYPE_MASK==HTT_REG) {
|
||||
tmpr=tmph;
|
||||
arg->reg1_type=tmpr->reg_type;
|
||||
switch (tmpr->reg_type) {
|
||||
while (TRUE)
|
||||
{
|
||||
if (cc->token == TK_IDENT)
|
||||
{
|
||||
if (tmph = cc->hash_entry)
|
||||
{
|
||||
if (tmph->type & HTG_TYPE_MASK == HTT_REG)
|
||||
{
|
||||
tmpr = tmph;
|
||||
arg->reg1_type = tmpr->reg_type;
|
||||
switch (tmpr->reg_type)
|
||||
{
|
||||
start:
|
||||
case REGT_R8:
|
||||
arg->size=1;
|
||||
@ -59,34 +64,36 @@ U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel)
|
||||
arg->size=4;
|
||||
break;
|
||||
case REGT_R64:
|
||||
case REGT_FSTACK:
|
||||
case REGT_MM:
|
||||
arg->size=8;
|
||||
break;
|
||||
case REGT_XMM:
|
||||
arg->size=16;
|
||||
end:
|
||||
arg->reg1=tmpr->reg_num;
|
||||
Lex(cc);
|
||||
return;
|
||||
case REGT_SEG:
|
||||
arg->seg=tmpr->reg_num;
|
||||
if (Lex(cc)!=':') {
|
||||
arg->seg = tmpr->reg_num;
|
||||
if (Lex(cc) != ':')
|
||||
{
|
||||
arg->just_seg=TRUE;
|
||||
return;
|
||||
} else
|
||||
}
|
||||
else
|
||||
Lex(cc); //skip ":"
|
||||
break;
|
||||
case REGT_FSTACK:
|
||||
case REGT_MM:
|
||||
case REGT_XMM:
|
||||
arg->size=8;
|
||||
arg->reg1=tmpr->reg_num;
|
||||
Lex(cc);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if ((tmph->type&HTG_TYPE_MASK==HTT_CLASS||
|
||||
tmph->type&HTG_TYPE_MASK==HTT_INTERNAL_TYPE) &&
|
||||
(tmph1=HashFind(cc->cur_str,cmp.asm_hash,HTT_ASM_KEYWORD)))
|
||||
tmph=tmph1;
|
||||
if (tmph->type&HTG_TYPE_MASK==HTT_ASM_KEYWORD) {
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((tmph->type & HTG_TYPE_MASK == HTT_CLASS||
|
||||
tmph->type & HTG_TYPE_MASK == HTT_INTERNAL_TYPE) &&
|
||||
(tmph1 = HashFind(cc->cur_str, cmp.asm_hash, HTT_ASM_KEYWORD)))
|
||||
tmph = tmph1;
|
||||
if (tmph->type & HTG_TYPE_MASK == HTT_ASM_KEYWORD)
|
||||
{
|
||||
switch (tmph->user_data0) {
|
||||
case AKW_I8:
|
||||
case AKW_U8:
|
||||
@ -111,27 +118,34 @@ U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel)
|
||||
} else
|
||||
goto pa_asm_direct_imm;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
pa_asm_direct_imm:
|
||||
ParseAsmImm(cc,arg);
|
||||
arg->num.abs_counts=cc->abs_counts;
|
||||
if (arg->size<=1 && !rel && arg->num.abs_counts&1) {
|
||||
if (cc->aotc->seg_size==16)
|
||||
ParseAsmImm(cc, arg);
|
||||
arg->num.abs_counts = cc->abs_counts;
|
||||
if (arg->size <= 1 && !rel && arg->num.abs_counts & 1)
|
||||
{
|
||||
if (cc->aotc->seg_size == 16)
|
||||
arg->size=2;
|
||||
else
|
||||
arg->size=4;
|
||||
}
|
||||
if (cc->token!='[')
|
||||
if (cc->token != '[')
|
||||
return;
|
||||
}
|
||||
} else if (cc->token=='[') {
|
||||
arg->indirect=TRUE;
|
||||
}
|
||||
else if (cc->token=='[') {
|
||||
arg->indirect = TRUE;
|
||||
Lex(cc); // skip [
|
||||
while (cc->token && cc->token!=']') {
|
||||
if (cc->token==TK_IDENT) {
|
||||
if (tmph=cc->hash_entry) {
|
||||
if (tmph->type&HTG_TYPE_MASK==HTT_REG &&
|
||||
REGT_R16<=tmph(CHashReg *)->reg_type<=REGT_R64) {
|
||||
while (cc->token && cc->token != ']')
|
||||
{
|
||||
if (cc->token == TK_IDENT)
|
||||
{
|
||||
if (tmph = cc->hash_entry)
|
||||
{
|
||||
if (tmph->type & HTG_TYPE_MASK == HTT_REG && REGT_R16 <= tmph(CHashReg *)->reg_type <= REGT_R64)
|
||||
{
|
||||
tmpr=tmph;
|
||||
arg->reg2_type=tmpr->reg_type;
|
||||
if (arg->reg1==REG_NONE) {
|
||||
|
@ -22,7 +22,7 @@ U0 AsmParseInsFlags(CCompCtrl *cc,CInst *tmpins)
|
||||
case '/':
|
||||
if (Lex(cc)==TK_I64 && cc->cur_i64<8)
|
||||
tmpins->slash_val=cc->cur_i64;
|
||||
else if (cc->token==TK_IDENT) {
|
||||
else if (cc->token==TK_IDENT) {
|
||||
if (!StrCompare(cc->cur_str,"R"))
|
||||
tmpins->slash_val=SV_R_REG;
|
||||
else if (!StrCompare(cc->cur_str,"I"))
|
||||
@ -32,14 +32,14 @@ U0 AsmParseInsFlags(CCompCtrl *cc,CInst *tmpins)
|
||||
} else
|
||||
return;
|
||||
break;
|
||||
case '!': tmpins->flags|=IEF_DONT_SWITCH_MODES; break;
|
||||
case '&': tmpins->flags|=IEF_DEFAULT; break;
|
||||
case '%': tmpins->flags|=IEF_NOT_IN_64_BIT; break;
|
||||
case '=': tmpins->flags|=IEF_48_REX; break;
|
||||
case '`': tmpins->flags|=IEF_REX_ONLY_R8_R15; break;
|
||||
case '^': tmpins->flags|=IEF_REX_XOR_LIKE; break;
|
||||
case '*': tmpins->flags|=IEF_STI_LIKE; break;
|
||||
case '$$': tmpins->flags|=IEF_ENDING_ZERO; break;
|
||||
case '!': tmpins->flags|=IEF_DONT_SWITCH_MODES; break;
|
||||
case '&': tmpins->flags|=IEF_DEFAULT; break;
|
||||
case '%': tmpins->flags|=IEF_NOT_IN_64_BIT; break;
|
||||
case '=': tmpins->flags|=IEF_48_REX; break;
|
||||
case '`': tmpins->flags|=IEF_REX_ONLY_R8_R15; break;
|
||||
case '^': tmpins->flags|=IEF_REX_XOR_LIKE; break;
|
||||
case '*': tmpins->flags|=IEF_STI_LIKE; break;
|
||||
case '$$': tmpins->flags|=IEF_ENDING_ZERO; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
@ -58,15 +58,15 @@ U0 AsmHashLoad()
|
||||
CInst *tmpins;
|
||||
CHashClass *tmpc;
|
||||
|
||||
cmp.size_arg_mask[0]=0x3FF0FFFFFE;
|
||||
cmp.size_arg_mask[1]=0x1110111112;
|
||||
cmp.size_arg_mask[2]=0x2220222224;
|
||||
cmp.size_arg_mask[4]=0x0440444448;
|
||||
cmp.size_arg_mask[8]=0x0880888880;
|
||||
cmp.size_arg_mask[0] = 0x3FF0FFFFFE;
|
||||
cmp.size_arg_mask[1] = 0x1110111112;
|
||||
cmp.size_arg_mask[2] = 0x2220222224;
|
||||
cmp.size_arg_mask[4] = 0x0440444448;
|
||||
cmp.size_arg_mask[8] = 0x0880888880;
|
||||
|
||||
cmp.asm_hash=HashTableNew(1024);
|
||||
size_max=offset(CHashOpcode.ins)+sizeof(CInst)<<5;
|
||||
tmpo_max=MAlloc(size_max);
|
||||
cmp.asm_hash = HashTableNew(1024);
|
||||
size_max = offset(CHashOpcode.ins) + sizeof(CInst) << 5;
|
||||
tmpo_max = MAlloc(size_max);
|
||||
|
||||
cc=CompCtrlNew(FileRead("OpCodes.DD"),,"OpCodes.DD");
|
||||
cc->htc.hash_table_list=NULL;
|
||||
@ -74,8 +74,7 @@ U0 AsmHashLoad()
|
||||
while (cc->token) {
|
||||
if (cc->token!=TK_IDENT)
|
||||
LexExcept(cc,"Expecting identifier at ");
|
||||
i=ListMatch(cc->cur_str,"NONE\0R8\0R16\0R32\0R64\0SEG\0FSTACK\0"
|
||||
"MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
|
||||
i=ListMatch(cc->cur_str, "NONE\0R8\0R16\0R32\0R64\0SEG\0FSTACK\0MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
|
||||
if (i<=0)
|
||||
LexExcept(cc,"Unknown Statement");
|
||||
Lex(cc); //skip keyword
|
||||
@ -87,12 +86,12 @@ U0 AsmHashLoad()
|
||||
tmpr->str=cc->cur_str;
|
||||
cc->cur_str=NULL;
|
||||
Lex(cc); //skip keyword name
|
||||
if (cc->token!=TK_I64)
|
||||
LexExcept(cc,"Expecting int at ");
|
||||
tmpr->type=HTT_REG;
|
||||
tmpr->reg_type=i;
|
||||
tmpr->reg_num=cc->cur_i64;
|
||||
HashAdd(tmpr,cmp.asm_hash);
|
||||
if (cc->token != TK_I64)
|
||||
LexExcept(cc, "Expecting int at ");
|
||||
tmpr->type = HTT_REG;
|
||||
tmpr->reg_type = i;
|
||||
tmpr->reg_num = cc->cur_i64;
|
||||
HashAdd(tmpr, cmp.asm_hash);
|
||||
Lex(cc); //Skip INT
|
||||
break;
|
||||
case: //OPCODE
|
||||
|
@ -4,13 +4,23 @@ class CInternalType
|
||||
{
|
||||
U8 type,size,name[8];
|
||||
} internal_types_table[INTERNAL_TYPES_NUM]={
|
||||
{RT_I0,0,"I0i"},{RT_I0,0,"I0"},{RT_U0,0,"U0i"},{RT_U0,0,"U0"},
|
||||
{RT_I8,1,"I8i"},{RT_I8,1,"I8"},{RT_I8,1,"Bool"},
|
||||
{RT_U8,1,"U8i"},{RT_U8,1,"U8"},
|
||||
{RT_I16,2,"I16i"},{RT_U16,2,"U16i"},
|
||||
{RT_I32,4,"I32i"},{RT_U32,4,"U32i"},
|
||||
{RT_I64,8,"I64i"},{RT_U64,8,"U64i"},
|
||||
{RT_F64,8,"F64i"},{RT_F64,8,"F64"},
|
||||
{RT_I0, 0, "I0i"},
|
||||
{RT_I0, 0, "I0"},
|
||||
{RT_U0, 0, "U0i"},
|
||||
{RT_U0, 0, "U0"},
|
||||
{RT_I8, 1, "I8i"},
|
||||
{RT_I8, 1, "I8"},
|
||||
{RT_I8, 1, "Bool"},
|
||||
{RT_U8, 1, "U8i"},
|
||||
{RT_U8, 1, "U8"},
|
||||
{RT_I16, 2, "I16i"},
|
||||
{RT_U16, 2, "U16i"},
|
||||
{RT_I32, 4, "I32i"},
|
||||
{RT_U32, 4, "U32i"},
|
||||
{RT_I64, 8, "I64i"},
|
||||
{RT_U64, 8, "U64i"},
|
||||
{RT_F64, 8, "F64i"},
|
||||
{RT_F64, 8, "F64"},
|
||||
};
|
||||
|
||||
CIntermediateStruct intermediate_code_table[IC_ICS_NUM]={
|
||||
@ -205,36 +215,245 @@ CIntermediateStruct intermediate_code_table[IC_ICS_NUM]={
|
||||
U0 CompLoadDefines()
|
||||
{
|
||||
DefineListLoad("ST_RAW_TYPES",
|
||||
"\0\0I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0"
|
||||
"F32\0UF32\0F64\0UF64\0");
|
||||
"\0"
|
||||
"\0"
|
||||
"I0\0"
|
||||
"U0\0"
|
||||
"I8\0"
|
||||
"U8\0"
|
||||
"I16\0"
|
||||
"U16\0"
|
||||
"I32\0"
|
||||
"U32\0"
|
||||
"I64\0"
|
||||
"U64\0"
|
||||
"F32\0"
|
||||
"UF32\0"
|
||||
"F64\0"
|
||||
"UF64\0");
|
||||
|
||||
DefineListLoad("ST_NATURAL_TYPES",
|
||||
"I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0F64\0String\0");
|
||||
"I8\0"
|
||||
"U8\0"
|
||||
"I16\0"
|
||||
"U16\0"
|
||||
"I32\0"
|
||||
"U32\0"
|
||||
"I64\0"
|
||||
"U64\0"
|
||||
"F64\0"
|
||||
"String\0");
|
||||
|
||||
DefineListLoad("ST_INT_SIZE_TYPES",
|
||||
"I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0");
|
||||
DefineListLoad("ST_TY_TYPES","NULL\0STACK\0IMM\0REG\0DISP\0SIB\0RIP\0");
|
||||
DefineListLoad("ST_U8_REGS","AL\0CL\0DL\0BL\0AH\0CH\0DH\0BH\0"
|
||||
"R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0");
|
||||
DefineListLoad("ST_U8_REX_REGS","AL\0CL\0DL\0BL\0RSPu8\0RBPu8\0RSIu8\0RDIu8\0"
|
||||
"R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0");
|
||||
DefineListLoad("ST_U16_REGS","AX\0CX\0DX\0BX\0SP\0BP\0SI\0DI\0"
|
||||
"R8u16\0R9u16\0R10u16\0R11u16\0R12u16\0R13u16\0R14u16\0R15u16\0");
|
||||
DefineListLoad("ST_U32_REGS","EAX\0ECX\0EDX\0EBX\0ESP\0EBP\0ESI\0EDI\0"
|
||||
"R8u32\0R9u32\0R10u32\0R11u32\0R12u32\0R13u32\0R14u32\0R15u32\0");
|
||||
DefineListLoad("ST_U64_REGS","RAX\0RCX\0RDX\0RBX\0RSP\0RBP\0RSI\0RDI\0"
|
||||
"R8\0R9\0R10\0R11\0R12\0R13\0R14\0R15\0");
|
||||
DefineListLoad("ST_MM_REGS","MM0\0MM1\0MM2\0MM3\0MM4\0MM5\0MM6\0MM7\0");
|
||||
"I8\0"
|
||||
"U8\0"
|
||||
"I16\0"
|
||||
"U16\0"
|
||||
"I32\0"
|
||||
"U32\0"
|
||||
"I64\0"
|
||||
"U64\0");
|
||||
|
||||
DefineListLoad("ST_TY_TYPES",
|
||||
"NULL\0"
|
||||
"STACK\0"
|
||||
"IMM\0"
|
||||
"REG\0"
|
||||
"DISP\0"
|
||||
"SIB\0"
|
||||
"RIP\0");
|
||||
|
||||
DefineListLoad("ST_U8_REGS",
|
||||
"AL\0"
|
||||
"CL\0"
|
||||
"DL\0"
|
||||
"BL\0"
|
||||
"AH\0"
|
||||
"CH\0"
|
||||
"DH\0"
|
||||
"BH\0"
|
||||
"R8u8\0"
|
||||
"R9u8\0"
|
||||
"R10u8\0"
|
||||
"R11u8\0"
|
||||
"R12u8\0"
|
||||
"R13u8\0"
|
||||
"R14u8\0"
|
||||
"R15u8\0");
|
||||
|
||||
DefineListLoad("ST_U8_REX_REGS",
|
||||
"AL\0"
|
||||
"CL\0"
|
||||
"DL\0"
|
||||
"BL\0"
|
||||
"RSPu8\0"
|
||||
"RBPu8\0"
|
||||
"RSIu8\0"
|
||||
"RDIu8\0"
|
||||
"R8u8\0"
|
||||
"R9u8\0"
|
||||
"R10u8\0"
|
||||
"R11u8\0"
|
||||
"R12u8\0"
|
||||
"R13u8\0"
|
||||
"R14u8\0"
|
||||
"R15u8\0");
|
||||
|
||||
DefineListLoad("ST_U16_REGS",
|
||||
"AX\0"
|
||||
"CX\0"
|
||||
"DX\0"
|
||||
"BX\0"
|
||||
"SP\0"
|
||||
"BP\0"
|
||||
"SI\0"
|
||||
"DI\0"
|
||||
"R8u16\0"
|
||||
"R9u16\0"
|
||||
"R10u16\0"
|
||||
"R11u16\0"
|
||||
"R12u16\0"
|
||||
"R13u16\0"
|
||||
"R14u16\0"
|
||||
"R15u16\0");
|
||||
|
||||
DefineListLoad("ST_U32_REGS",
|
||||
"EAX\0"
|
||||
"ECX\0"
|
||||
"EDX\0"
|
||||
"EBX\0"
|
||||
"ESP\0"
|
||||
"EBP\0"
|
||||
"ESI\0"
|
||||
"EDI\0"
|
||||
"R8u32\0"
|
||||
"R9u32\0"
|
||||
"R10u32\0"
|
||||
"R11u32\0"
|
||||
"R12u32\0"
|
||||
"R13u32\0"
|
||||
"R14u32\0"
|
||||
"R15u32\0");
|
||||
|
||||
DefineListLoad("ST_U64_REGS",
|
||||
"RAX\0"
|
||||
"RCX\0"
|
||||
"RDX\0"
|
||||
"RBX\0"
|
||||
"RSP\0"
|
||||
"RBP\0"
|
||||
"RSI\0"
|
||||
"RDI\0"
|
||||
"R8\0"
|
||||
"R9\0"
|
||||
"R10\0"
|
||||
"R11\0"
|
||||
"R12\0"
|
||||
"R13\0"
|
||||
"R14\0"
|
||||
"R15\0");
|
||||
|
||||
DefineListLoad("ST_MM_REGS",
|
||||
"MM0\0"
|
||||
"MM1\0"
|
||||
"MM2\0"
|
||||
"MM3\0"
|
||||
"MM4\0"
|
||||
"MM5\0"
|
||||
"MM6\0"
|
||||
"MM7\0");
|
||||
DefineListLoad("ST_XMM_REGS",
|
||||
"XMM0\0XMM1\0XMM2\0XMM3\0XMM4\0XMM5\0XMM6\0XMM7\0");
|
||||
DefineListLoad("ST_ARG_TYPES","NONE\0REL8\0REL16\0REL32\0"
|
||||
"IMM8\0IMM16\0IMM32\0IMM64\0UIMM8\0UIMM16\0UIMM32\0UIMM64\0"
|
||||
"R8\0R16\0R32\0R64\0RM8\0RM16\0RM32\0RM64\0"
|
||||
"M8\0M16\0M32\0M64\0M1632\0M16N32\0M16N16\0M32N32\0"
|
||||
"MOFFS8\0MOFFS16\0MOFFS32\0MOFFS64\0"
|
||||
"AL\0AX\0EAX\0RAX\0CL\0DX\0\0SREG\0"
|
||||
"SS\0DS\0ES\0FS\0GS\0CS\0ST0\0STI\0"
|
||||
"MM\0MM32\0MM64\0XMM\0XMM32\0XMM64\0XMM128\0XMM0\0");
|
||||
DefineListLoad("ST_SEG_REGS","ES\0CS\0SS\0DS\0FS\0GS\0");
|
||||
DefineListLoad("ST_FSTACK_REGS","ST0\0ST1\0ST2\0ST3\0ST4\0ST5\0ST6\0ST7\0");
|
||||
"XMM0\0"
|
||||
"XMM1\0"
|
||||
"XMM2\0"
|
||||
"XMM3\0"
|
||||
"XMM4\0"
|
||||
"XMM5\0"
|
||||
"XMM6\0"
|
||||
"XMM7\0"
|
||||
"XMM9\0"
|
||||
"XMM10\0"
|
||||
"XMM11\0"
|
||||
"XMM12\0"
|
||||
"XMM13\0"
|
||||
"XMM14\0"
|
||||
"XMM15\0");
|
||||
|
||||
DefineListLoad("ST_ARG_TYPES",
|
||||
"NONE\0"
|
||||
"REL8\0"
|
||||
"REL16\0"
|
||||
"REL32\0"
|
||||
"IMM8\0"
|
||||
"IMM16\0"
|
||||
"IMM32\0"
|
||||
"IMM64\0"
|
||||
"UIMM8\0"
|
||||
"UIMM16\0"
|
||||
"UIMM32\0"
|
||||
"UIMM64\0"
|
||||
"R8\0"
|
||||
"R16\0"
|
||||
"R32\0"
|
||||
"R64\0"
|
||||
"RM8\0"
|
||||
"RM16\0"
|
||||
"RM32\0"
|
||||
"RM64\0"
|
||||
"M8\0"
|
||||
"M16\0"
|
||||
"M32\0"
|
||||
"M64\0"
|
||||
"M1632\0"
|
||||
"M16N32\0"
|
||||
"M16N16\0"
|
||||
"M32N32\0"
|
||||
"MOFFS8\0"
|
||||
"MOFFS16\0"
|
||||
"MOFFS32\0"
|
||||
"MOFFS64\0"
|
||||
"AL\0"
|
||||
"AX\0"
|
||||
"EAX\0"
|
||||
"RAX\0"
|
||||
"CL\0"
|
||||
"DX\0"
|
||||
"\0"
|
||||
"SREG\0"
|
||||
"SS\0"
|
||||
"DS\0"
|
||||
"ES\0"
|
||||
"FS\0"
|
||||
"GS\0"
|
||||
"CS\0"
|
||||
"ST0\0"
|
||||
"STI\0"
|
||||
"MM\0"
|
||||
"MM32\0"
|
||||
"MM64\0"
|
||||
"XMM\0"
|
||||
"XMM32\0"
|
||||
"XMM64\0"
|
||||
"XMM128\0"
|
||||
"XMM0\0");
|
||||
|
||||
DefineListLoad("ST_SEG_REGS",
|
||||
"ES\0"
|
||||
"CS\0"
|
||||
"SS\0"
|
||||
"DS\0"
|
||||
"FS\0"
|
||||
"GS\0");
|
||||
|
||||
DefineListLoad("ST_FSTACK_REGS",
|
||||
"ST0\0"
|
||||
"ST1\0"
|
||||
"ST2\0"
|
||||
"ST3\0"
|
||||
"ST4\0"
|
||||
"ST5\0"
|
||||
"ST6\0"
|
||||
"ST7\0");
|
||||
}
|
||||
|
||||
U0 CompFillTables()
|
||||
|
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -131,11 +131,18 @@ MM MM7 7;
|
||||
XMM XMM0 0;
|
||||
XMM XMM1 1;
|
||||
XMM XMM2 2;
|
||||
XMM XMM3 3;
|
||||
XMM XMM3 3;
|
||||
XMM XMM4 4;
|
||||
XMM XMM5 5;
|
||||
XMM XMM6 6;
|
||||
XMM XMM7 7;
|
||||
XMM XMM8 8;
|
||||
XMM XMM9 9;
|
||||
XMM XMM10 10;
|
||||
XMM XMM11 11;
|
||||
XMM XMM12 12;
|
||||
XMM XMM13 13;
|
||||
XMM XMM14 14;
|
||||
XMM XMM15 15;
|
||||
|
||||
KEYWORD include 0;
|
||||
KEYWORD define 1;
|
||||
|
10
src/Home/Test.CC
Executable file
10
src/Home/Test.CC
Executable file
@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
U0 Test()
|
||||
{
|
||||
MOV XMM12, 30
|
||||
}
|
||||
|
||||
Uf("Test");
|
||||
|
||||
Test;
|
BIN
src/Kernel.BIN.C
BIN
src/Kernel.BIN.C
Binary file not shown.
@ -9,7 +9,7 @@ I64 YearStartDate(I64 year)
|
||||
return year*365+yd4-yd100+yd400-yd4000;
|
||||
}
|
||||
|
||||
CDate Struct2Date(CDateStruct *_ds)
|
||||
CDate Struct2Date(CDateStruct *_ds)
|
||||
{//Convert CDateStruct to CDate.
|
||||
CDate cdt;
|
||||
I64 i1,i2;
|
||||
@ -29,7 +29,7 @@ I64 DayOfWeek(I64 i)
|
||||
{//Day of week, given 32-bit day since AD 0.
|
||||
i+=CDATE_BASE_DAY_OF_WEEK;
|
||||
if (i>=0)
|
||||
return i % 7;
|
||||
return i % 7;
|
||||
else
|
||||
return 6-(6-i)%7;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -59,7 +59,10 @@ extern class CTask;
|
||||
#define eps (0x3CB0000000000000(F64))
|
||||
|
||||
#help_index "Data Types/Simple"
|
||||
/*CosmiC union structure is treated as a whole if no member is specified, similar to bit fields.
|
||||
/*CosmiC union structure is treated as a
|
||||
whole if no member is specified,
|
||||
similar to bit fields.
|
||||
|
||||
See $LK,"::/Demo/SubIntAccess.CC"$.
|
||||
*/
|
||||
U16i union U16
|
||||
@ -1595,8 +1598,8 @@ class CWinMgrTimingGlobals
|
||||
I64 calc_idle_count;
|
||||
};
|
||||
|
||||
#define WINMGR_FPS (60000.0/1001)
|
||||
#define WINMGR_PERIOD (1001/60000.0)
|
||||
#define WINMGR_FPS (30000.0/1001)
|
||||
#define WINMGR_PERIOD (1001/30000.0)
|
||||
|
||||
public class CWinMgrGlobals
|
||||
{
|
||||
@ -3596,7 +3599,7 @@ public class CCPU //The Gs segment reg points to current CCPU.
|
||||
};
|
||||
|
||||
#help_index "Memory/Page Tables"
|
||||
#define MEM_MIN_MEG 256 //256 Meg minimum.
|
||||
#define MEM_MIN_MEG 256 //256 Meg minimum.
|
||||
|
||||
#define SYS_FIXED_AREA 0x100000
|
||||
#define SYS_16MEG_AREA_LIMIT 0x1000000
|
||||
|
@ -47,8 +47,11 @@ U0 Tmp()
|
||||
// Cd("::/Misc/Tour");
|
||||
// InFile("Tour");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
break;
|
||||
}
|
||||
}
|
||||
Tmp;
|
||||
PaletteSetSmooth;
|
||||
SwapI64(&text.font,&text.aux_font);
|
||||
|
Loading…
x
Reference in New Issue
Block a user