Structure and union operators, Member operator – Altera Nios II C2H Compiler User Manual
Page 68

3–28
9.1
Altera Corporation
Nios II C2H Compiler User Guide
November 2009
Memory Accesses
Structure and Union Operators
The structure and union constructs in the C language provide an
abstraction for creating objects that consist of multiple types. The
.
(member) and
->
(structure pointer) operators abstract accesses to
structures and unions. These operators can be converted to an equivalent
address expression and indirection operation.
The C2H Compiler keeps storage for global structure and union variables
in the Nios II processor’s data memory. For global structures and unions,
the C2H Compiler converts structure and union operations to equivalent
pointer dereferences, and then translates the pointer dereference to
hardware. The pointer dereference creates an Avalon-MM master port on
the hardware accelerator, as described in section
(Pointer Dereference)” on page 3–16
For storage of local structure and union variables, the C2H Compiler uses
on-chip memory resources inside the accelerator. For these local
variables, the C2H Compiler generates master ports internal to the
accelerator, which connect only to the internal memory. Refer to section
“Arrays, Structures, and Unions” on page 3–14
Member Operator .
The member operator (
.
) accesses a single member of a structure or
union.
The struct member operation
(mystruct.a)
is equivalent to
Example 3–20. Converted struct Member Operation
*((pointer_to_type_of_a) ((void *)&mystruct + offset_of_a))
Similarly, the union member operation
(myunion.a)
is equivalent to
Example 3–21. Converted union Member Operation
*((pointer_to_type_of_a)(&myunion))