From 2707d9e157e00996dffc6cfbcb676dcf84891eca Mon Sep 17 00:00:00 2001 From: v0x3l Date: Thu, 5 Mar 2020 20:33:39 -0600 Subject: [PATCH] Asm.CC clean up --- ...o => Zenith-latest-2020-03-05-20_33_07.iso | Bin 34639872 -> 34641920 bytes src/Compiler/Asm.CC | 898 ++++++++++-------- src/Compiler/ParseExp.CC | 14 +- src/Home/K.CC | 2 +- src/Kernel/KStart32.CC | 4 +- src/Kernel/KernelA.HH | 12 +- 6 files changed, 536 insertions(+), 394 deletions(-) rename Zenith-latest-2020-03-05-18_18_25.iso => Zenith-latest-2020-03-05-20_33_07.iso (99%) diff --git a/Zenith-latest-2020-03-05-18_18_25.iso b/Zenith-latest-2020-03-05-20_33_07.iso similarity index 99% rename from Zenith-latest-2020-03-05-18_18_25.iso rename to Zenith-latest-2020-03-05-20_33_07.iso index 030627a3f2c159a35b93a3dfd84b5e379381b91b..7d5d2dceacdc5d9547fe4a3d9d5276055c83a2c7 100755 GIT binary patch delta 134801 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 diff --git a/src/Compiler/Asm.CC b/src/Compiler/Asm.CC index 5c0bf88d..4f679084 100755 --- a/src/Compiler/Asm.CC +++ b/src/Compiler/Asm.CC @@ -1,13 +1,15 @@ -Bool ParseAsmImm(CCompCtrl *cc,CAsmArg *arg) +Bool ParseAsmImm(CCompCtrl *cc, CAsmArg *arg) { if (arg->imm_or_off_present) LexExcept(cc,"Already one immediate at "); + arg->imm_or_off_present = TRUE; arg->num.local_asm_undef_hash = NULL; arg->num.global_asm_undef_hash = NULL; cc->asm_undef_hash = NULL; cc->abs_counts = 0; cc->flags &= ~(CCF_UNRESOLVED + CCF_LOCAL); + if (!IsLexExpression2Bin(cc, &arg->num.machine_code)) LexSkipEol(cc); else @@ -21,7 +23,7 @@ Bool ParseAsmImm(CCompCtrl *cc,CAsmArg *arg) else arg->num.global_asm_undef_hash = cc->asm_undef_hash; - cc->asm_undef_hash=NULL; + cc->asm_undef_hash = NULL; } else { @@ -39,11 +41,14 @@ U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel) { CHashGeneric *tmph,*tmph1; CHashReg *tmpr; + MemSet(arg, 0, sizeof(CAsmArg)); + arg->seg = REG_NONE; arg->reg1 = REG_NONE; arg->reg2 = REG_NONE; arg->scale = 1; + while (TRUE) { if (cc->token == TK_IDENT) @@ -98,22 +103,22 @@ U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel) switch (tmph->user_data0) { case AKW_I8: case AKW_U8: - arg->size=1; + arg->size = 1; break; case AKW_I16: case AKW_U16: - arg->size=2; + arg->size = 2; break; case AKW_I32: case AKW_U32: - arg->size=4; + arg->size = 4; break; case AKW_I64: case AKW_U64: - arg->size=8; + arg->size = 8; break; default: - LexExcept(cc,"syntax error at "); + LexExcept(cc, "syntax error at "); } Lex(cc); //skip keyword } else @@ -146,46 +151,65 @@ pa_asm_direct_imm: { if (tmph = cc->hash_entry) { - if (tmph->type & HTG_TYPE_MASK == HTT_REG && REGT_R16 <= tmph(CHashReg *)->reg_type <= REGT_R64) + if (tmph->type & HTG_TYPE_MASK == HTT_REG && REGT_R16 <= tmph(CHashReg *)->reg_type <= REGT_XMM) { - tmpr=tmph; - arg->reg2_type=tmpr->reg_type; - if (arg->reg1==REG_NONE) { - if (tmpr->reg_num&7==REG_RSP) { - arg->reg1=4; - arg->reg2=tmpr->reg_num; - } else - arg->reg1=tmpr->reg_num; - } else - arg->reg2=tmpr->reg_num; + tmpr = tmph; + arg->reg2_type = tmpr->reg_type; + + if (arg->reg1 == REG_NONE) + { + if (tmpr->reg_num & 7 == REG_RSP) + { + arg->reg1 = 4; + arg->reg2 = tmpr->reg_num; + } + else + arg->reg1 = tmpr->reg_num; + } + else + arg->reg2 = tmpr->reg_num; + Lex(cc); - } else + } + else goto pa_asm_indirect_imm; - } else - goto pa_asm_indirect_imm; - } else if (cc->token=='*') { - Lex(cc); - if (cc->token!=TK_I64) - LexExcept(cc,"Expecting scale factor at "); - arg->scale=cc->cur_i64; - Lex(cc); //skip scale - if (arg->reg2!=REG_NONE) { - SwapI64(&arg->reg1,&arg->reg2); - SwapI64(&arg->reg1_type,&arg->reg2_type); } - } else if (cc->token=='+') { + else + goto pa_asm_indirect_imm; + } + else if (cc->token == '*') + { + Lex(cc); + + if (cc->token != TK_I64) + LexExcept(cc, "Expecting scale factor at "); + + arg->scale = cc->cur_i64; + Lex(cc); //skip scale + + if (arg->reg2 != REG_NONE) + { + SwapI64(&arg->reg1, &arg->reg2); + SwapI64(&arg->reg1_type, &arg->reg2_type); + } + } + else if (cc->token == '+') + { Lex(cc); //skip '+' - } else { + } + else + { pa_asm_indirect_imm: - ParseAsmImm(cc,arg); - arg->num.abs_counts=cc->abs_counts; + ParseAsmImm(cc, arg); + arg->num.abs_counts = cc->abs_counts; } } - if (cc->token!=']') - LexExcept(cc,"Missing ']' at "); + if (cc->token != ']') + LexExcept(cc, "Missing ']' at "); Lex(cc); //skip ']' return; - } else + } + else goto pa_asm_direct_imm; } } @@ -301,124 +325,150 @@ mm_done: return res; } -Bool AsmStoreNum(CCompCtrl *cc,CAsmNum2 *num2,I64 count,Bool u8_avail) +Bool AsmStoreNum(CCompCtrl *cc, CAsmNum2 *num2, I64 count, Bool u8_avail) { - CAOTCtrl *aotc=cc->aotc; + CAOTCtrl *aotc = cc->aotc; I64 i; CAOTAbsAddr *tmpa; if (!num2->imm_flag) - num2->num.i-=num2->rel; - for (i=0;iU8_count==1) { - if (num2->num.local_asm_undef_hash||num2->num.global_asm_undef_hash) - AsmUnresolvedAdd(cc,num2->num.machine_code,IET_REL_I8+num2->imm_flag, - aotc->rip,num2->rel,num2->num.local_asm_undef_hash, - num2->num.global_asm_undef_hash,cc->lex_include_stack->line_num, - u8_avail); - else if (!num2->imm_flag && !(I8_MIN<=num2->num.i<=I8_MAX)) - LexExcept(cc,"Branch out of range at "); - if (num2->imm_flag) { - if (num2->num.abs_counts.abs_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_ADD_U8; - } - } else { - if (num2->num.abs_counts.c_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_SUB_U8; + num2->num.i -= num2->rel; + + for (i = 0; i < count; i++) + { + if (num2->u8_count == 1) + { + if (num2->num.local_asm_undef_hash || num2->num.global_asm_undef_hash) + AsmUnresolvedAdd(cc, num2->num.machine_code, IET_REL_I8 + num2->imm_flag, aotc->rip, num2->rel, num2->num.local_asm_undef_hash, + num2->num.global_asm_undef_hash, cc->lex_include_stack->line_num, u8_avail); + else if (!num2->imm_flag && !(I8_MIN <= num2->num.i <= I8_MAX)) + LexExcept(cc, "Branch out of range at "); + + if (num2->imm_flag) + { + if (num2->num.abs_counts.abs_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_ADD_U8; } } - AOTStoreCodeU8(cc,num2->num.i); - } else { - if (num2->U8_count==2) { - if (num2->num.local_asm_undef_hash||num2->num.global_asm_undef_hash) - AsmUnresolvedAdd(cc,num2->num.machine_code,IET_REL_I16+num2->imm_flag, - aotc->rip,num2->rel,num2->num.local_asm_undef_hash, - num2->num.global_asm_undef_hash,cc->lex_include_stack->line_num, - u8_avail); - else if (!num2->imm_flag && !(I16_MIN<=num2->num.i<=I16_MAX)) - LexExcept(cc,"Branch out of range at "); - if (num2->imm_flag) { - if (num2->num.abs_counts.abs_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_ADD_U16; - } - } else { - if (num2->num.abs_counts.c_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_SUB_U16; - } + else + { + if (num2->num.abs_counts.c_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_SUB_U8; } - AOTStoreCodeU8(cc,num2->num.i.u8[0]); - AOTStoreCodeU8(cc,num2->num.i.u8[1]); - } else if (num2->U8_count==4) { - if (num2->num.local_asm_undef_hash||num2->num.global_asm_undef_hash) - AsmUnresolvedAdd(cc,num2->num.machine_code,IET_REL_I32+num2->imm_flag, - aotc->rip,num2->rel,num2->num.local_asm_undef_hash, - num2->num.global_asm_undef_hash,cc->lex_include_stack->line_num, - u8_avail); - else if (!num2->imm_flag && !(I32_MIN<=num2->num.i<=I32_MAX)) - LexExcept(cc,"Branch out of range at "); - if (num2->imm_flag) { - if (num2->num.abs_counts.abs_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_ADD_U32; - } - } else { - if (num2->num.abs_counts.c_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_SUB_U32; - } - } - AOTStoreCodeU32(cc,num2->num.i); - } else if (num2->U8_count==8) { - if (num2->num.local_asm_undef_hash||num2->num.global_asm_undef_hash) - AsmUnresolvedAdd(cc,num2->num.machine_code,IET_REL_I64+num2->imm_flag, - aotc->rip,num2->rel,num2->num.local_asm_undef_hash, - num2->num.global_asm_undef_hash,cc->lex_include_stack->line_num, - u8_avail); - if (num2->imm_flag) { - if (num2->num.abs_counts.abs_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_ADD_U64; - } - } else { - if (num2->num.abs_counts.c_addres&1) { - tmpa=CAlloc(sizeof(CAOTAbsAddr)); - tmpa->next=aotc->abss; - aotc->abss=tmpa; - tmpa->rip=aotc->rip; - tmpa->type=AAT_SUB_U64; - } - } - AOTStoreCodeU64(cc,num2->num.i); } - if (u8_avail && !num2->num.local_asm_undef_hash && - !num2->num.global_asm_undef_hash && - !num2->imm_flag && -124<=num2->num.i<=123) { - LexWarn(cc,"could use I8 displacement at "); + AOTStoreCodeU8(cc, num2->num.i); + } + else + { + if (num2->u8_count == 2) + { + if (num2->num.local_asm_undef_hash || num2->num.global_asm_undef_hash) + AsmUnresolvedAdd(cc, num2->num.machine_code, IET_REL_I16 + num2->imm_flag, aotc->rip, num2->rel, num2->num.local_asm_undef_hash, + num2->num.global_asm_undef_hash, cc->lex_include_stack->line_num, u8_avail); + else if (!num2->imm_flag && !(I16_MIN <= num2->num.i <= I16_MAX)) + LexExcept(cc, "Branch out of range at "); + + if (num2->imm_flag) + { + if (num2->num.abs_counts.abs_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_ADD_U16; + } + } + else + { + if (num2->num.abs_counts.c_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_SUB_U16; + } + } + AOTStoreCodeU8(cc, num2->num.i.u8[0]); + AOTStoreCodeU8(cc, num2->num.i.u8[1]); + + } + else if (num2->u8_count==4) + { + if (num2->num.local_asm_undef_hash||num2->num.global_asm_undef_hash) + AsmUnresolvedAdd(cc, num2->num.machine_code, IET_REL_I32+num2->imm_flag, aotc->rip, num2->rel, num2->num.local_asm_undef_hash, + num2->num.global_asm_undef_hash, cc->lex_include_stack->line_num, u8_avail); + else if (!num2->imm_flag && !(I32_MIN <= num2->num.i <= I32_MAX)) + LexExcept(cc, "Branch out of range at "); + + if (num2->imm_flag) + { + if (num2->num.abs_counts.abs_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_ADD_U32; + } + } + else + { + if (num2->num.abs_counts.c_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_SUB_U32; + } + } + AOTStoreCodeU32(cc, num2->num.i); + } + else if (num2->u8_count == 8) + { + if (num2->num.local_asm_undef_hash || num2->num.global_asm_undef_hash) + AsmUnresolvedAdd(cc, num2->num.machine_code, IET_REL_I64 + num2->imm_flag, aotc->rip, num2->rel, num2->num.local_asm_undef_hash, + num2->num.global_asm_undef_hash, cc->lex_include_stack->line_num, u8_avail); + + if (num2->imm_flag) + { + if (num2->num.abs_counts.abs_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_ADD_U64; + } + } + else + { + if (num2->num.abs_counts.c_address & 1) + { + tmpa = CAlloc(sizeof(CAOTAbsAddr)); + tmpa->next = aotc->abss; + aotc->abss = tmpa; + tmpa->rip = aotc->rip; + tmpa->type = AAT_SUB_U64; + } + } + AOTStoreCodeU64(cc, num2->num.i); + } + if (u8_avail && !num2->num.local_asm_undef_hash && !num2->num.global_asm_undef_hash && !num2->imm_flag && -124 <= num2->num.i <= 123) + { + LexWarn(cc, "could use I8 displacement at "); return FALSE; } } @@ -437,7 +487,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) CInst *tmpins; CAsmInst cur, best; - best.U8_count = 255; + best.u8_count = 255; arg1mask = arg2mask = 1; @@ -491,22 +541,22 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) case OCM_CB: cur.imm.imm_flag = FALSE; case OCM_IB: - cur.imm.U8_count = 1; + cur.imm.u8_count = 1; break; case OCM_CW: cur.imm.imm_flag = FALSE; case OCM_IW: - cur.imm.U8_count = 2; + cur.imm.u8_count = 2; break; case OCM_CD: cur.imm.imm_flag = FALSE; case OCM_ID: - cur.imm.U8_count = 4; + cur.imm.u8_count = 4; } if (argcount == 1) { - if (best.U8_count != 255 && !found_second_possible && !best.is_default) + if (best.u8_count != 255 && !found_second_possible && !best.is_default) { found_second_possible = TRUE; @@ -546,7 +596,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) { cur.ModrM = cur.ModrM + 5; MemCopy(&cur.disp.num, &tmpa1->num, sizeof(CAsmNum)); - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; if (aotc->seg_size == 64) cur.disp.imm_flag = FALSE; @@ -586,7 +636,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) cur.has_REX = TRUE; MemCopy(&cur.disp.num, &tmpa1->num, sizeof(CAsmNum)); - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; } else { @@ -607,7 +657,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (tmpa1->reg2 & 7 == REG_RBP && !tmpa1->imm_or_off_present && tmpa1->indirect) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; ModrM_complete = TRUE; } } @@ -622,17 +672,17 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (!cur.disp.num.machine_code && I8_MIN <= cur.disp.num.i <= I8_MAX) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; } else if (aotc->seg_size == 16) { cur.ModrM |= 0x80; - cur.disp.U8_count = 2; + cur.disp.u8_count = 2; } else { cur.ModrM |= 0x80; - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; } } else if (!tmpa1->indirect) @@ -645,7 +695,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (tmpa1->reg1 & 7 == REG_RBP) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; } } } @@ -660,7 +710,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) } else if (argcount == 2) { - if (best.U8_count != 255 && !found_second_possible && !best.is_default) + if (best.u8_count != 255 && !found_second_possible && !best.is_default) { found_second_possible = TRUE; if (!aotc->arg1.size && !aotc->arg2.size) @@ -781,7 +831,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (tmpa1->reg1 >= 20) //RBPu8, RSPu8, RSIu8, RDIu8? cur.has_REX = TRUE; MemCopy(&cur.disp.num, &tmpa1->num, sizeof(CAsmNum)); - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; } else { @@ -802,7 +852,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (tmpa1->reg2 & 7 == REG_RBP && !tmpa1->imm_or_off_present && tmpa1->indirect) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; ModrM_complete = TRUE; } } @@ -814,7 +864,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) { cur.ModrM = cur.ModrM & 0xF8 + 5; MemCopy(&cur.disp.num, &tmpa1->num, sizeof(CAsmNum)); - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; if (aotc->seg_size == 64) cur.disp.imm_flag = FALSE; } @@ -827,17 +877,17 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (!cur.disp.num.machine_code && I8_MIN <= cur.disp.num.i <= I8_MAX) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; } else if (aotc->seg_size == 16) { cur.ModrM |= 0x80; - cur.disp.U8_count = 2; + cur.disp.u8_count = 2; } else { cur.ModrM |= 0x80; - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; } } else if (!tmpa1->indirect) @@ -850,7 +900,7 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (tmpa1->reg1 & 7 == REG_RBP) { cur.ModrM |= 0x40; - cur.disp.U8_count = 1; + cur.disp.u8_count = 1; } } } @@ -860,29 +910,29 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) { MemCopy(&cur.disp.num, &tmpa1->num, sizeof(CAsmNum)); if (aotc->seg_size == 16) - cur.disp.U8_count = 2; + cur.disp.u8_count = 2; else - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; cur.has_addr_prefix = FALSE; } else if (arg2 & ARGG_MOFFS) { MemCopy(&cur.disp.num, &tmpa2->num, sizeof(CAsmNum)); if (aotc->seg_size == 16) - cur.disp.U8_count = 2; + cur.disp.u8_count = 2; else - cur.disp.U8_count = 4; + cur.disp.u8_count = 4; cur.has_addr_prefix = FALSE; } else if (arg1 & (ARGG_IMM | ARGG_UIMM)) { MemCopy(&cur.imm.num, &tmpa1->num, sizeof(CAsmNum)); - if (arg1 & ARGG_SIZE_1) cur.imm.U8_count = 1; - else if (arg1 & ARGG_SIZE_2) cur.imm.U8_count = 2; - else if (arg1 & ARGG_SIZE_4) cur.imm.U8_count = 4; + if (arg1 & ARGG_SIZE_1) cur.imm.u8_count = 1; + else if (arg1 & ARGG_SIZE_2) cur.imm.u8_count = 2; + else if (arg1 & ARGG_SIZE_4) cur.imm.u8_count = 4; else { - cur.imm.U8_count = 8; + cur.imm.u8_count = 8; cur.REX |= 8; } } @@ -891,37 +941,37 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) { MemCopy(&cur.imm.num, &tmpa2->num, sizeof(CAsmNum)); - if (arg2 & ARGG_SIZE_1) cur.imm.U8_count = 1; - else if (arg2 & ARGG_SIZE_2) cur.imm.U8_count = 2; + if (arg2 & ARGG_SIZE_1) cur.imm.u8_count = 1; + else if (arg2 & ARGG_SIZE_2) cur.imm.u8_count = 2; else if (arg2 & ARGG_SIZE_4) { - cur.imm.U8_count = 4; + cur.imm.u8_count = 4; if (tmpins->flags & IEF_REX_ONLY_R8_R15 && arg2 == ARGT_UIMM32) cur.REX &= ~8; } else { - cur.imm.U8_count = 8; + cur.imm.u8_count = 8; cur.REX |= 8; } } } - cur.U8_count = tmpins->opcode_count + cur.disp.U8_count + cur.imm.U8_count; + cur.u8_count = tmpins->opcode_count + cur.disp.u8_count + cur.imm.u8_count; - if (cur.has_ModrM) cur.U8_count++; - if (cur.has_SIB) cur.U8_count++; + if (cur.has_ModrM) cur.u8_count++; + if (cur.has_SIB) cur.u8_count++; if (aotc->seg_size == 64 && cur.REX & 0x40 == 0x40 && (cur.REX != 0x40 || cur.has_REX) && (cur.REX & 7 || !(tmpins->flags & IEF_REX_ONLY_R8_R15 || tmpins->flags & IEF_REX_XOR_LIKE && tmpa1->reg1 == tmpa2->reg1 && cur.ModrM & 0xC0 == 0xC0))) - cur.U8_count++; + cur.u8_count++; - if (cur.U8_count < best.U8_count && !(tmpins->flags & IEF_DONT_SWITCH_MODES && (cur.has_addr_prefix || cur.has_operand_prefix))) + if (cur.u8_count < best.u8_count && !(tmpins->flags & IEF_DONT_SWITCH_MODES && (cur.has_addr_prefix || cur.has_operand_prefix))) MemCopy(&best, &cur, sizeof(CAsmInst)); } } - if (best.U8_count < 255) + if (best.u8_count < 255) { tmpins = best.tmpins; seg = REG_NONE; @@ -955,17 +1005,17 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) if (best.has_SIB) AOTStoreCodeU8(cc, best.SIB); - if (best.disp.U8_count) + if (best.disp.u8_count) { - best.disp.rel = aotc->rip + best.disp.U8_count + best.imm.U8_count; + best.disp.rel = aotc->rip + best.disp.u8_count + best.imm.u8_count; if (!AsmStoreNum(cc, &best.disp, 1, u8_avail)) return FALSE; } - if (best.imm.U8_count) + if (best.imm.u8_count) { - best.imm.rel = aotc->rip+best.imm.U8_count; + best.imm.rel = aotc->rip+best.imm.u8_count; if (!AsmStoreNum(cc, &best.imm, 1, u8_avail)) return FALSE; @@ -980,304 +1030,396 @@ Bool ParseAsmInst(CCompCtrl *cc, CHashOpcode *tmpo, I64 argcount) LexExcept(cc, "Invalid instruction at "); } -U0 ParseAsmDefine(CCompCtrl *cc, I64 U8_count) +U0 ParseAsmDefine(CCompCtrl *cc, I64 u8_count) { Bool is_dup; - I64 i,dup_val; + I64 i, dup_val; U8 *ptr; CAsmNum2 num2; - num2.U8_count=U8_count; + num2.u8_count = u8_count; + + while (cc->token && cc->token != ';') + { + num2.num.local_asm_undef_hash = NULL; + num2.num.global_asm_undef_hash = NULL; + + if (cc->token == TK_STR) + { + ptr = cc->cur_str; + i = cc->cur_str_len - 1; - while (cc->token && cc->token!=';') { - num2.num.local_asm_undef_hash=NULL; - num2.num.global_asm_undef_hash=NULL; - if (cc->token==TK_STR) { - ptr=cc->cur_str; - i=cc->cur_str_len-1; while (i--) - AOTStoreCodeU8(cc,*ptr++); + AOTStoreCodeU8(cc, *ptr++); + Lex(cc); //Skip Str - } else { - is_dup=FALSE; - cc->abs_counts=0; - cc->asm_undef_hash=NULL; - cc->flags&=~(CCF_UNRESOLVED+CCF_LOCAL); - if (!IsLexExpression2Bin(cc,&num2.num.machine_code)) + } + else + { + is_dup = FALSE; + cc->abs_counts = 0; + cc->asm_undef_hash = NULL; + cc->flags &= ~(CCF_UNRESOLVED + CCF_LOCAL); + + if (!IsLexExpression2Bin(cc, &num2.num.machine_code)) LexSkipEol(cc); - else { + else + { if (cc->abs_counts.externs) - LexExcept(cc,"Extern Not Allowed at "); - if (cc->flags & CCF_UNRESOLVED) { - if (cc->flags & CCF_LOCAL) { - num2.num.local_asm_undef_hash=cc->asm_undef_hash; - cc->asm_undef_hash=NULL; - } else { - num2.num.global_asm_undef_hash=cc->asm_undef_hash; - cc->asm_undef_hash=NULL; + LexExcept(cc, "Extern not allowed at "); + + if (cc->flags & CCF_UNRESOLVED) + { + if (cc->flags & CCF_LOCAL) + { + num2.num.local_asm_undef_hash = cc->asm_undef_hash; + cc->asm_undef_hash = NULL; } - } else { - i=Call(num2.num.machine_code); + else + { + num2.num.global_asm_undef_hash = cc->asm_undef_hash; + cc->asm_undef_hash = NULL; + } + } + else + { + i = Call(num2.num.machine_code); Free(num2.num.machine_code); } } - if (cc->token==TK_IDENT && cc->hash_entry) { - if (cc->hash_entry->type & HTT_ASM_KEYWORD && - cc->hash_entry->user_data0==AKW_DUP) { - is_dup=TRUE; - if (Lex(cc)!='(') - LexExcept(cc,"Expecting '(' at "); + + if (cc->token == TK_IDENT && cc->hash_entry) + { + if (cc->hash_entry->type & HTT_ASM_KEYWORD && cc->hash_entry->user_data0 == AKW_DUP) + { + is_dup = TRUE; + + if (Lex(cc) != '(') + LexExcept(cc, "Expecting '(' at "); + Lex(cc); //skip ( - dup_val=AsmLexExpression(cc); - if (cc->token!=')') - LexExcept(cc,"Expecting ')' at "); + dup_val = AsmLexExpression(cc); + + if (cc->token != ')') + LexExcept(cc, "Expecting ')' at "); + Lex(cc); //SKIP ) } } - num2.rel=0; - num2.imm_flag=TRUE; - num2.num.abs_counts=cc->abs_counts; - if (is_dup) { + num2.rel = 0; + num2.imm_flag = TRUE; + num2.num.abs_counts = cc->abs_counts; + if (is_dup) + { if (num2.num.local_asm_undef_hash || num2.num.global_asm_undef_hash) - LexExcept(cc,"Undefined DUP count at "); - num2.num.i=dup_val; - AsmStoreNum(cc,&num2,i,FALSE); - } else { - num2.num.i=i; - AsmStoreNum(cc,&num2,1,FALSE); + LexExcept(cc, "Undefined DUP count at "); + num2.num.i = dup_val; + AsmStoreNum(cc, &num2, i, FALSE); + } + else + { + num2.num.i = i; + AsmStoreNum(cc, &num2, 1, FALSE); } } if (cc->token==',') Lex(cc); } if (cc->token!=';') - LexExcept(cc,"Missing ';' at"); + LexExcept(cc, "Missing ';' at "); + Lex(cc); } U0 ParseBinFile(CCompCtrl *cc) { - I64 i,size; - U8 *buf,*st; - if (cc->token!=TK_STR) - LexExcept(cc,"Expecting string at "); - st=ExtDefault(cc->cur_str,"BIN"); - buf=FileRead(st,&size); + I64 i, size; + U8 *buf, *st; + + if (cc->token != TK_STR) + LexExcept(cc, "Expecting string at "); + + st = ExtDefault(cc->cur_str, "BIN"); + buf = FileRead(st, &size); Free(st); - for (i=0;iaotc; - I64 i,j,k,argcount, - old_flags=cc->flags & CCF_ASM_EXPRESSIONS; + CAOTCtrl *aotc = cc->aotc; + I64 i, j, k, argcount, old_flags = cc->flags & CCF_ASM_EXPRESSIONS; CHashOpcode *tmpo; CHashExport *tmpex; U8 *next_last_label; CCodeMisc *g_lb; - aotc->seg_size=64; - cc->flags|=CCF_ASM_EXPRESSIONS; - if (!(comp_flags&CMPF_ONE_ASM_INS)) { - if (cc->token!='{') - LexExcept(cc,"Expecting '{' at "); + aotc->seg_size = 64; + cc->flags |= CCF_ASM_EXPRESSIONS; + + if (!(comp_flags & CMPF_ONE_ASM_INS)) + { + if (cc->token != '{') + LexExcept(cc, "Expecting '{' at "); + Lex(cc); } - while (cc->token && cc->token!='}') { + + while (cc->token && cc->token!='}') + { AsmLineList(cc); - if (cc->token==TK_IDENT && cc->hash_entry) { - if (cc->hash_entry->type&HTT_ASM_KEYWORD) { - i=cc->hash_entry->user_data0; + + if (cc->token == TK_IDENT && cc->hash_entry) + { + if (cc->hash_entry->type & HTT_ASM_KEYWORD) + { + i = cc->hash_entry->user_data0; Lex(cc); //skip keyword - switch (i) { + + switch (i) + { case AKW_IMPORT: - while (cc->token && cc->token!=';') { - if (cc->token!=TK_IDENT) - LexExcept(cc,"Expecting identifier at "); - else { - tmpex=NULL; - tmpex=CAlloc(sizeof(CHashExport)); - tmpex->str=cc->cur_str; - cc->cur_str=0; - tmpex->type=HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED; - HashAdd(tmpex,cc->htc.global_hash_table); - tmpex->type|=HTF_IMPORT; - if (Lex(cc)==',') + while (cc->token && cc->token != ';') + { + if (cc->token != TK_IDENT) + LexExcept(cc, "Expecting identifier at "); + else + { + tmpex = NULL; + tmpex = CAlloc(sizeof(CHashExport)); + tmpex->str = cc->cur_str; + cc->cur_str = NULL; + tmpex->type = HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED; + HashAdd(tmpex, cc->htc.global_hash_table); + tmpex->type |= HTF_IMPORT; + if (Lex(cc) == ',') Lex(cc); //skip ',' } } - if (cc->token!=';') - LexExcept(cc,"Missing ';' at"); + + if (cc->token != ';') + LexExcept(cc, "Missing ';' at"); Lex(cc); //skip ';'; break; case AKW_ORG: if (cc->htc.local_var_list) - LexExcept(cc,"ORG not allowed in fun asm blk "); - if (aotc->org!=INVALID_PTR) - LexExcept(cc,"Just one org allowed "); + LexExcept(cc, "ORG not allowed in function asm blk "); + + if (aotc->org != INVALID_PTR) + LexExcept(cc, "Only one ORG allowed "); + if (aotc->rip) - LexExcept(cc,"ORG must be at beginning "); - aotc->org=AsmLexExpression(cc); + LexExcept(cc, "ORG must be at beginning "); + + aotc->org = AsmLexExpression(cc); break; case AKW_ALIGN: if (cc->htc.local_var_list) - LexExcept(cc,"ALIGN not allowed in fun asm blk "); - i=AsmLexExpression(cc); - j=Bsf(i); - if (!i || j!=Bsr(i)) - LexExcept(cc,"ALIGN must be power of two at "); - if (!(cc->flags&CCF_AOT_COMPILE) && i>8) - LexExcept(cc,"In JIT mode, max ALIGN is 8 "); - if (j>aotc->max_align_bits) aotc->max_align_bits=j; - i=CeilU64(aotc->rip,i); + LexExcept(cc, "ALIGN not allowed in function asm blk "); + + i = AsmLexExpression(cc); + j = Bsf(i); + if (!i || j != Bsr(i)) + LexExcept(cc, "ALIGN must be power of two at "); + + if (!(cc->flags & CCF_AOT_COMPILE) && i > 8) + LexExcept(cc, "In JIT mode, max ALIGN is 8 "); + + if (j > aotc->max_align_bits) + aotc->max_align_bits = j; + + i = CeilU64(aotc->rip, i); + if (cc->token!=',') - LexExcept(cc,"Expecting ',' at "); + LexExcept(cc, "Expecting ',' at "); + Lex(cc); - k=AsmLexExpression(cc); - for (j=aotc->rip;jrip; j < i; j++) + AOTStoreCodeU8(cc, k); break; case AKW_DU8: - ParseAsmDefine(cc,1); + ParseAsmDefine(cc, 1); break; case AKW_DU16: - ParseAsmDefine(cc,2); + ParseAsmDefine(cc, 2); break; case AKW_DU32: - ParseAsmDefine(cc,4); + ParseAsmDefine(cc, 4); break; case AKW_DU64: - ParseAsmDefine(cc,8); + ParseAsmDefine(cc, 8); break; case AKW_BINFILE: ParseBinFile(cc); break; case AKW_LIST: - aotc->list=TRUE; + aotc->list = TRUE; break; case AKW_NOLIST: - aotc->list=FALSE; + aotc->list = FALSE; break; case AKW_USE16: - aotc->seg_size=16; + aotc->seg_size = 16; break; case AKW_USE32: - aotc->seg_size=32; + aotc->seg_size = 32; break; case AKW_USE64: - aotc->seg_size=64; + aotc->seg_size = 64; break; default: - LexExcept(cc,"Syntax error at "); + LexExcept(cc, "Syntax error at "); } - } else if (cc->hash_entry->type & HTT_OPCODE) { - tmpo=cc->hash_entry; + } + else if (cc->hash_entry->type & HTT_OPCODE) + { + tmpo = cc->hash_entry; Lex(cc); //skip opcode - argcount=0; - if (tmpo->ins[0].arg1) { + argcount = 0; + + if (tmpo->ins[0].arg1) + { argcount++; - if (ARGt_REL8<=tmpo->ins[0].arg1<=ARGt_REL32) - ParseAsmArg(cc,&aotc->arg1,TRUE); + + if (1 << tmpo->ins[0].arg1 & ARGG_REL) + ParseAsmArg(cc, &aotc->arg1, TRUE); else - ParseAsmArg(cc,&aotc->arg1,FALSE); - if (tmpo->ins[0].arg2) { + ParseAsmArg(cc, &aotc->arg1, FALSE); + + if (tmpo->ins[0].arg2) + { argcount++; - if (cc->token!=',') - LexExcept(cc,"Expecting ',' at "); - else { + + if (cc->token != ',') + LexExcept(cc, "Expecting ',' at "); + else + { Lex(cc); //skip ',' - if (ARGt_REL8<=tmpo->ins[0].arg2<=ARGt_REL32) - ParseAsmArg(cc,&aotc->arg2,TRUE); + + if (1 << tmpo->ins[0].arg2 & ARGG_REL) + ParseAsmArg(cc, &aotc->arg2, TRUE); else - ParseAsmArg(cc,&aotc->arg2,FALSE); + ParseAsmArg(cc, &aotc->arg2, FALSE); } } } - ParseAsmInst(cc,tmpo,argcount); - } else if (cc->hash_entry->type & HTT_EXPORT_SYS_SYM) { - if (Btr(&cc->hash_entry->type,HTf_UNRESOLVED)) { - if (cc->hash_entry->type & HTF_LOCAL) { - cc->hash_entry(CHashExport *)->val=aotc->rip; - if (Lex(cc)!=':') - LexExcept(cc,"Expecting ':' at "); + ParseAsmInst(cc, tmpo, argcount); + } + else if (cc->hash_entry->type & HTT_EXPORT_SYS_SYM) + { + if (Btr(&cc->hash_entry->type, HTf_UNRESOLVED)) + { + if (cc->hash_entry->type & HTF_LOCAL) + { + cc->hash_entry(CHashExport *)->val = aotc->rip; + + if (Lex(cc) != ':') + LexExcept(cc, "Expecting ':' at "); + Lex(cc); - } else { + } + else + { if (cc->hash_entry->type & HTF_IMPORT) - LexExcept(cc,"attempt to define import at "); - cc->hash_entry(CHashExport *)->val=aotc->rip; - next_last_label=cc->hash_entry->str; + LexExcept(cc, "Attempt to define import at "); + + cc->hash_entry(CHashExport *)->val = aotc->rip; + next_last_label = cc->hash_entry->str; Lex(cc); //Skip cur_str - if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"Expecting ':' at "); - if (cc->token==TK_DBL_COLON) { - cc->hash_entry->type|=HTF_EXPORT; - HashSrcFileSet(cc,cc->hash_entry); + + if (cc->token != ':' && cc->token != TK_DBL_COLON) + LexExcept(cc, "Expecting ':' at "); + + if (cc->token == TK_DBL_COLON) + { + cc->hash_entry->type |= HTF_EXPORT; + HashSrcFileSet(cc, cc->hash_entry); AOTLocalsResolve(cc); - aotc->last_label=next_last_label; + aotc->last_label = next_last_label; } Lex(cc); } - } else if (cc->hash_entry(CHashExport *)->val==aotc->rip) { - Lex(cc); //Skip cur_str - if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"Expecting ':' at "); - Lex(cc); - } else - LexExcept(cc,"Redefinition at "); - } else - LexExcept(cc,"Syntax error at "); - } else if (cc->token==TK_IDENT) { - tmpex=CAlloc(sizeof(CHashExport)); - tmpex->str=cc->cur_str; - cc->cur_str=0; - tmpex->type=HTT_EXPORT_SYS_SYM; - tmpex->val=aotc->rip; - Lex(cc); //Skip cur_str - if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"Expecting ':' at "); - else { - if (*tmpex->str=='@' && tmpex->str[1]=='@') { - if (cc->token==TK_DBL_COLON) - LexExcept(cc,"No local glbl exports at "); - HashAdd(tmpex,cc->htc.local_hash_table); - } else - HashAdd(tmpex,cc->htc.global_hash_table); - if (cc->htc.local_var_list) {//AsmBlk in fun? Also add goto-like label. - if (!(g_lb=COCGoToLabelFind(cc,tmpex->str))) { - g_lb=COCMiscNew(cc,CMT_ASM_LABEL); - g_lb->str=StrNew(tmpex->str); - } else if (g_lb->flags&CMF_DEFINED) - LexExcept(cc,"Duplicate goto label at "); - g_lb->type=CMT_ASM_LABEL; - g_lb->flags|=CMF_DEFINED; - g_lb->rip=aotc->rip; - g_lb->use_count++; //Disable warning on unused labels. - ICAdd(cc,IC_LABEL,g_lb,0); } - if (cc->token==TK_DBL_COLON) { - tmpex->type|=HTF_EXPORT; - HashSrcFileSet(cc,tmpex); + else if (cc->hash_entry(CHashExport *)->val == aotc->rip) + { + Lex(cc); //Skip cur_str + if (cc->token != ':' && cc->token != TK_DBL_COLON) + LexExcept(cc, "Expecting ':' at "); + Lex(cc); + } + else + LexExcept(cc, "Redefinition at "); + } + else + LexExcept(cc, "Syntax error at "); + } + else if (cc->token == TK_IDENT) + { + tmpex = CAlloc(sizeof(CHashExport)); + tmpex->str = cc->cur_str; + cc->cur_str = NULL; + tmpex->type = HTT_EXPORT_SYS_SYM; + tmpex->val = aotc->rip; + Lex(cc); //Skip cur_str + if (cc->token!=':' && cc->token != TK_DBL_COLON) + LexExcept(cc, "Expecting ':' at "); + else + { + if (*tmpex->str == '@' && tmpex->str[1] == '@') + { + if (cc->token == TK_DBL_COLON) + LexExcept(cc, "No local global exports at "); + HashAdd(tmpex, cc->htc.local_hash_table); + } + else + HashAdd(tmpex, cc->htc.global_hash_table); + + if (cc->htc.local_var_list) + {//AsmBlk in fun? Also add goto-like label. + if (!(g_lb = COCGoToLabelFind(cc, tmpex->str))) + { + g_lb = COCMiscNew(cc, CMT_ASM_LABEL); + g_lb->str = StrNew(tmpex->str); + } + else if (g_lb->flags & CMF_DEFINED) + LexExcept(cc, "Duplicate goto label at "); + + g_lb->type = CMT_ASM_LABEL; + g_lb->flags |= CMF_DEFINED; + g_lb->rip = aotc->rip; + g_lb->use_count++; //Disable warning on unused labels. + ICAdd(cc, IC_LABEL, g_lb, 0); + } + if (cc->token==TK_DBL_COLON) + { + tmpex->type |= HTF_EXPORT; + HashSrcFileSet(cc, tmpex); AOTLocalsResolve(cc); aotc->last_label=tmpex->str; } + Lex(cc); } - } else if (cc->token==';') + } + else if (cc->token == ';') Lex(cc); else - LexExcept(cc,"Syntax error at "); - if (comp_flags&CMPF_ONE_ASM_INS && (cc->token!=TK_IDENT || - !(tmpo=cc->hash_entry) || - !(tmpo->type&(HTT_OPCODE|HTT_ASM_KEYWORD)))) + LexExcept(cc, "Syntax error at "); + + if (comp_flags & CMPF_ONE_ASM_INS && (cc->token!=TK_IDENT || !(tmpo = cc->hash_entry) || !(tmpo->type & (HTT_OPCODE | HTT_ASM_KEYWORD)))) break; } AOTLocalsResolve(cc); - aotc->list=FALSE; - cc->flags&=cc->flags&~CCF_ASM_EXPRESSIONS|old_flags; + aotc->list = FALSE; + cc->flags &= cc->flags & ~CCF_ASM_EXPRESSIONS | old_flags; } diff --git a/src/Compiler/ParseExp.CC b/src/Compiler/ParseExp.CC index 35ac2fe9..e0fc02a8 100755 --- a/src/Compiler/ParseExp.CC +++ b/src/Compiler/ParseExp.CC @@ -151,7 +151,7 @@ pe_check_binary_ops2: if (stack_op.u16[0]==IC_DEREF && tmpc->ptr_stars_count) tmpc--; else if (stack_op.u16[0]==IC_ADDR) { - cc->abs_counts.c_addres++; + cc->abs_counts.c_address++; if (intermediate_code_table[tmpi->ic_code].type==IST_DEREF) OptFree(tmpi); tmpc++; @@ -644,12 +644,12 @@ I64 ParseUnaryTerm(CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var, ICAdd(cc,IC_ABS_ADDR, tmpf->exe_addr,comp.internal_types[RT_PTR]); if (cc->flags&CCF_ASM_EXPRESSIONS) - cc->abs_counts.abs_addres++; + cc->abs_counts.abs_address++; } else ICAdd(cc,IC_IMM_I64, tmpf->exe_addr,comp.internal_types[RT_PTR]); } - cc->abs_counts.c_addres++; + cc->abs_counts.c_address++; Lex(cc); return PE_MAYBE_MODIFIERS; } @@ -657,7 +657,7 @@ I64 ParseUnaryTerm(CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var, tmpex=tmpc; if (cc->flags&CCF_ASM_EXPRESSIONS && !(cc->flags&CCF_AOT_COMPILE) && tmpex->type&HTF_IMM) { - cc->abs_counts.c_addres++; + cc->abs_counts.c_address++; ICAdd(cc,IC_IMM_I64, tmpex->val,comp.internal_types[RT_PTR]); Lex(cc); @@ -706,7 +706,7 @@ I64 ParseUnaryTerm(CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var, break; case '$$': if (cc->flags & CCF_ASM_EXPRESSIONS) { - cc->abs_counts.abs_addres++; + cc->abs_counts.abs_address++; if (cc->flags&CCF_AOT_COMPILE) ICAdd(cc,IC_ABS_ADDR,cc->aotc->rip,comp.internal_types[RT_PTR]); else @@ -833,7 +833,7 @@ pu_export_sys_sym: if (PREC_TERM>*max_prec) *max_prec=PREC_TERM; if (!(tmpex->type & (HTF_IMM|HTF_IMPORT))) - cc->abs_counts.abs_addres++; + cc->abs_counts.abs_address++; if (tmpex->type & HTF_UNRESOLVED) { if (!(cc->flags&CCF_ASM_EXPRESSIONS)) LexExcept(cc,"Illegal forward ref at "); @@ -853,7 +853,7 @@ pu_export_sys_sym: ICAdd(cc,IC_ABS_ADDR,tmpex->val,comp.internal_types[RT_PTR]); else { if (tmpex->type&HTF_IMM) - cc->abs_counts.c_addres++; + cc->abs_counts.c_address++; ICAdd(cc,IC_IMM_I64,tmpex->val,comp.internal_types[RT_PTR]); } } diff --git a/src/Home/K.CC b/src/Home/K.CC index ce600a70..453a2a30 100755 --- a/src/Home/K.CC +++ b/src/Home/K.CC @@ -1,4 +1,4 @@ -In("CC\n\n1\n\n6\n\n\n"); +In("CC\n\n1\n\n5\n\n\n"); BootHDIns; "\n\nSuccessful? "; if(YorN) diff --git a/src/Kernel/KStart32.CC b/src/Kernel/KStart32.CC index 1bbe4bf8..63fce40d 100755 --- a/src/Kernel/KStart32.CC +++ b/src/Kernel/KStart32.CC @@ -91,8 +91,8 @@ CORE0_32BIT_INIT:: //Entry point for $LK,"BootRAM",A="MN:BootRAM"$. MOV ESP, BOOT_RAM_LIMIT //Tmp Stack //Patch abs addresses - MOV ECX, U32 CPatchTableAbsAddr.abs_addres_count[ESI] - LEA ESI, U32 CPatchTableAbsAddr.abs_addres[ESI] + MOV ECX, U32 CPatchTableAbsAddr.abs_address_count[ESI] + LEA ESI, U32 CPatchTableAbsAddr.abs_address[ESI] @@05: LODSD ADD EAX, EDI ADD U32 [EAX],EDI diff --git a/src/Kernel/KernelA.HH b/src/Kernel/KernelA.HH index 8c849149..73a2ba35 100755 --- a/src/Kernel/KernelA.HH +++ b/src/Kernel/KernelA.HH @@ -440,9 +440,9 @@ class CBinFile class CPatchTableAbsAddr { U8 eit_abs_addr; //$LK,"IET_ABS_ADDR",A="MN:IET_ABS_ADDR"$ - U32 abs_addres_count; + U32 abs_address_count; U8 zero; - U32 abs_addres[1]; + U32 abs_address[1]; }; //$LK,"CAOTImportExport",A="MN:CAOTImportExport"$ Types. Used in PatchTable. @@ -1940,8 +1940,8 @@ class CAOTBinBlk I64 class CAbsCountsI64 { - U16 abs_addres, //Only odd/even matters. Count of absolute addres in an exp. - c_addres; //Only odd/even matters. Count of C addres in an exp. + U16 abs_address, //Only odd/even matters. Count of absolute address in an exp. + c_address; //Only odd/even matters. Count of C address in an exp. U32 externs; //Only nonzero matters. Some regions have externs banned. }; @@ -1962,7 +1962,7 @@ class CAsmNum class CAsmNum2 { CAsmNum num; - I64 U8_count,rel; + I64 u8_count,rel; Bool imm_flag; }; @@ -1970,7 +1970,7 @@ class CAsmInst { CInst *tmpins; CAsmNum2 imm,disp; - I64 U8_count,last_opcode_U8, + I64 u8_count,last_opcode_U8, REX,ModrM,SIB; Bool has_REX,has_ModrM,has_SIB, has_addr_prefix,