zoukankan      html  css  js  c++  java
  • C指针原理(14)

    tcc源码分析

    本博客所有内容是原创,如果转载请注明来源

    http://blog.csdn.net/myhaspl/

    tcctok.h定义了C语言的词法分析的基本元素,主要定义了关键字。

    /* keywords */
         DEF(TOK_INT, "int")
         DEF(TOK_VOID, "void")
         DEF(TOK_CHAR, "char")
         DEF(TOK_IF, "if")
         DEF(TOK_ELSE, "else")
         DEF(TOK_WHILE, "while")
         DEF(TOK_BREAK, "break")
         DEF(TOK_RETURN, "return")
         DEF(TOK_FOR, "for")
         DEF(TOK_EXTERN, "extern")
         DEF(TOK_STATIC, "static")
         DEF(TOK_UNSIGNED, "unsigned")
         DEF(TOK_GOTO, "goto")
         DEF(TOK_DO, "do")
         DEF(TOK_CONTINUE, "continue")
         DEF(TOK_SWITCH, "switch")
         DEF(TOK_CASE, "case")

    ..............................

    ..............................

    ..............................

    同时定义了条件编译的相关内容

    /*********************************************************************/
    /* the following are not keywords. They are included to ease parsing */
    /* preprocessor only */
         DEF(TOK_DEFINE, "define")
         DEF(TOK_INCLUDE, "include")
         DEF(TOK_INCLUDE_NEXT, "include_next")
         DEF(TOK_IFDEF, "ifdef")
         DEF(TOK_IFNDEF, "ifndef")
         DEF(TOK_ELIF, "elif")
         DEF(TOK_ENDIF, "endif")
         DEF(TOK_DEFINED, "defined")

    在i386-tok.h中定义了汇编的相关关键词

    /* ------------------------------------------------------------------ */
    /* WARNING: relative order of tokens is important. */


    /* register */
     DEF_ASM(al)
     DEF_ASM(cl)
     DEF_ASM(dl)
     DEF_ASM(bl)
     DEF_ASM(ah)
     DEF_ASM(ch)
     DEF_ASM(dh)
     DEF_ASM(bh)
     DEF_ASM(ax)
     DEF_ASM(cx)
     DEF_ASM(dx)
     DEF_ASM(bx)
     DEF_ASM(sp)
     DEF_ASM(bp)
     DEF_ASM(si)
     DEF_ASM(di)
     DEF_ASM(eax)
     DEF_ASM(ecx)
     DEF_ASM(edx)
     DEF_ASM(ebx)
     DEF_ASM(esp)
     DEF_ASM(ebp)
     DEF_ASM(esi)
     DEF_ASM(edi)
    #ifdef TCC_TARGET_X86_64
     DEF_ASM(rax)
     DEF_ASM(rcx)
     DEF_ASM(rdx)

    ...........................

    ............................

    在x86_64-asm.h中定义了64位汇编相关关键字

         DEF_ASM_OP0(clc, 0xf8) /* must be first OP0 */
         DEF_ASM_OP0(cld, 0xfc)
         DEF_ASM_OP0(cli, 0xfa)
         DEF_ASM_OP0(clts, 0x0f06)
         DEF_ASM_OP0(cmc, 0xf5)
         DEF_ASM_OP0(lahf, 0x9f)
         DEF_ASM_OP0(sahf, 0x9e)
         DEF_ASM_OP0(pushfl, 0x9c)
         DEF_ASM_OP0(popfl, 0x9d)
         DEF_ASM_OP0(pushf, 0x9c)
         DEF_ASM_OP0(popf, 0x9d)
         DEF_ASM_OP0(stc, 0xf9)
         DEF_ASM_OP0(std, 0xfd)
         DEF_ASM_OP0(sti, 0xfb)
         DEF_ASM_OP0(aaa, 0x37)

  • 相关阅读:
    Acwing 164 可达性统计 (拓扑排序+bitset)
    STL-bitset的基本用法
    Acwing 115 给树染色 (贪心)
    Acwing 112 雷达设备 (贪心)
    Acwing 110 畜栏预定 (贪心+stl)
    Acwing 110 防晒 (贪心算法)
    Acwing 七夕祭 (前缀和+中位数+思维)
    Acwing 103 电影 (map)
    USACO 最佳牛围栏 (二分答案+前缀和+双指针)
    Acwing 101 最高的牛 (差分数组)
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3424030.html
Copyright © 2011-2022 走看看