代码架构
在研究目标语言编译器(TLC)的特定代码生成部分之前,请考虑目标语言编译器如何为简单模型生成代码。从下图中可以看到,块将代码放入Mdl例程中。这显示了MdlOutputs。
static void simple_output(int_T tid)
{
/* Sin Block: '<Root>/Sine Wave' */
simple_B.SineWave_d = simple_P.SineWave_Amp *
sin(simple_P.SineWave_Freq * simple_M->Timing.t[0] +
simple_P.SineWave_Phase) + simple_P.SineWave_Bias;
/* Gain: '<Root>/Gain' */
simple_B.Gain_d = simple_B.SineWave_d * simple_P.Gain_Gain;
/* Outport: '<Root>/Out1' */
simple_Y.Out1 = simple_B.Gain_d;
}
块block具有输入、输出、参数、状态以及其他一般属性。
例如,块block输入和输出通常写入块I/O结构(使用model_B类型的标识符生成),其中model是模型名称)。块输入也可以来自外部输入结构(model_U),或者当连接到积分器的状态端口(model_X)时来自状态结构,或者如果未连接或接地,则来自地(rtGround)。块输出也可以转到外部输出结构(model_Y)。下图显示了一般块数据映射。
这个讨论应该让你对块对象的外观有一个大致的了解。现在,您可以查看特定于目标语言编译器的代码生成过程的具体部分。