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))
Содержание S5U1C17001C
Страница 6: ......
Страница 17: ...1 General S5U1C17001C Manual 1 General ...
Страница 18: ......
Страница 21: ...1 2 Install S5U1C17001C Manual 2 Installation ...
Страница 22: ......
Страница 29: ...3 SoftDev S5U1C17001C Manual 3 Software Development Procedures ...
Страница 30: ......
Страница 103: ...4 SrcFiles S5U1C17001C Manual 4 Source files ...
Страница 104: ......
Страница 121: ...5 IDE S5U1C17001C Manual 5 gnU17 iDE ...
Страница 122: ......
Страница 365: ...6 Compiler S5U1C17001C Manual 6 C Compiler ...
Страница 366: ......
Страница 385: ...7 Library S5U1C17001C Manual 7 library ...
Страница 386: ......
Страница 404: ...7 18 EPSON S5U1C17001C Manual C Compiler Package for S1C17 Family Ver 1 5 0 7 liBrary THIS PAGE IS BLANK ...
Страница 405: ...8 Assemblr S5U1C17001C Manual 8 assembler ...
Страница 406: ......
Страница 438: ...8 32 EPSON S5U1C17001C Manual C Compiler Package for S1C17 Family Ver 1 5 0 8 aSSEMBlEr THIS PAGE IS BLANK ...
Страница 439: ...9 Linker S5U1C17001C Manual 9 linker ...
Страница 440: ......
Страница 448: ...9 8 EPSON S5U1C17001C Manual C Compiler Package for S1C17 Family Ver 1 5 0 9 linkEr THIS PAGE IS BLANK ...
Страница 449: ...10 Debugger S5U1C17001C Manual 10 Debugger ...
Страница 450: ......
Страница 625: ...10 174 EPSON S5U1C17001C Manual C Compiler Package for S1C17 Family Ver 1 5 0 10 DEBUggEr THIS PAGE IS BLANK ...
Страница 626: ...11 Tools S5U1C17001C Manual 11 Other Tools ...
Страница 627: ......
Страница 695: ...11 68 EPSON S5U1C17001C Manual C Compiler Package for S1C17 Family Ver 1 5 0 11 OTHEr TOOlS THIS PAGE IS BLANK ...
Страница 696: ...S1C17 Family C Compiler Package Quick Reference Reference ...