S5U1C17001C ManUal
EPSOn
6-11
(C COMPilEr PaCkagE fOr S1C17 faMily) (Ver. 1.5.0)
6 C COMPilEr
6
Compiler
6.4.3 Method of Using registers
The following shows how the
xgcc
C compiler uses general-purpose registers.
Table 6.4.3.1 Method of using general-purpose registers by
xgcc
register
Method of use
%r0
Register for passing argument (1st word)
Register for storing returned values (8/16-bit data, pointer, 16 low-order bits of 32-bit data)
%r1
Register for passing argument (2nd word)
Register for storing returned values (16 high-order bits of 32-bit data)
%r2
Register for passing argument (3rd word)
%r3
Register for passing argument (4th word)
%r4
Registers that need have to their values saved when calling a function
%r5
%r6
%r7
registers for passing arguments (
%r0
to
%r3
)
These registers are used to store arguments when calling a function. Arguments exceeding four words are stored
in the stack before being passed. They are used as scratch registers before storing arguments.
%r0
←
First argument
%r1
←
Second argument
%r2
←
Third argument
%r3
←
Fourth argument
A pair of the registers is used to store a 32-bit (
long
) argument.
%r1
(high-order 16 bits) and
%r0
(low-order 16 bits)
%r3
(high-order 16 bits) and
%r2
(low-order 16 bits)
Examples:
•
First argument:
long
, second argument:
long
foo( long lData1, long lData2 );
%r0
←
lData1
(low-order 16 bits)
%r1
←
lData1
(high-order 16 bits)
%r2
←
lData2
(low-order 16 bits)
%r3
←
lData2
(high-order 16 bits)
•
First argument:
short
, second argument:
long
foo( short sData, long lData );
%r0
←
sData
(16 bits)
%r1
Unused
%r2
←
lData
(low-order 16 bits)
%r3
←
lData
(high-order 16 bits)
•
First argument:
long
, second argument:
short
, third argument:
short
foo( long lData, short sData1, short sData2 );
%r0
←
lData
(low-order 16 bits)
%r1
←
lData
(high-order 16 bits)
%r2
←
sData1
(16 bits)
%r3
←
sData2
(16 bits)
•
First argument:
long
; second argument:
pointer
; third argument:
pointer
foo( long lData, int *ip_Pt, char *cp_Pt );
%r0
←
lData
(lower-order 16 bits)
%r1
←
lData
(lower-order 16 bits)
%r2
←
ip_Pt
(24 bits (for REGULAR/MIDDLE MODEL), 16 bits (for SMALL MODEL))
%r3
←
cp_Pt
(24 bits (for REGULAR/MIDDLE MODEL), 16 bits (for SMALL MODEL))
Summary of Contents for S5U1C17001C
Page 6: ......
Page 17: ...1 General S5U1C17001C Manual 1 General ...
Page 18: ......
Page 21: ...1 2 Install S5U1C17001C Manual 2 Installation ...
Page 22: ......
Page 29: ...3 SoftDev S5U1C17001C Manual 3 Software Development Procedures ...
Page 30: ......
Page 103: ...4 SrcFiles S5U1C17001C Manual 4 Source files ...
Page 104: ......
Page 121: ...5 IDE S5U1C17001C Manual 5 gnU17 iDE ...
Page 122: ......
Page 365: ...6 Compiler S5U1C17001C Manual 6 C Compiler ...
Page 366: ......
Page 385: ...7 Library S5U1C17001C Manual 7 library ...
Page 386: ......
Page 405: ...8 Assemblr S5U1C17001C Manual 8 assembler ...
Page 406: ......
Page 439: ...9 Linker S5U1C17001C Manual 9 linker ...
Page 440: ......
Page 449: ...10 Debugger S5U1C17001C Manual 10 Debugger ...
Page 450: ......
Page 626: ...11 Tools S5U1C17001C Manual 11 Other Tools ...
Page 627: ......
Page 696: ...S1C17 Family C Compiler Package Quick Reference Reference ...