
Benchmarks
Integrated into
RIDE
The RC-51 'C' compiler
is fully integrated into the RIDE interface.
A super-set of
ANSI-C
RC-51
implements the ANSI standards for the 'C' language,
expanded with keywords that are specific to the 80C51
alien
|
asm
|
at
|
bdata
|
bit
|
code
|
data
|
generic
|
idata
|
interrupt
|
intrinsic
|
pdata
|
sbit
|
sfr
|
using
|
xdata
|
Memory models
The memory
model specifies default location for variable
declarations and default types for generic pointers.
| Model |
Default
memory
type |
xdata
memory
requirements |
stack
location |
Notes |
| TINY |
data |
*** |
idata |
suitable
for the Philips 8x75x processors
= SMALL + ROM(SMALL) |
| SMALL |
data |
no |
idata/pdata |
the
allocation of variables in external data memory
is still possible |
| COMPACT |
pdata |
yes |
idata/pdata |
same
as LARGE with smaller code size |
| LARGE |
xdata |
yes |
idata/pdata |
suitable
for big applications |
| HUGE |
pdata
|
yes |
pdata |
suitable
for the most complex applications.
return addresses and parameters are stored in
xdata memory. |
ROM Models
The ROM model
specifies code size and calling mode:
| Model |
Code size |
Call/Jmp |
| SMALL |
< 2K |
ACALL / AJMP |
| LARGE |
< 64 KB |
LCALL / LJMP |
Base Types
Integer Types:
- 8-bit :
" signed char " and
" unsigned char ",
- 16-bit :
" signed int " and
" unsigned int ",
- 32-bit :
" signed long " and
" unsigned long ",
Real Types:
- 32-bits :
" float " (IEEE754 single
precision),
BCD Float:
- 32-bit words for FLOAT
- 48-bit words for DOUBLE (by
default)
- 56-bit words for LONG DOUBLE
Pointer Types
Two types of
pointers are always available, generic pointers and space
qualified pointers.
Code Optimizations
RC-51
optimizes the code to be both compact and fast. Teste
show that it produces the most efficient code available
in the market.
Parameter Passing
Three cases
are distinguished according to the value of REGPARMS and
whether the function was declared with the 'alien'
qualifier:
- NOREGPARMS: No
registers aree used for function parameter
passing. Instead the internal stack is used for
reentrant functions otherwise parameters are
stored in the local variable pseudo-static
segment
- REGPARMS: Registers
may be used to pass parameters, which
significantly improves system performance. Up to
3 parameters may passed in CPU registers and
parameters that can not be passed in registers
are processed as for the NOREGPARMS case.
- In 'alien' functions
the DATA pseudo-static segment is always used.
Alien function complies with the PL/M-51
parameter passing convention.
Libraries
RC-51 is
supplied with ANSI 'C' standard libraries as described
in: math.h, stdio.h, string.h, ctype.h, and stdlib.h
standard header files
|