最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C指針原理教程之C指針基礎(chǔ)

 更新時(shí)間:2019年02月07日 11:36:47   作者:myhaspl  
指針是一個(gè)特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個(gè)地址。要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針?biāo)赶虻念愋汀⒅羔樀闹祷蛘呓兄羔標(biāo)赶虻膬?nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。

tcctok.h定義了C語言的詞法分析的基本元素,主要定義了關(guān)鍵字。

/ 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")

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

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

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

同時(shí)定義了條件編譯的相關(guān)內(nèi)容

/*****/
/ 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中定義了匯編的相關(guān)關(guān)鍵詞

/ ------------------------------------------------------------------ /
/ 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位匯編相關(guān)關(guān)鍵字

     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)

先從幾個(gè)重要文件入手。

libtcc.c

/
  TCC - Tiny C Compiler
 
  Copyright (c) 2001-2004 Fabrice Bellard
 
 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 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 of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 Lesser General Public License for more details.
 
 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include "tcc.h"

/****/
/ global variables /
使用GCC擴(kuò)展還是TCC擴(kuò)展

/ use GNU C extensions /
ST_DATA int gnu_ext = 1;

/ use TinyCC extensions /
ST_DATA int tcc_ext = 1;

ST_DATA 結(jié)構(gòu)標(biāo)注TCC狀態(tài)。
/ XXX: get rid of this ASAP /
ST_DATA struct TCCState *tcc_state;

/****/

根據(jù)標(biāo)志包含一些相應(yīng)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打開內(nèi)聯(lián)匯編的開關(guān)
/****/
#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

相關(guān)文章

  • C語言鏈表實(shí)現(xiàn)簡單圖書管理系統(tǒng)

    C語言鏈表實(shí)現(xiàn)簡單圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言鏈表實(shí)現(xiàn)簡單圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++?OpenCV實(shí)現(xiàn)之實(shí)現(xiàn)紅綠燈識別

    C++?OpenCV實(shí)現(xiàn)之實(shí)現(xiàn)紅綠燈識別

    本文以實(shí)現(xiàn)行車過程當(dāng)中的紅綠燈識別為目標(biāo),核心的內(nèi)容包括:OpenCV輪廓識別原理以及OpenCV紅綠燈識別的實(shí)現(xiàn)具體步驟,感興趣的可以了解一下
    2022-08-08
  • 詳解應(yīng)用程序與驅(qū)動程序通信DeviceIoControl

    詳解應(yīng)用程序與驅(qū)動程序通信DeviceIoControl

    這種通信方式,就是驅(qū)動程序和應(yīng)用程序自定義一種IO控制碼,然后調(diào)用DeviceIoControl函數(shù),IO管理器會產(chǎn)生一個(gè)MajorFunction為IRP_MJ_DEVICE_CONTROL,MinorFunction為自己定義的控制碼的IRP,系統(tǒng)就調(diào)用相應(yīng)的處理IRP_MJ_DEVICE_CONTROL的派遣函數(shù)
    2021-06-06
  • C++ 整數(shù)拆分方法詳解

    C++ 整數(shù)拆分方法詳解

    整數(shù)拆分,指把一個(gè)整數(shù)分解成若干個(gè)整數(shù)的和。本文重點(diǎn)給大家介紹C++ 整數(shù)拆分方法詳解,非常不錯,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • 生成隨機(jī)數(shù)rand函數(shù)的用法詳解

    生成隨機(jī)數(shù)rand函數(shù)的用法詳解

    本篇文章是對生成隨機(jī)數(shù)rand函數(shù)的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 用Visual Studio2017寫C++靜態(tài)庫圖文詳解

    用Visual Studio2017寫C++靜態(tài)庫圖文詳解

    這篇文章主要介紹了用Visual Studio2017寫C++靜態(tài)庫的圖文教程,需要的朋友可以參考下
    2017-04-04
  • C++11學(xué)習(xí)之多線程的支持詳解

    C++11學(xué)習(xí)之多線程的支持詳解

    這篇文章主要為大家詳細(xì)介紹了C++11中多線程支持的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們深入了解C++11有一定的幫助,需要的可以參考一下
    2023-02-02
  • C++實(shí)現(xiàn)會員管理程序

    C++實(shí)現(xiàn)會員管理程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)會員管理程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 詳解C++中指針和引用的區(qū)別

    詳解C++中指針和引用的區(qū)別

    這篇文章主要介紹了C++中指針和引用的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C++實(shí)現(xiàn)一個(gè)簡單消息隊(duì)列的示例詳解

    C++實(shí)現(xiàn)一個(gè)簡單消息隊(duì)列的示例詳解

    消息隊(duì)列在多線程的場景有時(shí)會用到,尤其是線程通信跨線程調(diào)用的時(shí)候,就可以使用消息隊(duì)列進(jìn)行通信。本文將利用C++實(shí)現(xiàn)一個(gè)簡單的消息隊(duì)列,感興趣的可以了解一下
    2022-12-12

最新評論

景宁| 格尔木市| 郁南县| 来凤县| 贵港市| 广汉市| 南溪县| 弥渡县| 防城港市| 疏勒县| 青冈县| 桐乡市| 嵊州市| 吉安市| 河南省| 新蔡县| 仪征市| 沈丘县| 明水县| 汶上县| 报价| 博乐市| 澄江县| 荆州市| 根河市| 玛沁县| 茶陵县| 乌兰浩特市| 万荣县| 库车县| 彭泽县| 元氏县| 治县。| 彩票| 开江县| 砀山县| 江口县| 海兴县| 秭归县| 凯里市| 海原县|