日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C指针原理(12)-C指针基础

發布時間:2025/3/12 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C指针原理(12)-C指针基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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_64DEF_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)

先從幾個重要文件入手。

libtcc.c/TCC - Tiny C CompilerCopyright (c) 2001-2004 Fabrice BellardThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/#include "tcc.h"/****/ / global variables / 使用GCC擴展還是TCC擴展/ use GNU C extensions / ST_DATA int gnu_ext = 1;/ use TinyCC extensions / ST_DATA int tcc_ext = 1;ST_DATA 結構標注TCC狀態。 / XXX: get rid of this ASAP / ST_DATA struct TCCState *tcc_state;/****/ 根據標志包含一些相應TCC文件。#ifdef ONE_SOURCE #include "tccpp.c" #include "tccgen.c" #include "tccelf.c" #include "tccrun.c" #ifdef TCC_TARGET_I386 #include "i386-gen.c" #endif #ifdef TCC_TARGET_ARM #include "arm-gen.c" #endif #ifdef TCC_TARGET_C67 #include "c67-gen.c" #endif #ifdef TCC_TARGET_X86_64 #include "x86_64-gen.c" #endif #ifdef CONFIG_TCC_ASM #include "tccasm.c" #if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64 #include "i386-asm.c" #endif #endif #ifdef TCC_TARGET_COFF #include "tcccoff.c" #endif #ifdef TCC_TARGET_PE #include "tccpe.c" #endif #endif / ONE_SOURCE /CONFIG_TCC_ASM打開內聯匯編的開關 /****/ #ifndef CONFIG_TCC_ASM ST_FUNC void asm_instr(void) {tcc_error("inline asm() not supported"); } ST_FUNC void asm_global_instr(void) {tcc_error("inline asm() not supported"); } #endif

總結

以上是生活随笔為你收集整理的C指针原理(12)-C指针基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。