Indirection operator (pointer dereference), Indirection operator (pointer dereference) –16 – Altera Nios II C2H Compiler User Manual
Page 56
 
3–16
9.1
Altera Corporation
Nios II C2H Compiler User Guide
November 2009
Memory Accesses
behavior of a C function accessing memory is the same, regardless of 
whether the function is implemented as hardware logic or software 
instructions. 
f
For more information on SOPC Builder, Avalon interfaces, and how 
SOPC Builder generates system interconnect fabric, refer to the 
.
In order to maximize bandwidth, the C2H Compiler creates a master port 
on the accelerator for every C operator that accesses external memory. 
Multiple master ports allow the accelerator to read and write data to an 
unlimited number of locations simultaneously, thereby reducing the 
bandwidth limitations inherent in a CPU with a single data master port.
In some cases, the C2H Compiler can determine that master ports can be 
shared between several external memory operations without sacrificing 
performance. However, as a general rule, an Avalon-MM master port is 
created for each of the following:
■
Pointer dereference (
*
operator)
■
Index into an array (
[
operator)
■
Index into a struct or union (
.
or
->
operator)
■
Usage of a global or static variable
demonstrates various lines of code that generate a master
port in hardware.
Example 3–8. C Statements that Generate Avalon-MM master ports
*my_ptr = 8;
data_in = *src;
dst[index] = data_out;
pixel = pixel_array[i][j];
buffer.input = 0x80000400;
current = s->next;
The following sections describe each case in detail.
Indirection Operator (Pointer Dereference)
The indirection operator (
*
) is the fundamental expression of
dereferencing and indirection. This section describes how the 
C2H Compiler handles pointer dereferencing.