博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SystemC 初始化步骤
阅读量:4120 次
发布时间:2019-05-25

本文共 1669 字,大约阅读时间需要 5 分钟。

环境:VC toolkit 2003 + SystemC 2.0.1

  为了找出SystemC定义了哪些全局变量/静态变量,我在crt/src/crt0dat.c

void _initterm(_PVFV * pfbegin, _PVFV * pfend)

函数中设下断点,at Line 598:

        if ( *pfbegin != NULL )

            (**pfbegin)();        // 此处中断

然后单步跟踪程序,就得到了SystemC的大致初始化顺序:(C++标准不保证各转译单元(translation unit)之间全局变量的初始化顺序,因此这里列出的可看作某种典型情况)

  据我观察,SystemC定义了15处全局/静态变量,其中7处形如:

    static int forty_two = initialize();

散见于communication/sc_communication_ids.cpp、datatypes/bit/sc_bit_ids.cpp、datatypes/fx/sc_fx_ids.cpp、datatypes/int/sc_int_ids.cpp、kernel/sc_kernel_ids.cpp、utils/sc_report.cpp、utils/sc_utils_ids.cpp。

  其余8个初始化点分别是:

1. kernel/sc_time.cpp, L355

    const sc_time SC_ZERO_TIME;

2. communication/sc_interface.cpp, L78

    sc_event sc_interface::m_never_notified;

    // 此处会转而调用 kernel/sc_simcontext.cpp,L835:

    // sc_get_curr_simcontext()
    // 从而初始化全局的 sc_simcontext 对象,大事件!

3. kernel/sc_module.cpp,L136

    const sc_bind_proxy SC_BIND_PROXY_NIL;

4. kernel/sc_cor_fiber.cpp,L49

    static sc_cor_fiber main_cor;

    // 此处与平台相关,如果是UNIX like平台,那么“Coroutine class implemented with 

    // QuickThreads.”;若是Win32平台,那么“Coroutine implementation with fibers.”
    // 不过程序中的注释似乎写错了 :)

5. utils/sc_report_handler.cpp,L205

    static HANDLER_GC_NAME gc;

6. kernel/sc_lambda.cpp,L59

    sc_lambda

    sc_lambda::dummy_lambda;

7. datatypes/bit/sc_logic.cpp,L154,初始化4个逻辑值常数

    const sc_logic sc_logic_0( Log_0 );

    const sc_logic sc_logic_1( Log_1 );
    const sc_logic sc_logic_Z( Log_Z );
    const sc_logic sc_logic_X( Log_X );
    const sc_logic SC_LOGIC_0( Log_0 );
    const sc_logic SC_LOGIC_1( Log_1 );
    const sc_logic SC_LOGIC_Z( Log_Z );
    const sc_logic SC_LOGIC_X( Log_X );

8. datatypes/fx/scfx_rep.cpp,L57

    static scfx_pow10 pow10_fx;

以后,我将继续分析这些初始化到底做了些什么工作,重头戏当然是 sc_simcontext 对象的初始化。

转载地址:http://rqvpi.baihongyu.com/

你可能感兴趣的文章
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>
从山寨Spring中学习Spring IOC原理-自动装配注解
查看>>
实例区别BeanFactory和FactoryBean
查看>>
Spring后置处理器BeanPostProcessor的应用
查看>>
Spring框架的ImportSelector到底可以干嘛
查看>>
Mysql中下划线问题
查看>>
微信小程序中使用npm过程中提示:npm WARN saveError ENOENT: no such file or directory
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>