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

Page 68

Advertising
background image

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

“Indirection Operator

(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

.

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

.

Example 3–21. Converted union Member Operation

*((pointer_to_type_of_a)(&myunion))

Advertising