Keil Logo

C51: ?C? Load and Store Library Routines

Information in this article applies to:

  • C51 Version 6.x and later


The Keil C51 library includes a number of helper routines for the C51 compiler. These routines perform mundane tasks like loading and storing objects. The code to perform these operations is not included in-line but is implemented via a function call.

These routines are named using the following convention: ?C?tffmmm


  • t is the type field,
  • ff is the function field,
  • and mmm is the memory type field.


The type field is a character that indicates the data type used:

  • C indicates a character that is passed in A.
  • I indicates an int that is passed in A/B.
  • P indicates a 3-byte pointer that is passed in R1/R2/R3.
  • L indicates a long that is passed in R4/R5/R6/R7.
  • L0 indicates a long that is passed in R0/R1/R2/R3.


The function field indicates the operation that is performed:

  • LD indicates a read (load) operation.
  • ILD indicates an increment and load operation (pre-increment load). The increment value is passed in A/B.
  • LDI indicates a load and increment operation (post-increment load). The increment value is passed in A/B.
  • ST indicates a write (store) operation.
  • STK indicates writing of constant data encoded as DB statements immediately following the library function call.


The memory type field indicates that memory area that is accessed:

  • XDATA represents XDATA memory.
  • PDATA represents PDATA memory.
  • IDATA represents IDATA memory.
  • DATA represents DATA memory.
  • CODE represents CODE memory.
  • PTR represents a 3-byte pointer in R1/R2/R3.
  • OPTR represents a 3-byte pointer plus an offset in R1/R2/R3 + DPTR.


The library routine ?C?PLDIPTR is passed a generic pointer in R1/R2/R3 (P). This pointer points to a pointer which is returned in R1/R2/R3 (PTR). A/B contain the MSB and LSB of a value to add to the pointer (LDI). The pointer returned is the pointer value before the increment is added.



Following is a complete list of all routines possible using the above naming conventions:








Last Reviewed: Thursday, February 25, 2021

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.