Structure Member Access from Inline Assembly

Members of channel frame or global variables that are structures can be accessed using C notation in inline assembly. This removes the need for error prone hardcoded offsets. Although less likely to be needed, array variables can also be referenced using the C '[]' syntax, as a long as the index is a constant (and thus the address is static). Below is an example from the Freescale set 4 ACIMVC function.

For example try changing from:

struct ACIMVC_channel_params
{
   int24 period;
   int24 start_offset;
   // ...
   d_q_t i_dq_desired;
   // ...
};

// ETPU Function ACIMVC
void ACIMVC( struct ACIMVC_channel_params this )
{
   // ...

   // load member q of member i_dq_desired of structure
   // variable this
   #asm( ram p <- this.i_dq_desired.q. )

   // ...
}