gcc源代码分析,grokparms ()函数分析

arg_types = grokparms (TREE_OPERAND (declarator, 1),

funcdef_flag

/* Say it‘s a definition

only for the CALL_EXPR

closest to the identifier.  */

&& TREE_CODE (TREE_OPERAND (declarator, 0)) == IDENTIFIER_NODE);

<tree_list 956b0 permanent

purpose <parm_decl 941c0

type <pointer_type 9117c type <integer_type 91130* char>

permanent unsigned SI

size <integer_cst 8254c literal permanent 4

align 32 size_unit 8 sep_unit 32 symtab 0

chain <function_type 912c0>

unsigned SI file /usr/include/stdio.h line 214 size <integer_cst 8254c 4>

align 32 size_unit 8 offset 0 arguments <pointer_type 9117c>

chain <tree_list 95698 permanent value <pointer_type 9117c> chain <tree_list 95698>

after grokparms

<tree_list 95698 permanent

value <pointer_type 9117c

type <integer_type 91130 char readonly permanent QI

size <integer_cst 82638 literal permanent 1

align 8 size_unit 8 sep_unit 8 symtab 0

sep <integer_cst 82608 literal permanent -128 precision 8 min <integer_cst 82608 -128>

max <integer_cst 82620 literal permanent 127

pointer_to_this <pointer_type 9117c>

permanent unsigned SI

size <integer_cst 8254c literal permanent 4

align 32 size_unit 8 sep_unit 32 symtab 0

chain <function_type 912c0>

时间: 2024-10-20 06:12:16

gcc源代码分析,grokparms ()函数分析的相关文章

Windows内核分析——NtCreateDebugObject函数分析

第一篇分析Windows内核的文章,主要是加强学习记忆.以后会多写这种笔记,正如猪猪侠所说,所学的知识只有实践并且能够讲出来才能真正实现掌握. 程序来自ReactOS或WRK1.2 资料参考自<Windows内核情景分析>和<Windows 内核设计思想>以及网上文章和视频 NTSTATUS NtCreateDebugObject ( OUT PHANDLE DebugObjectHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_AT

gcc源代码分析,debug_tree()函数,又一利器啊

gcc源代码分析,debug_rtx()函数,利器啊 print-tree.c #include "config.h" #include "tree.h" #include <stdio.h> /* Names of tree components. Used for printing out the tree and error messages.  */ #define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,

gcc源代码分析,expand_call ()函数分析第五部分,store_one_arg ()函数

本文主要是分析store_one_arg ()函数和expand_expr ()的关系来说明如何处理 函数的参数.printf("Hello, world!\n");中的"Hello, world!\n"这个字符串常量的! expand_call () 函数中的相关代码: if (args[i].reg == 0 && TYPE_SIZE (TREE_TYPE (args[i].tree_value)) != 0) { fprintf(stderr,

Linux-0.11内核源代码分析系列:内存管理get_free_page()函数分析

Linux-0.11内存管理模块是源码中比較难以理解的部分,如今把笔者个人的理解发表 先发Linux-0.11内核内存管理get_free_page()函数分析 有时间再写其它函数或者文件的:) /*  *Author  : DavidLin  *Date    : 2014-11-11pm  *Email   : [email protected] or [email protected]  *world   : the city of SZ, in China  *Ver     : 000

Oracle官网JNI简介和接口函数分析

第一章 概述 本章主要介绍JNI(Java Native Interface),JNI是一种本地编程接口.它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言.C++.汇编,写的应用和库之间的交互操作. JNI的最大优势在于没有强加任何限制在JAVA虚拟机的下层实现上,因此,JAVA虚拟机供应商能够提供JNI的支持而不影响虚拟机的其他部分,程序员只需写出一个版本的本地应用和库,就可使之运行在一切支持JNI的JAVA虚拟机上. 本章包含了以下的要点: ? JNI概述 ? 目标 ?

page_address()函数分析--如何通过page取得虚拟地址

由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的. 一. x86上关于page_address()函数的定义 在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要依赖于不同的平台: 首先来看看几个宏的定义:CONFIG_HIGHMEM:顾名思义,就是是否支持高端内存,可以查看config文件,一般推荐内存超过896M的时候,才配置为支持高端内存.WANT_PAGE_VIRTUAL:X86平台

x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)

本文记录x264的 x264_slice_write()函数中调用的x264_macroblock_analyse()的源代码.x264_macroblock_analyse()对应着x264中的分析模块.分析模块主要完成了下面2个方面的功能: (1)对于帧内宏块,分析帧内预测模式(2)对于帧间宏块,进行运动估计,分析帧间预测模式 上一篇文章记录了帧内宏块预测模式的分析,本文继续记录帧间宏块预测模式的分析. 函数调用关系图 宏块分析(Analysis)部分的源代码在整个x264中的位置如下图所示

linux 内核移植(七)——rest_init函数分析

代码在start_kernel函数运行的最后到了rest_init()函数中 1:rest_init()函数分析 (1)rest_init中调用kernel_thread函数启动了2个内核线程,分别是:kernel_init和kthreadd (2)调用schedule函数开启了内核的调度系统,从此linux系统开始转起来了. (3)rest_init最终调用cpu_idle函数结束了整个内核的启动.也就是说linux内核最终结束了一个函数cpu_idle.这个函数里面肯定是死循环. (4)简单

Linux-0.11内核内存管理get_free_page()函数分析

/* *Author : DavidLin*Date : 2014-11-11pm*Email : [email protected] or [email protected]*world : the city of SZ, in China*Ver : 000.000.001*history : editor time do 1)LinPeng 2014-11-11 created this file! 2)*/Linux-0.11内存管理模块是源代码中比较难以理解的部分,现在把笔者个人的理解