环境: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_i