Texas Instruments MSP50C6xx User Manual

Page 313

Advertising
background image

C– – Compiler

5-17

Code Development Tools

5.5.2

Variable Types

Type Name

Mnemonic

Range

Size in Bytes

Example

Integer

int

[–32768,32767]

2

int i,j;

Character

char

[0,255]

1

char c,d;

Array of integer

int

Not Applicable

Not Applicable

int array[12];

Array of characters

char

Not Applicable

forced to even

char text[20]

Pointer to integer

int *

Not Applicable

2

int *j;

Pointer to character

char *

Not Applicable

2

char *string;

Notes:

1) There is a major difference between an MSP50C6xx integer string and an array of

integers: an array of integers is an ordered set of n 16 bit integers, whereas an integer
string of length n represents a single integer with 16*n bits. In C– –, MSP50C6xx strings
are declared as arrays of integers, but must be operated upon using the special purpose
string arithmetic functions described below.

2) As in regular C, the above types can be qualified with the word unsigned.

3) There is another important qualifier that is special to C– – : constant. We made the

mnemonic purposely different from the usual C const qualifier, because it is not exactly
equivalent. It is used to initialize arrays in program ROM. A good use of it would be for
a sine table, for example. The syntax is simple, for example:
constant int array[10]={1,2,3,4,5,6,7,8,9,10},dummy;

4) will create a series of DATA statements in the assembly language output file.

Uninitialized constants (like dummy above) generate a warning and are initialized to
zero. Constants are to be handled with care. Since they cannot be accessed the same
way as RAM variables, special purpose functions have to be used to utilize constants
in a program. The most general of these functions is xfer_const, which transfers values
from the program ROM to the RAM. Also, constants MUST BE GLOBAL. Do not pass
a constant as an argument.

5) The common C types float, struct, union and long are not implemented. (Note that long

is a subset of string of integer).

5.5.3

External References

All RAM allocations in the assembler are global. This results in the following
implications for C– – variables:

-

Only the file containing the main routine can contain global variable
definitions.

-

Global variables referenced in other files must have been declared as ex-
ternal (keyword extern) at the beginning of the file.

-

A function referenced in a file but not defined in that same file must be
introduced with a function prototype in the file where it is referenced (no
need for the extern keyword).

Advertising