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)

  • 相关阅读:
    缓冲区设置JAVA NIO 缓冲区
    互联网腾讯马化腾:微信拿到只是“站票” 我还会有紧迫感
    能力江湖做生意的能力
    指针对象C++ primer智能指针(HasPtr)实现
    脚本测试tsung
    字符搜索正则表达式语法详解
    【转载】表变量与临时表,变量表都以@或@@为前缀;临时表都以#或##为前缀
    ws2008
    【转载】Coolite之TreePanel右键功能菜单
    [转载]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3424030.html
Copyright © 2011-2022 走看看