亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? analysis.c

?? 非常好的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
                showline = 0;
            }
            forest = cp->u.forest;
            relink(&sentinel, &sentinel);
            for (p = forest; p; p = p->link)
                linearize(p, &sentinel);
            forest = sentinel.x.next;
            assert(forest);
            sentinel.x.next->x.prev = NULL;
            sentinel.x.prev->x.next = NULL;
			if (last == NULL)
				root = forest;
            for (p=forest;p;p=p->x.next) {
                if (cp->kind == Jump && last && p->x.next == NULL) {
                    int op = generic(last->op);
                    if (op == EQ || op == LE || op == NE ||
                        op == LT || op == GE || op == GT) {
//						printf("--- %s --- ",p->kids[0]->syms[0]->name);
//						printf("%s\n",last->syms[0]->name);
                        jInfo.conditional = last;
                        jInfo.cpJump = cp;
                        jInfo.Jump = p;
                        watchout = last;
                    }
                }
                else if (cp->kind == Label && watchout) {
                    int op;
                    if (p->syms[0]->u.l.label == watchout->syms[0]->u.l.label) {
//						printf("foundit: %d: jump=%d\n",p->syms[0]->u.l.label,
//							last->kids[0]->syms[0]->u.l.label);
                        assert(jInfo.cpJump);
                        assert(jInfo.cpJump->prev);
                        assert(JumpNodeTable[JumpNodeIndex-1] == jInfo.Jump);
                        assert(JumpNodeTable[JumpNodeIndex-2] == jInfo.conditional);
                        assert(jInfo.cpJump->u.forest->x.next == NULL);
                        /* change the sense of the jcc */
                        switch (jInfo.conditional->op) {
                        case EQI:
                            op = NEI;
                            break;
                        case LEI:
                            op = GTI;
                            break;
                        case LEU:
                            op = GTU;
                            break;
                        case NEI:
                            op = EQI;
                            break;
                        case LTI:
                            op = GEI;
                            break;
                        case LTU:
                            op = GEU;
                            break;
                        case GEI:
                            op = LTI;
                            break;
                        case GEU:
                            op = LTU;
                            break;
                        case GTI:
                            op = LEI;
                            break;
                        case GTU:
                            op = LEU;
                            break;
                        default:
                            goto bailout;
                        }
                        jInfo.conditional->op = op;
                        jInfo.conditional->syms[0] = jInfo.Jump->kids[0]->syms[0];
                        /* erase the jump */
                        jInfo.cpJump->prev->next = jInfo.cpJump->next;
                        jInfo.cpJump->next->prev = jInfo.cpJump->prev;
                        /* fixup the jump table */
                        JumpNodeTable[--JumpNodeIndex] = NULL;
                        JumpNodeTable[--JumpNodeIndex] = NULL;
                        JumpNodeTable[JumpNodeIndex++] = jInfo.conditional;
                        succIdx -= 2; // erase the jump from the successors table
                        successorsTable[succIdx] = successorsTable[succIdx+1];
                        succIdx++;
                        successorsTable[succIdx] = 0;
                        endswithjump = 0;
                    }
bailout:
                    memset(&jInfo,0,sizeof(jmpInfo));
                    watchout = NULL;
                }
                else watchout = NULL;
                maxdepth = 0;
                hasDangerousOp = 0;
//				dumptree(p,0);
//				printf("\n");
                FindSymbols(p,1);
                if (hasDangerousOp) {
                    SaturateUnsafe(p);
                    unsafe = 1;
                }
                p->x.unsafe = unsafe;
                Printf2("\n",0);
                last = p;
            }
            break;
        case Switch:
            l = cp->u.swtch.size;
            if (l + succIdx >= MAXSUCCESORS) {
                printf(StrTab[422]);// <Overflow in switch\n>
                l = MAXSUCCESORS - l;
            }
            Printf2("switch size %d \n",cp->u.swtch.size);
            for (i=0; i<l;i++) {
                cp->u.swtch.labels[i]->ref += 1.0;
                n = equated(cp->u.swtch.labels[i]);
                successorsTable[succIdx] = n->u.l.label;
                succIdx++;
            }
            break;

        }
        previous = cp;
    }
    FinishBlock();
    return result;
}
//enum { EAX=0, ECX=1, EDX=2, EBX=3, ESI=6, EDI=7 };
extern Symbol intreg[];
void AnalyzeSecondPass(void)
{
    int i,k,l,ialias,op,lastpoint,z,swapRegs;
    Code cp;
    Node p,last;
    Symbol lab,oldreg[2],newreg[2],lastLabel;

    i = 0;
    while (i < aliasIndex) {
        ialias = AliasTable[i].alias;
        lastpoint = i;
        p = AliasTable[i].plabel;
        if (p->x.next || p->x.prev) {
            printf("inner label\n");
        }
        i++;
        while (ialias == AliasTable[i].label) {
            ialias = AliasTable[i].alias;
            i++;
        }
        lab = findlabel(ialias);
        for (k=0; k<JumpNodeIndex;k++) {
            p = JumpNodeTable[k];
            if (p == NULL)
                continue;
            op = generic(p->op);
            if (op == JUMP)
                l = p->kids[0]->syms[0]->u.l.label;
            else
                l = p->syms[0]->u.l.label;
            if (l == 0)
                printf(StrTab[423]);// <l == 0?????\n>
            for (z=lastpoint; z<i;z++) {
                if (l == AliasTable[z].label) {
                    if (op == JUMP) {
                        p->kids[0]->syms[0]->u.l.equatedto = lab;
                        p->kids[0]->syms[0] = lab;
                    }
                    else {
                        p->syms[0]->u.l.equatedto = lab;
                        p->syms[0] = lab;
                    }
                    JumpNodeTable[k] = NULL;
                    break;
                }
            }
        }
    }
    for (i=0; i<JumpNodeIndex;i++) {
        if (JumpNodeTable[i]) {
            char *n;
            p = JumpNodeTable[i];
            op = generic(p->op);
            if (op == JUMP) {
                l = p->kids[0]->syms[0]->u.l.label;
                n = p->kids[0]->syms[0]->name;
            }
            else {
                l = p->syms[0]->u.l.label;
                n = p->syms[0]->name;
            }
            if (l == 0) {
                printf(StrTab[424],n);// <Label _$%s not changed!!!!\n>
            }
        }
    }
    swapRegs = 0;
    if (OptimizeFlag && FunctionInfo.leafFunction
        && FunctionInfo.hasBlockMove == 0) {
        if ((usedmask[0] & (1 << 1)) == 0 &&
            (usedmask[0] & (1 << 7))) {
            /* swap edi with ecx */
            oldreg[0] = intreg[7];
            newreg[0] = intreg[1];
            swapRegs = 1;
            usedmask[0] |= (1 << 1);
            usedmask[0] &= ~(1 << 7);
            if (IntermediateLanguageFile) {
                fprintf(ilFile,"; interchanging edi with ecx\n");
            }
        }
        else
        if ((usedmask[0] & (1 << 1)) == 0 &&
            (usedmask[0] & (1 << 6))) {
            /* swap esi with ecx */
            oldreg[swapRegs] = intreg[6];
            newreg[swapRegs] = intreg[1];
            swapRegs++;
            usedmask[0] |= (1 << 1);
            usedmask[0] &= ~(1 << 6);
            if (IntermediateLanguageFile) {
                fprintf(ilFile,"; interchanging esi with ecx\n");
            }
        }
        else
        if ((usedmask[0] & (1 << 1)) == 0 &&
            (usedmask[0] & (1 << 3))) {
            /* swap ebx with ecx */
            oldreg[swapRegs] = intreg[3];
            newreg[swapRegs] = intreg[1];
            swapRegs++;
            usedmask[0] |= (1 << 1);
            usedmask[0] &= ~(1 << 3);
            if (IntermediateLanguageFile) {
                fprintf(ilFile,"; interchanging ebx with ecx\n");
            }
        }
    }
    FunctionInfo.SwappedRegs = swapRegs ? 1 : 0;
    /*
    Redo the list of nodes to erase the unnecessary labels
    */
    lastLabel = NULL;
    for (cp = codehead.next; cp; cp = cp->next) {
        // This time follow only Jump/Gen/Label Code nodes
        switch (cp->kind) {
        case Jump:
        case Gen:
        case Label:
            // Follow all the nodes of this forest
            last = NULL;
            for (p=cp->u.forest;p;p=p->x.next) {
                if (generic(p->op) == LABEL) {	// If it is a LABEL node
                    // If it has been erased by the loops above
                    lab = p->syms[0];
                    if (lab->u.l.equatedto || lab->u.l.label == 0) {
                        Printf2("Erasing label %s\n",p->syms[0]->name);
                        //If is a middle node unlink it
#if 1
                        if (last) {
                            last->x.next = p->x.next;
                            if (p->x.next)
                                p->x.next->x.prev = last;
                        }
                        else {
                            // This is the first node in the forest
                            if (p->x.next) // If there are more nodes
                                cp->u.forest = p->x.next; // unlink
                            else {
                                // No more nodes. Delete the forest
                                cp->prev->next = cp->next;
                                cp->next->prev = cp->prev;
                            }
                        }
#endif
                    }
                    else {
                        lastLabel = lab;
                    }
                }
                if (swapRegs)
                    for (i=0; i<swapRegs;i++)
                        ReplaceReg(p,oldreg[i],newreg[i]);
                // Keep the pointer to the last node
                last = p;
            }
            break;
#ifdef DOPRINTF
        case Blockbeg:{
                Symbol         *p = cp->u.block.locals;
                if (*p == NULL) break;
                Printf2("Scope %d:\n",cp->u.block.x.offset);
                for (; *p; p++) {
                    Printf2("%s",(*p)->name);
                    if (p[1]) Printf2(",",0);
                }
                Printf2("\n",0);
            }
            break;
#endif
        }
    }
    if (lastLabel) {
        cfunc->u.f.label = lastLabel->u.l.label;
    }
#ifdef DOPRINTF
    rvpB = RootBlock;
    printf("\nControl flow analysis\n");
    while (rvpB) {
        printf("Block %d line %d:",rvpB->Label,rvpB->src.y);
        if (rvpB->hasCalls) printf("Has calls ");
        else printf("no calls ");
        if (rvpB->NrOfSuccessors) {
            printf(" %d successors: ",rvpB->NrOfSuccessors);
            for (i=0; i<rvpB->NrOfSuccessors;i++) {
                printf(" %d ",rvpB->Successors[i]);
            }
        }
        if (rvpB->EndsWithJump)
            printf(" end: JUMP");
        printf("\n");
        if (rvpB->NrOfPredecessors) {
            printf("Predecessors %d:",rvpB->NrOfPredecessors);
            for (i=0; i<rvpB->NrOfPredecessors;i++) {
                printf(" %d",rvpB->Predecessors[i]);
            }
            printf("\n");
        }
        else if (rvpB->Label && rvpB->Next) {
//			printf("Block %d has no predecessors?\n",rvpB->Label);
        }
        asl = rvpB->DefUse;
        while (asl) {
            if (asl->lhs) {
                printf(" %s =",asl->lhs->sym->name);
            }
            else
                printf("Uses: ");
            rhs = asl->rhs;
            while (rhs) {
                if (rhs->sym->scope == CONSTANTS)
                    printf("constant ");
                printf(" %s",rhs->sym->name);
                rhs = rhs->Next;
            }
            Printf2("\n",0);
            asl = asl->Next;
        }
        if (rvpB->DefUse)
            printf("\n");
        rvpB = rvpB->Next;
    }
    if (aliasIndex) {
        printf("Label alias table\n");
        for (i=0; i<aliasIndex;i++) {
            printf("%d --> %d\n",AliasTable[i].label,AliasTable[i].alias);
        }
    }
#endif
    lastBlock = RootBlock = NULL;
}

int HasSwappedRegs(void)
{
    return FunctionInfo.SwappedRegs ? 1 : 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久人人超碰| 成人一级视频在线观看| 九九精品一区二区| 99久久精品国产麻豆演员表| 日韩三级精品电影久久久| 日韩在线观看一区二区| 成人少妇影院yyyy| 精品国产成人在线影院| 天天综合网 天天综合色| 99精品国产视频| 国产色产综合色产在线视频| 天堂va蜜桃一区二区三区| 色综合久久综合中文综合网| 久久久精品影视| 久久99精品网久久| 欧美一级欧美一级在线播放| 亚洲综合色噜噜狠狠| 色视频欧美一区二区三区| 亚洲欧洲日韩在线| 不卡的av电影| 国产精品日产欧美久久久久| 国产99精品在线观看| 精品国产伦一区二区三区观看方式| 午夜影院久久久| 欧美日韩电影在线播放| 国产午夜精品久久久久久久 | 欧美绝品在线观看成人午夜影视| 国产精品久久久99| 成人ar影院免费观看视频| 国产丝袜美腿一区二区三区| 国产精品综合av一区二区国产馆| 精品美女在线观看| 国产成人免费视频精品含羞草妖精| 欧美精品一区二区在线播放| 久久99久久99| 久久蜜臀精品av| 成人免费视频国产在线观看| 国产精品国产三级国产普通话蜜臀| 国产成人精品www牛牛影视| 久久久精品人体av艺术| 成人国产精品免费观看视频| 国产精品初高中害羞小美女文| 99国产精品国产精品毛片| 亚洲四区在线观看| 精品国产乱码久久久久久夜甘婷婷| 国产网站一区二区| 国产激情视频一区二区在线观看 | 777色狠狠一区二区三区| 亚洲成av人片观看| 日韩欧美黄色影院| 狠狠色丁香婷婷综合| 国产欧美中文在线| 色综合久久综合中文综合网| 人人超碰91尤物精品国产| 久久九九久久九九| 欧美主播一区二区三区美女| 蜜桃视频第一区免费观看| 国产色婷婷亚洲99精品小说| 日本韩国视频一区二区| 日本不卡123| ●精品国产综合乱码久久久久| 91片黄在线观看| 精品久久久久久久久久久久久久久久久 | 久久精品男人的天堂| www.成人网.com| 青青草原综合久久大伊人精品| 久久影院视频免费| 在线精品视频一区二区| 国产精品一二一区| 亚洲精品成人精品456| 精品国产污网站| 色88888久久久久久影院按摩| 国精产品一区一区三区mba桃花 | 日韩和欧美一区二区三区| 久久精品视频免费观看| 欧美日韩国产免费| 成人午夜在线免费| 久久国产视频网| 亚洲综合在线第一页| 国产欧美日韩中文久久| 欧美日韩精品免费观看视频| 99精品欧美一区| 极品少妇xxxx精品少妇偷拍| 午夜视频一区二区三区| 亚洲色图视频网| 国产欧美日韩综合精品一区二区 | 美女尤物国产一区| 亚洲黄色免费电影| 国产精品午夜在线| 精品久久久久久综合日本欧美| 欧美日韩精品一区二区三区四区| www.日本不卡| 国产成人综合在线观看| 久久精品国产77777蜜臀| 亚洲第一主播视频| 亚洲一区影音先锋| 怡红院av一区二区三区| 国产精品久久久久毛片软件| 国产欧美一区二区精品仙草咪| 亚洲图片欧美激情| 欧美哺乳videos| 日韩一区二区三区精品视频 | 欧美成人午夜电影| 欧美日韩高清在线| 欧美日韩在线免费视频| 色综合久久88色综合天天免费| 国产高清亚洲一区| 国产美女精品在线| 国内成人自拍视频| 国产美女娇喘av呻吟久久| 韩国三级电影一区二区| 九九**精品视频免费播放| 麻豆免费精品视频| 狠狠色丁香婷婷综合| 精品制服美女丁香| 国产综合色产在线精品| 国产麻豆欧美日韩一区| 国产成人精品免费看| 成人性色生活片免费看爆迷你毛片| 国产成人自拍网| 成人精品国产一区二区4080| av在线综合网| 欧美制服丝袜第一页| 欧美日韩成人在线一区| 欧美一区中文字幕| xfplay精品久久| 国产精品久久午夜| 一区二区免费看| 日韩国产欧美一区二区三区| 蜜桃视频在线观看一区二区| 国产精品羞羞答答xxdd| www.欧美精品一二区| 欧美午夜不卡在线观看免费| 91精品国产高清一区二区三区蜜臀| 日韩一区二区免费在线电影| 久久色在线观看| 亚洲图片你懂的| 日韩精品免费视频人成| 国产一区福利在线| 成人免费观看av| 欧美中文字幕久久| 精品国产免费视频| 亚洲日本护士毛茸茸| 亚洲小说春色综合另类电影| 精品亚洲成a人| 91麻豆视频网站| 日韩三级在线观看| 亚洲欧洲av另类| 蜜臀精品一区二区三区在线观看| 国产精品1区二区.| 欧美亚男人的天堂| 国产欧美一区二区精品婷婷| 亚洲一区二区三区四区五区中文| 久久精品噜噜噜成人av农村| 99久久婷婷国产综合精品电影 | 欧美艳星brazzers| 精品久久久久香蕉网| 亚洲综合在线电影| 国产精品一区二区久久不卡| 欧美日韩中文一区| 国产精品不卡一区| 国产一区视频网站| 欧美浪妇xxxx高跟鞋交| 国产精品系列在线| 国产中文字幕一区| 欧美精品色一区二区三区| 国产精品久久看| 久久97超碰色| 日本伦理一区二区| 国产精品久久久久久福利一牛影视| 偷拍日韩校园综合在线| 91丨porny丨中文| 欧美国产日韩在线观看| 久久91精品国产91久久小草| 欧美最猛黑人xxxxx猛交| 亚洲欧洲色图综合| 懂色av一区二区三区免费看| 日韩三级.com| 午夜国产精品一区| 欧美日韩综合不卡| 亚洲最新在线观看| 一本一道综合狠狠老| 日本一区二区视频在线| 国产一区二区三区免费观看| 日韩欧美一二三| 狂野欧美性猛交blacked| 欧美日韩国产精选| 调教+趴+乳夹+国产+精品| 欧美在线观看一二区| 亚洲精品视频免费观看| 99精品黄色片免费大全| 国产精品传媒视频| 成人激情免费网站| 国产日韩三级在线| 国产精品性做久久久久久| 精品国产一区二区三区av性色| 蜜桃av一区二区| 精品电影一区二区| 国产精品1区2区| 中文字幕乱码日本亚洲一区二区|