Home

M3T-NC308WA V.5.42 C Compiler User`s Manual (C Compiler

image

Contents

1. Function Defines the structures used in branch functions Function Contents longjmp Performs a global jump setjmp Sets a stack environment for a global jump signal h Function Defines declares necessary for processing asynchronous interrupts eat Function Defines declares the functions which have a variable number of real arguments stddef h Function Defines the macro names which are shared among standard include files REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 224 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library stdio h I Function Defines the FILE structure stream name and declares I O function prototypes Prototype declarations are made for the following functions Type Function Function Initialize init Initializes M16C 80 family input outputs clearerr Initializes clears error status specifiers Input fgetc Inputs one character from the stream getc Inputs one character from the stream getchar Inputs one character from stdin fgets Inputs one line from the stream gets Inputs one line from stdin fread Inputs the specified items of data from the stream scanf Inputs characters with format from stdin fscanf Inputs characters with format from the stream sscanf Inputs data with format from a character string Output fputc Outputs one character to the stream pute Outputs one character t
2. gensniA Command option AAbsolute module file extension x30 Denotes the prompt lt gt Denotes the essential items Denotes the items that need to be written when necessary A Denotes a space When writing multiple startup options separate each with a space Figure G 2 gensni command input format To use gensni specify both of the following in the startup options of this compiler J Inspector information OUtDUt ccscssesesesesesscseseseseesesens finfo option o Debug information OUtpUt ecsssssesssseeseesseetseesnees g option to generate absolute module files extension x30 An input example is shown below In the input example here the following option is specified in gensni J Information output to a specified file cecseeseeeeseeees o option By default the information is output to a file named after the input file by changing the file extension from x80 to sni Generate an absolute module file nc308 g fansi ncrt0 a30 sample c lt RET gt M32C Series Compiler V X XX Release XX Copyright C XXXX XXXX XXXX XXXX XXXX Renesas ElectronicsCorp and Renesas Solutions Corp All rights reserved nert0 a30 sample c Generate sni file gensni o sample ncrt0 x30 lt RET gt sample sni is created Figure G 3 gensni command input example REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 356 M32C Series C Compiler Package V 5 42 C C
3. ncrt0 a30 NC308 startup program This program is applicable when using the basic I O library Id ncrt0 a30 v X XX X X XXXX XX XX XX XX XX XXXXX Exp 7 II KIKI AK III KI RIK IK III IKI IKI III III ke eke kekek IIR III IKI IIIA III IK IIIA 3 if HEAP for HEW HEAPSIZE equ Oh else if HEAPSIZE HEAPSIZE equ 300h else for HEW HEAPSIZE equ __HEAPSIZE __ endif endif 1 defines the heap size Figure 2 6 Startup Program List 1 ncrt0 a30 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 23 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler STACK SIZE definition 2 if_USTACKSZE_ 0 0 STACKSIZE equ 300h else for HEW STACKSIZE equ __USTACKSIZE__ endif INTERRUPT STACK SIZE defintion 3 f_ISTACKSZE_ 0 2 ISTACKSIZE equ 300h else for HEW ISTACKSIZE equ __ISTACKSIZE__ endif INTERRUPT VECTORADDRESS definition 4 VECTOR ADR equ offdooh SVECTOR_ADR equ Offfe0Oh macro define for special page Format SPECIAL number SPECIAL macro NUM org OFFFFFEH NUM 2 glib __SPECIAL_ NUM word __ SPECIAL NUM amp OFFFFH list OFF include sect308 inc 5 list ON defines the user stack size defines the interrupt stack size defines the start address of interrupt vector table 5 Includes sect308 inc 2 3 4 Figure 2 7 Startup Program List 2 ncrt0 a30
4. tan Function Calculates tangent Format include lt math h gt double tan x Method function Argument double x arbitrary real number ReturnValue Returns the tangent of given real number x handled in units of radian tanh Function Calculates hyperbolic tangent Format include lt math h gt double tanh x Method function Argument double x arbitrary real number ReturnValue Returns the hyperbolic tangent of given real number x tolower Character Handling Functions Function Converts the character from an upper case to a lower case Format include lt ctype h gt int tolower Method macro Argument int c Character to be converted ReturnValue Returns the lower case letter if the argument is an upper case letter Otherwise returns the passed argument as is Description Converts the character from an upper case to a lower case REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 297 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library toupper Character Handling Functions Function Converts the character from a lower case to an upper case Format include lt ctype h gt int toupper c Method macro Argument int c Character to be converted ReturnValue Returns the upper case letter if the argument is a lower case letter Otherwise returns the passed argument as is Description Converts the character from a lower case to an upper case REJ10J2057 0200 Rev
5. Wall Warning Options Function Indicates all detectable alarms Supplement 1 The alarms indicated here do not include those that may be generated when Wlarge_to_small WLTS and Wno_used_argument WNUA and Wno_used_static_function WNUSF are used 2 The alarms indicated here are equivalent to those of the options Wnon_prototype WNP Wunknown_pragma WUP Wnesting_comment WNC and Wuninitialize_variable WUV 3 Alarms are indicated in the following cases too When the assignment operator is used in the if statement the for statement or a comparison statement with the amp amp or operator When is written to which should be specified When function is defined in old format Notes These alarms are detected within the scope that the compiler assumes on its judgment that description is erroneous Therefore not all errors can be alarmed Wccom_max_warnings Warning Count WCMW Warning Count Warning Options Function This option allows you to specify an upper limit for the number of warnings output by ccom308 Supplement By default there is no upper limit to warning outputs Use this option to adjust the screen as it scrolls for many warnings that are output Notes For the upper limit count of warning outputs specify a number equal to or greater than 0 Specification of this count cannot be omitted When you specify 0 warning outputs are
6. iypedefstruct_iobuf 1 I char _buff l l int _cnt l int _flag l i int _mod l int _func_in void int _func_out int FILE l omitted l l l typedef long fpos_t l typedef unsigned int size_t l l extern FILE _iob Figure 1 8 Example Preprocessed C Source File 1 REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 9 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 extern int getc FILE _far 1 extern int getchar void extern int putc int FILE _ far extern int putchar int extern int feof FILE _far extern int ferror FILE _ far externint fgetc FILE _ far extern char _far fgets char _ far int FILE _ far extern int fputce int FILE _ far extern int fputs const char _far FILE _ far extern size_t fread void _far size_t size_t FILE _ far omitted extern int printf const char _far extern int fprintf FILE _ far const char _far extern int sprintf char _far const char _far omitted extern int init_dev FILE _ far int extern int speed int int int int extern int init_prn void externint _sget void extern int _ sput int extern int _pput int extern const char _ far _print int const char _far int _far _far int_far i Pe eg e a ea ee a ee Cpe ge me Be gg ae ee ee Fee ae eg ee ge eee ee ea Nee a a
7. Function Specifies assembly code in C Syntax pragma ASM assembly statements pragma ENDASM Description The line s between pragma ASM and pragma ENDASM are output without modifying anything to the generated assembly source file Writing pragma ASM be sure to use it in combination with pragma ENDASM NC308 suspends processing if no pragma ENDASM is found the corresponding pragma ASM Rules 1 In assembly language description do not write statements which will cause the register contents to be destroyed When writing such statements be sure to use the push and pop instructions to save and restore the register contents 2 Within the pragma ASM to pragma ENDASM section do not reference arguments and auto variables 3 Within the pragma ASM to pragma ENDASM section do not write a branch statement including conditional branch which may affect the program flow Example void func void int i j for i 0 i lt 10 i func2 This area is output directly to an assembly language file MOV W 0FFH RO omitted FSET pragma ENDASM Figure B 86 Example of pragma ASM ENDASM Suppliment It is this assembly language program written between pragma ASM and pragma ENDASM that is processed by the C preprocessor REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 163 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma JSRA Calls a
8. SPECIAL 255 omitted SPECIAL 18 endif __MST fixed vector section section fvector ROMDATA org OFFFFDCh UDI word dummy_int OVER_FLOW word dummy_int BRKI word dummy_int ADDRESS_MATCH word dummy_int SINGLE_STEP word dummy_int WDT word dummy_int DBC word dummy_int NMI word dummy_int RESET word start skkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk C Compiler for M16C 80 Copyright C XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All rights reserved A IIR ekeke ee kekeke ee RIK IK ee ke ee keke ke eke Heee keke eke ee keke eke dekek ede keee keke eee kekeke kek ekeke keke kekek keke kkk IIIA Figure 2 26 Listing of sect308 inc in Single Chip Mode 4 REJ10J2057 0200 Rev 1 00 2010 04 01 1RENESAS 43 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler e Setting Interrupt Vector Table For programs that use interrupt processing set up the interrupt vector table by one of the following two methods 1 When the interrupt function is declared with the vector number the changeable vector table is generated automatically 2 When the interrupt function is not declared with the vector number the interrupt vector table of the vector section described in sect308 inc is set The content of the interrupt vector varies with each type of microcomputer and must therefore be set up to sui
9. BZERO bss NE _top bss NE BZERO bss NO top bss NO BZERO bss SE top bss_SE BZERO bss SO top bss SO BZERO bss _6E_top bss 6E BZERO bss 60 top obss 60 Figure 3 11 Commenting Out Routine to Clear bss Area M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique 3 3 Linking Assembly Language Programs with C Programs 3 3 1 Calling Assembler Functions from C Programs a Calling Assembler Functions Assembler functions are called from C programs using the name of the assembler function in the same way that functions written in C would be The first label in an assembler function must be preceded by an underscore _ However when calling the assembly function from the C program the underscore is omitted The calling C program must include a prototype declaration for the assembler function Figure 3 12 is an example of calling assembler function asm_func extern void asm_func void lt Assembler function prototype declaration void main omitted i asm_func Calls assembler function Figure 3 12 Example of Calling Assembler Function Without Parameters sample c glb _main _main omitted jsr l _asm_func Calls assembler function preceded by _ rts Figure 3 13 Compiled result of sample c sample a30 b When assigning arguments to assembler functions When passing arguments to assembler functions use the extended function pragma PARAM
10. getc Function Reads one character from the stream Format include lt stdio h gt int getc stream Method macro Argument FILE _far stream Pointer of stream ReturnValue Returns the one input character Returns EOF if an error or the end of the stream is encountered Description Reads one character from the stream Interprets code 0x1A as the end code and ignores any subsequent data getchar Function Reads one character from stdin Format include lt stdio h gt int getchar void Method macro Argument No argument used ReturnValue Returns the one input character Returns EOF if an error or the end of the file is encountered Description Reads one character from stream stdin Interprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 253 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library gets Input Output Functions Function Reads one line from stdin Format include lt stdio h gt char _far gets buffer Method function Argument char _far buffer Pointer of the location to be stored in ReturnValue Returns the pointer of the location to be stored the same pointer as given by theargument if normally input Returns the NULL pointer if an error or the end of the file is encountered Description Reads character string from stdin and stores it in the buffer The new line character Nn at the
11. A 3 2 Priority of Options for Controlling If you specify both the following options in the NC3808 command line the S option takes precedence and only the assembly language source files will be generated c Stop after creating relocatable files S Stop after creating assembly language source files REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 101 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Appendix B Extended Functions Reference To facilitate its use in systems using the M32C series NC308 has a number of additional extended functions This appendix B describes how to use these extended functions excluding those related to language specifications which are only described in outline Table B 1 Extended Functions 1 2 Extended feature Description near far qualifiers Specifies the addressing mode to access data near Access to an area within 64 Kbytes OH to OFFFFH far Access to an area beyond 64 Kbytes all memory areas All functions take on far attributes asm function 1 Assembly language can be directly included in C programs It can also be included outside functions Example asm MOV W 0 RO 2 You can specify variable names within functions only Example1 asm MOV W RO L FBI f Example2 asm MOV W RO s Examples3 asm MOV W RO f 3 You can include dummy asm functions as a means of partially suppressing optimization w
12. B 6 3 Priority of and The priority of and is such that the one that appears first has priority Therefore a written between a to the new line code does not have an effect as signifying the beginning of a comment Also a written between and does not have an effect as signifying the beginning of a comment REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 134 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 7 pragma Extended Functions B 7 1 Index of pragma Extended Functions Following index tables show contents and formation for pragma extended functions a Using Memory Mapping Extended Functions Table B 4 Memory Mapping Extended Functions Extented function Description pragma ROM Maps the specified variable to rom Syntax pragma ROM variable name Example pragma ROM val This facility is provided to maintain compatibility with NC77 and NC79 The variable normally must be located in the rom section using the const qualifier pragma SB16DATA Declares that the data uses SB relative addressing of 16bit displacement Syntax pragma SBDATA variable name Example pragma SBDATA val pragma SBDATA Declares that the data uses SB relative addressing Syntax pragma SBDATA variable name Example pragma SECTION bss nonval_data pragma SECTION Changes the section name generated by NC308 Syntax pragma SECTION section_name new_sec
13. Check to see if the number of initialize expressions in the parentheses matches the number of array elements and the number of structure members invalid initializer on scalar The initialization expression contains an error Check to see if the number of initialize expressions in the parentheses matches the number of array elements and the number of structure members invalid initializer on struct The initialization expression contains an error Check to see if the number of initialization expressions in the parentheses matches the number of array elements and the number of structure members invalid initializer too many brace Too many braces are used in a scalar type initialization expression of the auto storage class Reduce the number of braces used REJ10J2057 0200 Rev 2 00 2010 04 01 328 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 15 ccom808Error message 9 13 Error message Description and countermeasure invalid lvalue e The left side of the assignment statement is not lvalue Write a substitutable expression on the left side of the statement invalid lvalue at operator e The left side of the assignment statement is not lvalue Write a substitutable expression on the left side of the statement invalid member e The member reference contains an error gt Write corre
14. Notes This option does not normally need to be used REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 89 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fuse_DIV fUD Modify generated code Function This option changes generated code for divide operation Supplement For divide operations where the dividend is 4 bytes value the divisor is 2 bytes value and the result is 2 bytes value or when the dividend is 2 bytes value the divisor is a l byte value and the result is a l1 byte value the compiler generates div w divu w and div b divu b microcomputer instructions Notes 1 If the divide operation results in an overflow when this option is specified the compiler may operate differently than stipulated in ANSI 2 The div instruction of the M32C series has such a characteristic that when the operation resulted in an overflow the result becomes indeterminate Therefore when the program is compiled in default settings by NC308 it calls a runtime library to correct the result for this problem even in cases where the dividend is 4 bytes the divisor is 2 bytes and the result is 2 bytes M82 Modify generated code Function Generates object code for M32C 80 series Notes 1 Ifthe option M82 is selected when compiling or assembling source files be sure to use the standard function library nc382lib lib or nc382_16 lib if the compile option fsizet_16 or fptrdifft_16 is selected when link
15. REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 28 ccom308 Waming Messages 9 9 Waming message Description and countermeasure Unknown optimize option Ox The option Ox cannot be specified Specify the option correctly The option x cannot be specified Specify the option correctly Unsupported pragma is written Check the content of pragma This warning is displayed only when the Wunknown_pragma WUP option is specified wchar_t array initialized by char string e The initialize expression of the wchar_t type is nitialized by a character string of the char type Make sure that the types of the initialize expression re matched zero divide in constant folding e The divisor in the divide operator or remainder alculation operator is 0 Use any value other than 0 for the divisor The divisor in the divide operator or remainder alculation operator is 0 Use any value other than 0 for the divisor The bit field width is 0 Write a bit field equal to or greater than 1 The function or variable declaration without const qualification is const qualified on the entity definition side Make sure the function or variable declaration and the const qualification on the entity definition side are matched There is a declaration that is not referenced Delete the declaration Unknown option x unknown pragma pragma specification used Yel ey
16. Use numerals 0 to 7 to describe octal constants 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 340 Table F 26 com308 Warning Messages 7 9 Waming message Description and countermeasure overflow in floating value converting to integer A very large floating point number that cannot be stored in integer type is being assigned to the integer type Reexamine the assignment expression old style function declaration The function definition is written in format prior to ANSI ISO C Write the function definition in ANSI ISO format prototype function is defined as non prototype function before ey The non prototyped function is redefine prototype declaration Write identifier correctly Unite ways to declare function type redefined type e Redwfine typedef Check typedef redefined type name of qualify e The same identifier is defined twice or more in typedef gt e register parameter function used before as stack parameter function The function for register argument is used as a function for stack argument before Write a prototype declaration before using the function RESTRICT qualifier can set only pointer type The RESTRICT qualifier is declared outside a pointer Declare it in only a pointer section name interrupt no more used p eu ey y The section name specified by pra
17. operands The operation contains an error Check the expressions on the left and right sides of the operator invalid t operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operator contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The F operation contains an error Check the expressions on the left and right sides of the operator invalid lt lt operands The lt lt operation contains an error Check the expressions on the left and right sides of the operator invalid lt lt operands The lt lt operation contains an error Check the expressions on the left and right sides of the operator invalid lt operands The lt operation contains an error Check the expressions on the left and right sides of the operator invalid operand The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid gt operands The gt operation contains an error Check the expressions on the left and right sides of the op
18. 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library log Mathematical Functions Function Calculates natural logarithm Format include lt math h gt double log x Method function Argument double x arbitrary real number ReturnValue Returns the natural logarithm of given real number x Description This is the reverse function of exp logi0 Function Calculates common logarithm Format include lt math h gt double log10 x Method function Argument double x arbitrary real number ReturnValue Returns the common logarithm of given real number REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 263 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library longimp Execution Control Functions Function Restores the environment when making a function call Format include lt setjmp h gt void longjmp envy val Method function Argument jmp_buf env Pointer to the area where environment is restored int val Value returned as a result of setjmp ReturnValue No value is returned Description Restores the environment from the area indicated in env Program control is passed to the statement following that from which setjmp was called The value specified in val is returned as the result of setymp However if val is 0 it is converted to 1 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 264 M32C Series C Compiler Package V 5 42 C Compiler E
19. 3 4 2 Precautions on Transporting between NC308 and NC30 59 Appendix A Command Option Reference 60 Al nc308 Command Format 60 A2 nc308 Command Line Options 61 A 2 1 Options for Controlling Compile Driver 61 REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS M32C Series C Compiler Package V 5 42 C Compiler Contents A 2 2 Options Specifying Output Files 65 A 2 3 Version Information Display Option 66 A 2 4 Options for Debugging 67 A 2 5 Optimization Options 68 A 2 6 Generated Code Modification Options 82 A 2 7 Library Specifying Option 92 A 2 8 Warning Options 93 A 2 9 Assemble and Link Options 100 A383 Notes on Command Line Options 101 A231 Coding Command Line Options 101 A 3 2 Priority of Options for Controlling 101 Appendix B Extended Functions Reference 102 B 1 Near and far Modifiers 104 B 1 1 Overview of near and far Modifiers 104 B 1 2 Format of Variable Declaration 104 B 1 3 Format of Pointer type Variable 105 B 1 4 Format of Function Declaration 107 B 1 5 near and far Control by nc308 Command Line Options 107 B 1 6 Function of Type conversion from near to far 108 B 1 7 Checking Function for Assigning far Pointer to near Pointer 108 B 1 8 Declaring functions 109 B 1 9 Function for Specifying near and far in Multiple Declarations 109 B 1 10 Notes on near and far Attributes 110 B 2 asm Function 111 B 2 1 Overview of asm Function 111 B 2 2 Specifying FB Offset Value of auto Variable 112 B 2 3 Specifying Register Name of register Variable
20. CENESAS 7 D TA T lt D D M32C Series C Compiler Package V 5 42 C Compiler User s Manual Renesas FIEC ironics Rev 2 00 2010 04 www renesas co 10 11 12 Notice All information included in this document is current as of the date this document is issued Such information however is subject to change without any prior notice Before purchasing or using any Renesas Electronics products listed herein please confirm the latest product information with a Renesas Electronics sales office Also please pay regular and careful attention to additional and different information to be disclosed by Renesas Electronics such as that disclosed through our website Renesas Electronics does not assume any liability for infringement of patents copyrights or other intellectual property rights of third parties by or arising from the use of Renesas Electronics products or technical information described in this document No license express implied or otherwise is granted hereby under any patents copyrights or other intellectual property rights of Renesas Electronics or others You should not alter modify copy or otherwise misappropriate any Renesas Electronics product whether in whole or in part Descriptions of circuits software and other related information in this document are provided only to illustrate the operation of semiconductor products and application examples You are fully responsible for the incorporati
21. Execute some optimization items addition to O8 Some representative optimization items executed by this option are the following Replace the reference to the variable declared in the const qualifier with constants O5 Execute some optimization items addition to O4 Some representative optimization items executed by this option are the following Optimization of address computations such as pointers and structures if the option OR is concurrently specified Strengthen the optimization of the pointer if the option OS is concurrently specified However a normal code may be unable to be outputted when fulfilling the following conditions With a different variable points out the same memory position simultaneously within a single function and they point to an identical address Example int a 3 int p 6a void test void int b p 9 a 10 b p By applying optimization p will be transposed to 9 printf bo d expect b 10 n b result b 9 expect 10 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 69 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference O 1 5 Optimization Notes When the O5 optimizing options is used the compiler generates in some cases BTSTC or BTSTS bit manipulation instructions In M82C series the BTSTC and BTSTS bit manipulation instructions are prohibited from rewriting the contents of the interrupt con
22. Figure B 88 Example of pragma JSRW Note The pragma JSRW is valid only when directly calling a function It has no effect when calling indirectly REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 165 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference at acl ma PAGE Output PAGE Function Declares new page position in the assembler generated list file Syntax pragma PAGE Description Putting the line pragma PAGE in C source code the PAGE pseudo instruction is output at the corresponding line in the compiler generated assembly source This instruction causes page ejection asesmbler output assembly list file Rules 1 You cannot specify the character string specified in the header of the assembler pseudo instruction PAGE 2 You cannot write a pragma PAGE in an auto variable declaration Example void func void int i j for i 0 i lt 10 i func2 pragma PAGE i Figure B 89 Example of pragma PAGE REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 166 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 8 assembler Macro Function B 8 1 Outline of Assembler Macro Function NC308 allows part of assembler commands to be written as C language functions Because specific assembler commands can be written directly in a C language program you can easily tune up the program B 8 2 Description Example of Assembler Macro Func
23. Generate vector table for fixed vector 3 An interrupt vector number can be specified when declaring When the interrupt vector number is specified the vector table is automatically generated Rules 1 Awarning is output when compiling if you declare interrupt processing functions that take parameters 2 A warning is output when compiling if you declare interrupt processing functions that return a value Be sure to declare that any return value of the function has the void type 3 Only functions for which the function is defined after a pragma INTERRUPT declaration are valid 4 No processing occurs if you specify other than a function name 5 No error occurs if you duplicate pragma INTERRUPT declarations 6 You cannot specify both switch E and switch B at the same time 7 Tf different interrupt vector numbers are written in the same interrupt handling function the vector number declared later is effective 8 You cannot use V and other switches at the same time pragma INTTERUPT _ intr vect 10 pragma_ INTTERUPT _ intr vect 20 The interrupt vector number 20 is effective Figure B 76 Example for writing different interrupt vector numbers REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 154 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference at acl ma INTERRUPT Declare interrupt function Rules 9 Acompile warining occurs if you use any function specified in on
24. Maximum value of the power of 10 that can be represented as a double type floating point numeric value 308 DBL_MAX EXP Maximum value of the power of the radix that can be represented as a double type floating point numeric value 1024 DBL_MIN Minimum value that a _ double type variable can take on as value 2 2250738585072014e 308 DBL_MIN_10_EXP Minimum value of the power of 10 that can be represented as a _ doubletype floating point numeric value 307 DBL_MIN_EXP Minimum value of the power of the radix that can be represented as a double type floating point numeric value 1021 FLT_DIG Maximum number of digits of float type decimal precision 6 FLT_EPSILON Minimum positive value where 1 0 FLT_EPSILON is found not to be 1 0 1 19209290e 07F FLT_MANT_DIG Maximum number of digits in the mantissa part when a float type floating point value is matched to the radix in its representation 24 FLT_MAX Maximum value that a float type variable can take on as value 8 40282347e 38F FLT_MAX_10_EXP Maximum value of the power of 10 that can be represented as a float type floating point numeric value 38 FLT_MAX_EXP Maximum value of the power of the radix that can be represented as a float type floating point numeric value 128 FLT_MIN Minimum value that a float type variable can take on as value 1 17549435e 38F
25. Only the function definition put after pragma ALMHANDLER are valid 4 No processing occurs if you specify other than a function name 5 Noerror occurs if you duplicate pragma ALMHANDLER declarations 6 Acompile warining occurs if you use any function specified in one of the following declarations in pragma ALMHANDLER pragma INTERRUPT pragma INTHANDLER pragma HANDLER pragma CYCHANDLER pragma TASK Example include lt mrXXX h gt include id h pragma ALMHANDLER alm void alm void lt Be sure to declare as type void omitted Figure B 81 Example of pragma ALMHANDLER Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 158 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma CY CHANDLER Cyclic handler declaration Function Declares an MR308 cyclic handler Syntax pragma CYCHANDLERAcyclic handler name Description By using the above format to declare a cyclic handler a function written in C NC308 generates the code for the cyclic handler to be used at the entry and exit points of the function o The cyclic handler is called from the system clock interrupt by the JSR instruction and returns by the RTS or EXITD instruction Rules 1 You can not write cyclic handlers that take parameters 2 The return value from the cyclic handler must be type void in the declaration 3 Only the function definition put after pragma CYCHANDLER are va
26. Supplement _inline that has the same function is handled as a reserved word REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 88 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fsmall_arra fSA Modify generated code Function When referencing a far type array whose total size is unknown when compiling this option calculates subscripts in 16 bits assuming that the array s total size is within 64 K bytes Supplement If when referencing array elements in a far type array such as array data in ROM the total size of the far type array is uncertain the compiler calculates subscripts in 32 bit in order that arrays of 64 Kbytes or more in size can be handled Take a look at the example below extern int array int i array j In this case because the total size of the array array is not known to the compiler the subscript j is calculated in 32 bit When this option is specified the compiler assumes the total size of the array array is 64 Kbytes or less and calculates the subscript j in 16 bit As a result the processing speed can be increased and code size can be reduced Renesas recommends using this option whenever the size of one array does not exceed 64 Kbytes fswitch_other_section fSOS Modify generated code Function This option outputs a ROM table for a switch statement to some other section than a program section Supplement Section name is switch_table
27. Use the format shown in Figure B 35 to specify auto variables and parameters asm MOV W 01H FB i lt Format for referencing auto variables asm BSET FB s bit0 lt Format for checking auto bit fields Figure B 35 Example Coding of asm Function 1 2 Specifying of register storage class You can specify the register storage class in NC308 When register class variables are compiled with option fenable_register fER use the format shown in Figure B 36 for register variables in asm functions REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 120 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference asm MOV W 0 i Format for checking register variables Figure B 36 Example Coding of asm Function 2 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 121 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference A variable may be handled as a register variable without transferring it to the auto area because of the improvement in the code efficiency when option O 1 5 OR OS OR_MAX OS_MAX are used Tn this case it is necessary to note that the assembly language is output by the register name when the argument is specified by using the asm function The FB offset value of the variable is not output 3 When referencing arguments in the asm function The compiler analyzes program flow in the interval in which variables including a
28. _line 7 HHC_SRC func 3 5 push w 0005H second argument 5 mov w 0003H RO first argument 3 jsr func add l 02H SP _line 8 C_SRC rts omitted Note In NC308 arguments are stacked in revere order beginning with the argument that is declared last in the function In this example arguments are passed via registers as they are processed Figure B 49 Compiling Result of smp1 c smp1 a30 A variable can be written for the argument of a function Figure B 50 shows an example where default arguments are specified with variables Figure B 51 shows a compile result of the sample program shown in Figure B 50 int near sym int func int i sym Default argument is specified with a variable void main void func Function is called using variable sym as argument omitted Figure B 50 Example for specifying default argument with a variable smp2 c REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 128 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference _main _line6 mov w _sym R1 Function is called using variable sym as argument jsr func line 7 rts Figure B 51 Compile Result of smp2 c smp2 a30 B 4 3 Restrictions on Default Argument Declaration of Function The default argument declaration of a function is subject to some restrictions as listed below These restrictions must be observed a When specifying a default value f
29. absolute module file map file etc generated by 1n308 ofile name Specifies the name s of the file s absolute module file map file etc generated by 1n308 This option can also be used to specify the destination directory Do not specify the filename extension 1 If you do not specify command line options c E P or S nc308 finishes at 1n308 and output files up to the absolute load REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 17 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler c Version and command line Information Display Option Table 2 3 shows the command line options that display the cross tool version data and the command line informations Table 2 3 Options for Displaying Version Data and Command line informations Option Function y Displays the name of the command program and the command line during execution V Displays the startup messages of the compiler programs then finishes processing without compiling d Options for Debugging Table 2 4 shows the command line options for outputting the symbol file for the C source file Table 2 4 Options for Debugging Option Function g Outputs debugging information to an assembler source file extension a30 Therefore you can perform C language level debugging genter Always outputs an enter instruction when calling a function Be sure to specify this option when using
30. lt RET gt Return key Always specify the startup program first when linking Figure 2 4 Example Command File Command Line Command files are written in the manner described below ncrt0 a30 lt CR gt Command File description sample1 c sample2 r30 lt CR gt g as308 kCR gt o lt CR gt lt CR gt Denotes carriage return sample lt CR gt Figure 2 5 Example Command File description REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 15 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler b Rules on command file description The following rules apply for command file description o Only one command file can be specified at a time You cannot specify multiple command files simultaneously No command file can be specified in another command file Multiple command lines can be written in a command file New line characters in a command file are replaced with space characters The maximum number of characters that can be written in one line of a command file is 2 048 An error results when this limit is exceeded c Precautions to be observed when using a command file A directory path can be specified for command file names An error results if the file does not exist in the specified directory path Command files for 1n308 whose file name extension is cm are automatically generated in order for specifying files when linking Therefore existing fi
31. or o to octal numbers Write decimal integers only Append H or h to hexadecimal numbers If the number starts with letters A to F precede it with 0 Rules 1 All storage classes such as extern and static for variables specified in pragma ADDRESS are invalid 2 Variables specified in pragma ADDRESS are valid only for variables defined outside the function 3 pragma ADDRESS is valid for previously declared variables 4 pragma ADDRESS is invalid if you specify other than a variable 5 No error occurs if a pragma ADDRESS declaration is duplicated but the last declared address is valid 6 A warning occurs if you include an initialization expression and an initialization expression is invalid 7 Normally pragma ADDRESS operates on I O variables so that even though volatile may not actually be specified the compiler processes them assuming volatile is specified Examples pragma ADDRESS port 24H int iO void func void io 10 Figure B 70 pragma ADDRESS Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 147 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference i D is ma ADDRESS Specify absolute address of I O variable Examples However as follows when the variable is used before specification of pragma ADDRESS specification of pragma ADDRESS is invalid char port void func void pragma ADDRESS port 100H p
32. signed long long 3 long type constants Specify long long type constants by appending the letter LL or Il The type is determined from the value in the following order Octal and hexadecimal signed long long gt unsigned long long o Decimal signed long long 2 Floating point constants If nothing is appended to the value floating point constants are handled as double types To have them processed as float types append the letter F or f after the value If you append L or 1 they are treated as long double types 3 Character constants Character constants are normally written in single quote marks as in character You can also include the following extended notation escape sequences and trigraph sequences Hexadecimal values are indicated by preceding the value with x Octal values are indicated by preceding the value with REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 179 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications TableC 7 Extended Notation List Notation Escape sequence Notation Trigraph sequence single quote constant octal y quotation mark xconstant hexadecimal Y backslash 22 express character question mark 2 express character a bell 22 express character b backspace 22 express character f form feed lt express character n line feed 2 express character r return 20 g
33. 1 Rules 1 Inhibiting packing This NC308 extended function allows you to control the mapping of structure members Figure B 67 is an example of mapping the members of the structure in Figure B 66 using pragma STRUCT to inhibit packing int j structs Member Type Size Mapped int i name location char c offset Figure B 67 Example Mapping of Structure Members 2 As shown Figure B 67 if the total size of the structure members is an odd number of bytes pragma STRUCT adds 1 byte as packing after the last member Therefore if you use pragma STRUCT to inhibit padding all structures have an even byte size REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 143 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma STRUCT Description Control structure mapping 2 Arranging members This NC308 extended function allows you to map the all odd sized structure members first followed by even sized members Figure B 68 shows the offsets when the structure shown in Figure B 67 is arranged using pragma STRUCT struct s Member Type Size Mapped int i name location char c offset int j i int 16 bits 0 p j int 16 bits 2 c char 8 bits 4 Figure B 68 Example Mapping of Structure Members 3 You must declare pragma STRUCT for inhibiting packing and arranging the structure members before de
34. 2 00 2010 04 01 RENESAS 298 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library ungetc Input Output Functions Function Returns one character to the stream Format include lt stdio h gt int ungetc c stream Method macro Argument int c Character to be returned FILE _far stream Pointer of stream ReturnValue Returns the returned one character if done normally Returns EOF if the stream is in write mode an error or EOF is encountered or the character to be sent back is EOF Description Returns one character to the stream Interprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 299 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library vfprintf Input Output Functions Function Output to a stream with format Format include lt stdarg h gt include lt stdio h gt int vfprintf stream format ap Method function Argument FILE _far stream Pointer of stream const char _far format Pointer of the format specifying character string va_list ap Pointer of argument list ReturnValue Returns the number of characters output Description Output toa stream with format When writing pointers in variable length variables make sure they are a far type pointer vprintf Input Output Functions Function Output to stdout with format Format include lt stdarg h gt include lt stdio h
35. 2 11 Startup Program List 6 ncrt0 a30 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 28 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 2 2 2 Customizing the Startup Program a Overview of Startup Program Processing 1 About nert0 a30 This program is run at the start of the program or immediately after a reset It performs the following process mainly Sets the top address __SB_ of the SBDATA area it is accessing area to used the SB relative addressing mode Sets the processor s operating mode Initializes the stack pointer ISP Register and USP Register Initializes SB register Initializes INTB register Initializes the data near area 1 Default bss_NE bss_NO bss_SE and bss_SO sections are cleared to 0 Also the initial values in the ROM area data_NEI data_NOI data_SEI data_SOI are transferred to RAM data_NE data_NO data_SE and data_SO 2 pragma SBI6DATA Extended Functions bss_NE and bss_NO sections are cleared to 0 Also the initial values in the ROM area data_NEI data_NOI are transferred to RAM data_NE data_NO Initializes the data far area 1 Default bss_FE and bss_FO sections are cleared to 0 Also the initial values in the ROM area data_FEI data_FOID storing them are transferred to RAM data_FE data_FO 2 pragma SBI6DATA Extended Functions bss_SE bss_SO bss_6E and bss_60 sections are cleared to 0 Also the initial values in the ROM are
36. 3 40282347e 38F double Yes 64 2 225073858507201 4e 308 to long double 1 7976931348623157e 308 near pointer No 16 0 to OxFFFF far pointer No 32 0 to OXFFFFFFFF J The _Bool type can not specify to sign e If a char type is specified with no sign it is processed as an unsigned char type Ifan int or short type is specified with no sign it is processed as a signed int or signed short type e If a long type is specified with no sign it is processed as a sign long type If a long long type is specified with no sign it is processed as a sign long long type J If the bit field members of a structure are specified with no sign they are processed as unsigned e Can not specifies bit fields of long long type REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 198 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 1 2 Floating Type Table D 2 shows the number of bytes used by floating type data Table D 2 Data Size of Floating Type Type Existence of sign Bit Size Range of values float Yes 32 1 17549435e 38F to 3 40282347e 38F double Yes 64 2 2250738585072014e 308 to long double 1 7976931348623157e 308 NC308 s floating point format conforms to the format of IEEE Institute of Electrical and Electronics Engineers standards The following shows the single precision and double precision floating point formats 1 Single precision floating point data format Figure D 1 shows
37. C Compiler B Extended Functions Reference C source file void func void int idata 1 auto variable FB offset value 2 asm MOV WwW FB RO idata asm CMPW 00001H RO remainder omitted Assembly language source file compile result FUNCTION func 4 FRAME AUTO idata size 2 offset 2 abbreviated C_SRC asm MOV W FB RO idata HHH ASM START MOV W 2 FB RO lt Transfer FB offset value 2 to RO register _line5 Ht C_SRC asm CMP W 00001H R0 CMPW 00001H RO HHH ASM END remainder omitted Figure B 20 Example for Referencing an auto Variables You can also use the format show in Figure B 21 so that auto variables in an asm function use a 1 bit field Can not operate bit fields og greater than 2 bits asm op code b FB bit field name Figure B 21 Format for Specifying FB Offset Bit Position You can only specify one variable name using this format Figure B 22 is an example void func void struct TAG char bit0 1 char bit1 1 char bit2 1 char bit3 1 s asm bset b FB s bit1 Figure B 22 Example for Specifying FB Offset Position REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 113 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Figure B 23 shows examples of referencing auto area bit fields and the result of compiling C source file void fun
38. C Compiler E Standard Library Table E 8 Mathematical Functions Function Contents Reentrant acos Calculates arc cosine O asin Calculates arc sine O atan Calculates arc tangent o atan2 Calculates arc tangent o ceil Calculates an integer carry value o cos Calculates cosine O cosh Calculates hyperbolic cosine 0 exp Calculates exponential function o fabs Calculates the absolute value of a double precision floating point O number floor Calculates an integer borrow value O fmod Calculates the remainder frexp Divides floating point number into mantissa and exponent parts 0 labs Calculates the absolute value of a long type integer e Idexp Calculates the power of a floating point number O log Calculates natural logarithm o log10 Calculates common logarithm o modf Calculates the division of a real number into the mantissa and exponent O parts pow Calculates the power of a number o sin Calculates sine O sinh Calculates hyperbolic sine O sqrt Calculates the square root of a numeric value O tan Calculates tangent O tanh Calculates hyperbolic tangent o h Integer Arithmetic Functions The following lists integer arithmetic functions Table E 9 Integer Arithmetic Functions Function Contents Reentrant abs Calculates the absolute value of an integer O bsearch Performs binary search in an array O div Divides
39. C Compiler Package V 5 42 C Compiler E Standard Library islower Function Checks whether the character is a lower case letter a to 2 Format include lt ctype h gt int islower Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a lower case letter Returns 0if not a lower case letter Description Determines the type of character in the parameter isprint Function Checks whether the character is printable including a blank 0x20 to 0x76 Format include lt ctype h gt int isprint c Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if printable Returns 0 if not printable Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 258 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library ispunct Character Handling Functions Function Checks whether the character is a punctuation character Format include lt ctype h gt int ispunct Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a punctuation character Returns 0 if not a punctuation character Description Determines the type of character in the parameter isspace Character Handling Functions Function Checks whether the character is a blank tab or new line Format include lt ctype h
40. Calling a Function sample c The compile result of the above sample program is shown in the next page Figure D 11 shows the compile result of program part 2 that defines function func_proto Figure D 12 shows the compile result of program part 3 that defines function func_no_proto Figure D 13 shows the compile result of program part 4 that calls function func_proto and function func_no_proto REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 206 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules HHH FUNCTION func_proto HHH FRAME AUTO i size 2 offset 2 H FRAME ARG j size 2 offset8 lt 8 FRAME ARG k size 2 offset 10 7 REGISTERARG i size 2 REGISTER RO 9 HHH ARG Size 4 Auto Size 2 Context Size 8 SECTION program CODE ALIGN _file sample c align ine 4 HH C_ SRC glo func_proto func_proto 10 enter 02H mov w RO 2 FB i i ine 5 H C_SRC return i j k mov w 2 FB RO i add w 8 FB RO j add w 10 FB RO k exitd E1 This passes the third argument k via stack This passes the first argument i via stack This passes the second argument j via register 0 7 8 9 10 This is the start address of function func_proto ee ee Figure D 11 Compile Result of Sample Program sample c 1 In the compile result 1 of the sample program sample c listed in Figure D 10 the first and second argume
41. FLT_MIN_10_EXP Minimum value of the power of 10 that can 37 be represented as a float type floating point numeric value FLT_MIN_EXP Maximum value of the power of the radix 125 that can be represented as a float type floating point numeric value REJ10J2057 0200 Rev 2 00 2010 04 01 220 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library float h Macro name Contents Defined value FLT_RADIX Radix of exponent in floating point 2 representation FLT_ROUNDS Method of rounding off a floating point number 1 Rounded to the nearest whole number REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 221 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library limits h Function Defines the limitations applying to the internal processing of the compiler The following lists the macros that define these limits Macro name Contents Defined value MB_LEN MAX Maximum value of the number of 1 multibyte character type bytes CHAR BIT Number of char type bits 8 CHAR MAX Maximum value that a char type variable 255 can take on as value CHAR MIN Minimum value that a char type variable 0 can take on as value SCHAR_MAX Maximum value that a signed char type 127 variable can take on as value SCHAR_MIN Minimum value that a signed char type 128 variable can take on as value INT_MAX Maxi
42. Function 229 E 2 3 Standard Function Reference 235 E 2 4 Using the Standard Library 303 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS M32C Series C Compiler Package V 5 42 C Compiler Contents E 3 Modifying Standard Library 304 E 3 1 Structure of I O Functions 304 E 3 2 Sequence of Modifying I O Functions 305 Appendix F Error Messages 314 Fl Message Format 314 F2 nc308 Error Messages 315 F3 cpp308 Error Messages 317 F4 cpp308 Warning Messages 320 F5 ccom308 Error Messages 321 F6 cccom308 Warning Messages 334 Appendix G The SBDATA declaration amp SPECIAL page Function declaration Utility utl308 343 G 1 Introduction of utl308 343 G 1 1 Introduction of utl308 processes 343 G 2 Starting utl308 345 G 2 1 utl308 Command Line Format 345 G 2 2 Selecting Output Informations 346 G 2 3 utl308 Command Line Options 346 G 3 Notes 349 G 4 Conditions to establish SBDATA declaration amp SPECIAL Page Function declaration 349 G 4 1 Conditions to establish SBDATA declaration 349 G 4 2 Conditions to establish SPECIAL Page Function declaration 349 G 5 Example of utl308 use 350 G 5 1 Generating a SBDATA declaration file 350 G 5 2 Generating a SPECIAL Page Function declaration file 352 G 6 utl308 Error Messages 353 G 6 1 Error Messages 353 G 6 2 Warning Messages 353 Appendix H Using gensni or the sni File Creation Tool for Call Walker 354 H 1 Starting Call Walker 354 H 1 1 Note on Call Walker 354 H 2 Outline of gensni 354 H 2 1 Processi
43. Pointer to the second character string to be compared ReturnValue ReturnValue 0 The two character strings are equal ReturnValue gt 0 The first character string s1 is greater than the other ReturnValue lt 0 The second character string s2 is greater than the other Description Usually the program code described by macro is used for this function In using the function in a library please describe it as undef strcmp after description of include lt string h gt Compares each byte of two character strings ending with NULL When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strcoll String Handling Functions Function Compares character strings using locale information Format include lt string h gt int strcoll s1 s2 Method function Argument const char _far s1 Pointer to the first character string to be compared const char _far s2 Pointer to the second character string to be compared ReturnValue ReturnValue 0 The two character strings are equal ReturnValue gt 0 The first character string s1 is greater than the other ReturnValue lt 0 The second character string s2 is greater than the other Description When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 201
44. Result of sample program smp a30 B 5 3 Restrictions on inline Storage Class When specifying the inline storage class pay attention to the following 1 Regarding the parameter of inline functions The parameter of an in line function cannot be used by structure and union It becomes a compile error 2 Regarding the indirect call of inline functions The indirect call of an in line function cannot be carried out It becomes a compile error when a indirect call is described 3 Regarding the recursive call of inline functions The recursive call of an in line function cannot be carried out It becomes a compile error when a recursive call is described 4 Regarding the definition of an inline function When specifying inline storage class for a function be sure to define the body of the function in addition to declaring it Make sure that this body definition is written in the same file as the function is written The description in Figure B 56 is processed as an error in NC3808 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 131 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference inline void func int i void main void func 1 Error Message Error ccom sample c line 5 inline function s body is not declared previously gt func 1 Sorry compilation terminated because of these errors in main Figure B 56 Example of inappropriate code of inline fu
45. Start address of the memory area to be copied to unsigned long size Number of bytes to be copied ReturnValue No value is returned Description Copies the number of bytes specified in size from the beginning of the area specified in src to the area specified in dtop bsearch Integer Arithmetic Functions Function Performs binary search in an array Format include lt stdlib h gt void _far bsearch key base nelem size cmp Method function Variable const void _far key Search key const void _far base Start address of array size_t nelem Element number size_t size Element size int cmp Compare function ReturnValue Returns a pointer to an array element that equals the search key Returns a NULL pointer if no elements matched Note The specified item is searched from the array after it has been sorted in ascending order REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 239 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library bzero Function Initializes a memory area by clearing it to zero Format include lt string h gt void bzero top size Method function Variable char _far top Start address of the memory area to be cleared to zero unsigned long size Number of bytes to be cleared to zero ReturnValue No value is returned Description Initializes to 0 the number of bytes specified in size from the starting address of the area specified in top REJ10J2057 0200 Rev 2 0
46. This allows the necessary ROM capacity to be reduced However this may result in an increased amount of stack being used Ostatic_to_inline OSTI A static function is treated as an inline function O50A None Inhibits code generation based on bit manipulating instructions when the optimization option O5 is selected The effects of main optimization options are shown in Table A 6 Table A 6 Effect of each Optimization Options Option O OR OS OSA SPEED faster lower faster faster ROM size decrease decrease increase decrease usage of stack decrease same same increase REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference 1 Optimization Function Optimizes speed and ROM size This option can be specified with g options O3 is assumed if you specify no numeric no level O1 Some representative optimization items executed by this option are the following Allocate the register the variable Delete a meaningless conditional expression Deletion of statement not logically executed O2 Makes no difference with O1 O3 Execute some optimization items addition to O1 Some representative optimization items executed by this option are the following Grouping of bit manipulations Constant folding processing of floating point numbers Inline padding of standard library functions O4
47. __S0_s val 16 Reference to static variable ine 13 H C_SRC asm mov w f_val r_val mov w 2 FB R1 HHH ASM END 1 It oe not restrict pak A toa aen even if it specifies a register caameee REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 119 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Figure B 33 Example for Referencing Variables of Each Storage Class B 2 6 Selectively suppressing optimization Tn Figure B 34 the dummy asm function is used to selectively suppress a part of optimization pragma ADDRESS port 02H struct port char bitO 1 char bit1 1 char bit2 1 char bit3 1 char bit4 1 char bit5 1 char bit6 1 P char bit7 1 Optimization results in any steps to set jport the two port bits separately being void func void combined as one step pnt crmeaion HB port bit0 0x01 Optimization gt bset 00H _port port bit1 0x01 bset 00H _port Optimization is suppressed Figure B 34 Example of Suppressing Optimization by Dummy asm B 2 7 Notes on the asm Function a Extended Features Concerning asm functions When using the asm function for the following processing be sure to use the format shown in the coding examples 1 When the storage class is the auto variable the argument and 1 bit bit field Do not specify auto variables or parameters or 1 bit bit fields using the offset from the frame base register FB
48. a function hat has a default argument Declare the default argument before using a unction this interrupt function is called as normal function before Uey A function once used is declared in pragma NTERRUPT An interrupt function cannot be called Check the ontent of pragma too big octal character The character constant or the octal constant in he character string exceeded the limit value 255 n decimal Do not use a value greater than 255 to describe he constant too few parameters Arguments are insufficient compared to the number f arguments declared in prototype declaration Check the number of arguments too many parameters Arguments are excessive compared to the number f arguments declared in prototype declaration Check the number of arguments unknown pragma STRUCT xxx ey pragma STRUCTxxx cannot be processed his line will be ignored Write correctly Unknown debug option dx The option dx cannot be specified Specify the option correctly Unknown function option Wxxx The option Wxxx cannot be specified Specify the option correctly Unknown function option fx The option fx cannot be specified Specify the option correctly Unknown function option gx The option gx cannot be specified Specify the option correctly Unknown optimize option mx Yr ew eu ey ey The option mx cannot be specified Specify the option correctly
49. an int type integer and calculates the remainder O labs Calculates the absolute value of a long type integer O Idiv Divides a long type integer and calculates the remainder O qsort Sorts elements in an array O rand Generates a pseudo random number o srand Imparts seed to a pseudo random number generating routine 0 REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library i Character String Value Convert Functions The following lists character string value convert functions Table E 10 Character String Value Convert Functions Function Contents Reentrant atof Converts a character string into a double type floatingpomt number o atoi Converts a character string into an int O atol Converts a character string into a long O strtod Converts a character string into a double o strtol Converts a character string into a long e strtou Converts a character string into an unsigned long type integer 0 j Multi byte Character and Multi oyte Character String Manipulate Functions The following lists Multibyte Character and Multibyte Character string Manipulate Functions Table E 11 Multibyte Character and Multibyte Character String Manipulate Functions Function Contents Reentrant mblen Calculates the length of a multibyte character string O mbstowcs Converts a multibyte character string into a wide character string O m
50. and Table F2 list the nc308 compile driver error messages and their countermeasures Table F 1 nc308 Error Messages 1 2 Error message Description and countermeasure Arg list too long e The command line for starting the respective processingsystem is longer than the character string defined bythe system gt Specify a NC308 option to ensure that the number ofcharacters defined by the system is not exceeded Usethe v option to check the command line used for eachprocessing block Cannot analyze error e This error message is not normally displayed It is aninternal error Contact Renesas Solutions Corp command file line characters exceed e There are more than 2048 characters on one or more lines 2048 in the command file gt Reduce the number of characters per line in the commandfile to 2048 max Core dump command_name e The processing system Gndicated in parentheses caused a core dump The processing system is not running correctly Checkthe environment variables and the directory containingthe processing system If the processing system stilldoes not run correctly Please contact Renesas SolutionsCorp Corrupted processing system executable file Reinstall the processing system You specified an illegal option for NC308 Specify the correct option You specified options greater than 100 characters for as308 or In3808 Reduce the options to 99 characters or less This error message is not n
51. and binary mode _BIN e Text mode Echo back of I O data and conversion of characters See the source programs fgetc c and fputc c of the fgetc and fputc functions for details of echo back and character conversion J Binary mode No conversion of I O data These flags are set in the initialization block of the stream 5 int _func_in Q When the stream is in read only mode IOREAD or read write mode _IORW stores the level 3 input function pointer Stores a NULL pointer in other cases This information is used for indirect calling of level 3 input functions by level 2 input functions int func out When the stream is in write mode IOWRT stores the level 3 output function pointer If the stream can be input JOREAD or _IORW and is in text mode it stores the level 3 output function pointer for echo back Stores a NULL pointer in other cases This information is used for indirect calling of level 3 output functions by level 2 output functions REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 310 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library Set values for all elements other than char_buff in the stream initialization block The standard library file supplied in the NC308 package initializes the stream in function init which is called from the ncrt0 a30 startup program Figure E 5 shows the source program for the init function include lt stdio h gt FILE _iob 4 Void init void void init v
52. be specified when declaring e E Multiple interrupts are enabled immediately after control is switched over to the interrupt handler declared by this function 8 To declare an MR308 OS independent interrupt handler use pragma INTERRUPT Rules 1 You can not write interrupt handlers that take parameters 2 The return value from the interrupt handler must be type void in the declaration 3 Do not use the ret_int system calls from C 4 Only the function definition put after pragma INTHANDLER are valid 5 No processing occurs if you specify other than a function name 6 No error occurs if you duplicate pragma INTHANDLER declarations 7 A compile warning occurs if you use any function specified in one of the following declarations in pragma INTHANDLER pragma INTERRUPT pragma HANDLER pragma ALMHANDLER pragma CYCHANDLER pragma TASK Example include lt mrXXX h gt include id h pragma INTHANDLER hand void hand void omitted F ret_int Figure B 83 Example of pragma INTHANDLER Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 160 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma TASK Task start function declaration Function Declares an MR308 task start function Syntax pragma TASKAtask start function name Description By using the above format to declare a task start function written in C NC308 generates the code f
53. cannot be used for standard auxiliary I O used by UARTO Therefore only use functions that take streams as parameters Figure E 6 shows how to change the init function void init void F omitted stdaux gt _flag _lORW 2 Set read write mode omitted stdaux gt _mod _ TEXT 2 set text mode omitted stdaux gt _func_in _sget0 3 set UARTO level 3 input function omitted stdaux gt _func_out _sput0 3 set UARTO level 3 input function omitted speed _96 _B8 _PN _S2 4 set UARTO speed function init_prn 2 to 4 correspond to the items in the description of setting above Figure E 6 Modifying the init Function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 312 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library c Incorporating the Modified Source Program There are two methods of incorporating the modified source program in the target system 1 Specify the object files of the modified function source files when linking 2 Use the makefile makefile dos supplied in the NC308 package to update the library file In method 1 the functions specified when linking become valid and functions with the same names in the library file are excluded Figure E 7 shows method 1 Figure E 8 shows method 2 nc308 c g osample nert0 a30 device r30 initr80 sample c lt RET gt This example shows the command line when device c and init c are mo
54. char type variables to char type variables Assignment of immediate values to char type variables Assignment of immediate values to float type variables Wmake_tagfile WMT Warning Options Function Outputs error messages to the tag file of source file by source file when an error or warning occurs Supplement This option with Werror_file WEF option can t specify REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 95 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Wnesting comment WNC Warning Options Function Generates a warning when comments include Supplement By using this option it is possible to detect nesting of comments Wno_stop WNS Warning Options Function Prevents the compiler stopping when an error occurs Supplement The compiler compiles the program one function at a time If an error occurs when compiling the compiler by default does not compile the next function Also another error may be induced by an error giving rise to multiple errors In such a case the compiler stops compiling When this option is specified the compiler continues compiling as far as possible Notes A system error may occur due to erroneous description in the program In such a case the compiler stops compiling even when this option is specified Wno_used_argument WNUA Warning Options Function Outputs a warning for unused arguments function Wno_used_functio
55. characters after conversion 29 EOF in comment End of file encountered in a comment Correct the source file 31 EOF in preprocess command End of file encountered in a preprocess command Correct the source file 32 unknown preprocess command Yee elu An unknown preprocess command has been specified Only the following preprocess commands can be used in CPP308 include define undef if ifdef ifndef Helse endif elseif line assert pragma error 33 new_line in string A new line code was included in a character constant or character string constant Correct the program 34 string literal out of range 509 characters Acharacter string exceeded 509 characters Reduce the character string to 509 characters max 35 macro replace nesting over Macro nesting exceeded the limit 20 Reduce the nesting level to a maximum of 20 41 include file error Ueu ew ey Error in include instruction Correct 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 319 Table F 5 cpp308 Error Messages 3 3 No Error message Description and countermeasure 43 illegal id name e Error in following macro name or argument in define command FILE_ LINE DATE _ __TIME Correct the source file 44 token buffer over flow e Token character buffer of d
56. consisting of characters other than those in s2 from area s1 and searches the characters from the beginning of s1 You cannot search for O REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library stricmp String Handling Functions Function Compares character strings All alphabets are handled as upper case letters Format include lt string h gt int stricmp s1 s2 Method function Argument char _far s1 Pointer to the first character string to be compared char _far s2 Pointer to the second character string to be compared ReturnValue ReturnValue 0 The two character strings are equal ReturnValue gt 0 The first character string s1 is greater than the other ReturnValue lt 0 The second character string s2 is greater than the other Description Compares each byte of two character strings ending with NULL However all letters are treated as uppercase letters strerror Function Format Method Argument ReturnValue Description REJ10J2057 0200 Rev 2 00 2010 04 01 String Handling Functions Converts an error number into a character string include lt string h gt char _far strerror errcode function int errcode error code Returns a pointer to a message character string for the error code stderr returns the pointer for a static array 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Sta
57. declarator The declaration statement is incomplete Write a complete declaration statement Not enough memory The memory area is insufficient Increase the memory or the swap area not have long char Type specifiers long and char are simultaneously used Write the type specifier correctly not have long float Type specifiers long and float are simultaneously used Write the type specifier correctly not have long short Type specifiers long and short are simultaneously used Write the type specifier correctly not static initializer for variablename ew ew eu eju eu ey The initialize expression of static variable contains an error This is because the initialize expression is a function call for example Write the initialize expression correctly not struct or union type ey y The left side expression of gt is not the structure or union type Use the structure or union type to describe the left side expression of gt redeclare of variable name e An variable name has been declared twice Change the name for either of the two variable name redeclare of enumerator e Anenumerator has been declared twice Change the name for either of the two enumerators redefine function function name e The function indicated by function name is defined twice gt The function can be defined only once Change the name for either of the two functions redefinition tag
58. default information is output to the standard output device Output the absolute module file nc308 ncrt0 a30 finfo sample c lt RET gt M832C Series Compiler V X XX Release XX Copyright C XXXX XXXX XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All right reserved nert0 a30 sample c Output SBDATA declaration Y utl308 sb308 ncrt0 x30 o sample lt RET gt M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS ELECTRONICS CORPORATION AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Output SPECIAL page Function declaration Y utl308 sp308 ncrt0 x30 o sample lt RET gt COPYRIGHT C XXXX XXXX RENESAS ELECTRONICS CORPORATION AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED lt RET gt Means entering the return key FigureG 3 Example utl308 Command Line REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 345 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 2 2 Selecting Output Informations To select outputs between SBDATA declaration and SPECIAL page function declaration in utl308 specify the options described below If neither option is specified an error is assumed for utl308 1 Output SBDATA declaration e Option sb308 2 Output SPECIAL page Function declaration e Option sp308 Figure G 3 shows the sbutl command line options G 2 3 utl308
59. e Only storage class and type specifiers are found gt Write a declarator float and double not have sign e Specifiers signed unsigned are described in float or double Write the type specifier correctly floating point value overflow e The floating point immediate value exceeds the representable range gt Make sure the value is within the range floating type s bitfield e Abit field of an invalid type is declared Use the integer type to declare a bit field for struct union statement e The struct or union type is used in the second expression of the for statement Use the scalar type to describe the second expression of the for statement for void statement e The 2nd expression of the for statement has void Use the scalar type as the 2nd expression of the for statement REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 323 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 324 Table F 10 ccom308Error message 4 13 Error message Description and countermeasure function initialized An initialize expression is described for function declaration Delete the initialize expression function member declared A member of struct or union is function type Write the members correctly function returning a function declared elu ely The type of the return value in function declaration is function type Change the type to pointer t
60. end of the line is replaced with the null character N0 Interprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 254 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library init Function Initializes the stream Format include lt stdio h gt void init void Method function Argument No argument used ReturnValue No value is returned Description Initializes the stream Also calls speed and init_prn in the function to make the initial settings of the UART and Centronics output device init is normally used by calling it from the startup program isalnum Character Handling Functions Function Checks whether the character is an alphabet or numeral A Z a z 0 9 Format include lt ctype h gt int isalnum Method macro Argument int c Character to be checked ReturnValue Returns any value other than 0 if an alphabet or numeral Returns 0 if not an alphabet nor numeral Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 255 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library isaloha Character Handling Functions Function Checks whether the character is an alphabet A Z a z Format include lt ctype h gt int isalpha Method macro Argument int Character to be checked ReturnValue Returns an
61. equipment submersible repeaters nuclear reactor control systems medical equipment or systems for life support e g artificial life support devices or systems surgical implantations or healthcare intervention e g excision etc and any other applications or purposes that pose a direct threat to human life You should use the Renesas Electronics products described in this document within the range specified by Renesas Electronics especially with respect to the maximum rating operating supply voltage range movement power voltage range heat radiation characteristics installation and other product characteristics Renesas Electronics shall have no liability for malfunctions or damages arising out of the use of Renesas Electronics products beyond such specified ranges Although Renesas Electronics endeavors to improve the quality and reliability of its products semiconductor products have specific characteristics such as the occurrence of failure at a certain rate and malfunctions under certain use conditions Further Renesas Electronics products are not subject to radiation resistance design Please be sure to implement safety measures to guard them against the possibility of physical injury and injury or damage caused by fire in the event of the failure of a Renesas Electronics product such as safety design for hardware and software including but not limited to redundancy fire control and malfunction prevention appropriate treatment for agin
62. fCNR Does not handle the types specified by const as ROM data fdouble_32 fD32 This option specifies that the double type be handled in 32 bit data length as is the float type fenable_register FER Make register storage class available fextend_to_int fETI Performs operation after extending char type data to the int type Extended according to ANSI standards 2 ffar RAM fFRAM Changes the default attribute of RAM data to far finfo None Outputs the information required for the Inspector STK Viewer Map Viewer and utl308 to the absolute module file x30 JSRW None Changes the default instruction for calling functions to JSR W fmake_special_table f MST Automatically generates the special page vector table fmake_vector_table fFMVT Automatically generates the variable interrupt vector table fnear_pointer FNP Specified the default attribute of the pointer type variables to near This option sets the default pointer size to 16 bits fnear_ROM fNROM Change the default attribute of ROM data to near fno_align FNA Does not align the start address of the function fno_even FNE Allocate all data to the odd section with no separating odd data from even data when outputting fno_switch_table fNST When this option is specified the code which branches since it compares is generated to a switch statement fnot_address_volatile fNAV Does not regard the variables specified by pragma ADDRESS pragma EQU as t
63. far using a common header file REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 109 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference common header file common h externint far data C source file C source file a c b c include common h void main void i l int data 10 l data 1 i i l ee ee Figure B 14 Example of Common header file Declaration B 1 10 Notes on near and far Attributes a Notes on near and far Attributes of Functions Functions always assume the far attribute Do not declare functions with near NC308 will output a warning when you declare the near attribute for a function b Notes on near and far Modifier Syntax Syntactically the near and far modifiers are identical to the const modifier The following code therefore results in an error int i far j This is not permitted y int i int far j Figure B 15 Example of Variable Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 110 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 2 asm Function NC308 allows you to include assembly language routines asm functions in your C source programs B 2 1 Overview of asm Function The asm function is used for including assembly language code in a C source program As shown in Figure B 16 the format of the asm function is asm where an assembly language instruction that con
64. function Argument unsigned int seed Series value of random number ReturnValue No value is returned Description Initializes seeds the pseudo random number series produced by rand using seed sscant Input Output Functions Function Reads data with format from a character string Format include lt stdio h gt int sscanf string format argument Method function Argument const char _far string Pointer of the input character string const char _far format Pointer of the format specifying character string ReturnValue Returns the number of data entries stored in each argument Returns EOF if null character 0 is input as data Description Converts the characters input as specified in format and stores them in the variables shown in the arguments Argument must be a far pointer to the respective variable Format is specified in the same way as in scanf REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 285 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strcat String Handling Functions Function Concatenates character strings Format include lt string h gt char _far strcat s1 s2 Method function Argument char _far s1 Pointer to the character string to be concatenated to const char _far s2 Pointer to the character string to be concatenated from ReturnValue Returns a pointer to the concatenated character string area s1 Description Concatenates char
65. function with JSR A Function Calls a function using the JSR A instruction Syntax pragma JSRA function name Description Calls all functions declared using pragma JSRA using the JSR A instruction pragma JSRA can be specified to avoid errors in the case of functions that include code generated using the fJSRW option and that cause errors during linking Rules This preprocessing directive has no effect when the fJSRW option not specified Example extern void func int i pragma JSRA func void main void func 1 Figure B 87 Example of pragma JSRA REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 164 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma JSRW Calls a function with JSR W Function Calls a function using the JSR W instruction Syntax pragma JSRW function name Rules By default the JSR A instruction is used when calling a function that in the same file has no body definition However the pragma JSRW declared function are always called using JSR W This directive helps reduce ROM size Rules 1 You may not specify pragma JSRW for static functions 2 When function call with the JSR W instruction does not reach pragma JSRW declared function an error occurs at link time In this case you may not use pragma JSRW Example extern void func int i pragma JSRW func void main void func 1
66. gt int isspace Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a blank tab or new line Returns 0 if not a blank tab or new line Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 259 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library isupper Character Handling Functions Function Checks whether the character is an upper case letter A to Z Format include lt ctype h gt int isupper c Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if an upper case letter Returns 0 if not an upper case letter Description Determines the type of character in the parameter isxdigit Function Checks whether the character is a hexadecimal character 0 to 9 Ato F a to P Format include lt ctype h gt int isxdigit Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a hexadecimal character Returns 0 if not a hexadecimal character Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 260 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library labs Function Calculates the absolute value of a long type integer Format include lt stdlib h gt long labs n Method functio
67. gt int vprintf format ap Method function Argument const char _far format Pointer of the format specifying character string va_list ap Pointer of argument list ReturnValue Returns the number of characters output Description Output to stdout with format When writing pointers in variable length variables make sure they are a far type pointer REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 300 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library vsprintf Input Output Functions Function Output to a buffer with format Format include lt stdarg h gt include lt stdio h gt int vfprintf s format ap Method function Argument char _far s Pointer of the location to be store const char _far format Pointer of the format specifying character string va_list ap Pointer of argument list ReturnValue Returns the number of characters output Description When writing pointers in variable length variables make sure they are a far type pointer REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 301 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library wcstombs Multi byte Character Multi oyte Character String Manipulate Functions Function Converts a wide character string into a multibyte character string Format include lt stdlib h gt size_t _far westombs s wes n Method function Argument char _far s Pointer to an area for storing conversion
68. gt None Does not use the specified number s as SPECIAL Page sp lt number gt lt number gt Function numbers two or more numbers Use this option simultaneously with the sb308 option sp lt number gt lt number gt sp308 None sb308 gt Outputs SBDATA declaration sp308 gt Outputs SPECIAL page function declaration To use utl308 always specify one of the two options If neither option is specified an error is assumed Wstdout None Output the warning and error messages to the honst machines standard output device REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 346 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 all Makes all gobal variables vaild Function When used simultaneously with the sb308 option Because the usage frequency is low SBDATA declaration is output in the form of a comment for even the variables that are not placed in the SB area When used simultaneously with the sp308 option Because the usage frequency is low SPECIAL declaration is output in the form of a comment for even the functions that are not placed in the SPECIAL page area Supplement Use of this option helps to find the functions which are not called even for once in program execution However the functions which are called only indirectly require the user s attention because such functions are indicated to have been called
69. included in declarations using the same syntactical format as the const and volatile type modifiers Figure B 1 is a format of variable declaration type specifier near or far variable Figure B 1 Format of Variable added near far modifier Figure B 2 is an example of variable declaration Figure B 3 is a memory map for that variable intnear in_data int far if_ data void func void remainder omitted Figure B 2 Example of Variable Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 104 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference in_dat _in_data Bice near area far area mike 1 _if data Figure B 3 Memory Location of Variable B 1 3 Format of Pointer type Variable Pointer type variables by default are the far type 4 bytes variable A declaration example of pointer type variables is shown in Figure B 4 Example int ptr Figure B 4 Example of Declarning a Pointer Type Variable 1 Because the variables are located near and take on the pointer variable type far the description in Figure B 4 is interpreted as in Figure B 5 Example int far near ptr Figure B 5 Example of Declaring a Pointer Type Variable 2 The variable ptr is 4 bytes variable that indicates the int type variable located in the far area The ptr itself is located in the near area Memory mapping for the ab
70. j 0x5678 Argument to func int k Ox9abc lt Argument to func k func i j k int func int x int y int z int sum SUM X Y Z return sum Return value to main Figure D 14 Example of C Language Sample Program REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 210 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules HH FUNCTION main HHH FRAME AUTO i size 2 offset 6 HHH FRAME AUTO j size 2 offset 4 HHH FRAME AUTO k size 2 offset 2 HH ARG Size 0 Auto Size 6 Context Size 8 SECTION program CODE ALIGN _file sample c align ine 4 C_ SRC glb _main _main 1 enter 06H 2 ine 5 C_SRC int i 0x1234 mov w 1234H 6 FB zi _line 6 H HC SRC int j 0x5678 mov w 5678H 4 FB n _line 7 HHC_SRC int k Ox9abe mov w 9abcH 2 FB k ine 9 C_ SRC k func i j k push w 2 FB k 3 push w 4 FB gt j 4 mov w 6 FB RO i 5 jsr func 6 add l 04H SP 10 mov w RO 2 FB k 11 ine 10 C_SRC exitd E1 Figure D 15 Assembly language sample program 1 REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 211 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules HHH FUNCTION func HHH FRAME AUTO x size 2 offset 2 HHH FRAME AUTO sum size 2 offset 2 HHH FRAME ARG y size 2 offset8 FRAME ARG z
71. linking M82C 90 series nc390_16 lib M82C 80 series nc382_16 lib M16C 80 70 series nc308_16 lib 2 When selecting this option make sure that it is selected for all C source files 3 When selecting this option be sure to select the compile option fsizet_16 fS16 too fuse_strings fUS Change code generation Function Generates code using string instructions Notes Before selecting this option refer to the set contents of the interrupt control register for confirmation REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 91 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fuse_product_sum fUPS a een eS Ee code generation Function Generates code using sum of products instructions Notes Before selecting this option refer to the set contents of the interrupt control register for confirmation A 2 7 Library Specifying Option Table A 9 lists the startup options you can use to specify a library file Table A 9 Library Specifying Option Option Function Litbraryfilename Specifies a library file that is used by ln308 when linking files llibrary file name Specifying a library file Function Specifies a library file that is used by 1n308 when linking files The file extension can be omitted Syntax nc308A lfilenameA lt C source file name gt Notes 1 In file specification the extension can be omitted If the extension of a file is omitted it is proc
72. location pointer of the first character string s2 from the beginning of area s1 When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strtod Character String Value Convert Functions Function Converts a character string into a double type integer Format include lt string h gt double strtod s endptr Method function Argument const char _far s Pointer to the converted character string char _far _far endptr Pointer to the remaining character strings that have not been converted ReturnValue ReturnValue 0L Does not constitute a number ReturnValue OL Returns the configured number in double type Description When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may REJ10J2057 0200 Rev 2 00 2010 04 01 selects another functions with good code efficiency by optimization 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strtok String Handling Functions Function Divides some character string from a character string into tokens Format include lt string h gt char _far strtok s1 s2 Method function Argument char _far s1 Pointer to the character string to be divided up const char _far s2 Pointer to the punctuation character to be divided with ReturnValue Returns the pointer to the divided token when character is found Returns NU
73. main void 2 i int flag l I flag 0 3 l l printf flag d n flag 4 Figure 1 9 Example Preprocessed C Source File 2 Let s look at the contents of the preprocessed C source file Items 1 to 4 correspond to 1 to 4 in Figure 1 8 and Figure 1 9 1 Shows the expansion of header file stdio h specified in include 2 Shows the C source program resulting from expanding the macro 3 Shows that CLR specified in define is expanded as 0 4 Shows that because PRN specified in define is 1 the compile condition is satisfied and the printf function is output REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 10 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 1 5 3 Assembly Language Source Files The assembly language source file is a file that can be processed by AS308 as a result of the compiler ccom308 converting the preprocess result C source file The output files are assembly language source files with the extension a30 Figure 1 10 and Figure 1 11 are examples of the output files When the nc308 command line option dgource dS is specified the assembly language source files contain the contents of the C source file as comments REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 11 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 LANG C X XX XX XXX REV X 3 NC308 C Compiler OUTPUT ccom308 Version X XX XX XX
74. nc308 Command Line Options a Options for Controlling Compile Driver Figure 2 1 shows the command line options for controlling the compile driver Table 2 1 Options for Controlling Compile Driver Option Function c Creates a relocatable file extension r30 and ends processing Didentifier Defines an identifier Same function as define dsource Generates an assembly language source file extension a30 Short form dS with a C language source list output as a comment Not deleted even after assembling dsource_in_list In addition to the dsource function generates an assembly Short form dSL language list file Ist E Invokes only preprocess commands and outputs result to standard output Idirectory Specifies the directory containing the file s specified in include You can specify up to 256 directories P Invokes only preprocess commands and creates a file extension i S Creates an assembly language source file extension a30 and ends processing silent Suppresses the copyright message display at startup U predefined macro Undefines the specified predefined macro b Options Specifying Output Files Figure 2 2 shows the command line option that specifies the name of the output machine language data file Table 2 2 Options for Specifying Output Files Option Function dirdirectory name Specifies the destination directory of the file s
75. not converted REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 273 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library printf Input Output Functions Description e Converts a double type parameter to the exponent format The format is d dddddde dd e E Same as e except that E is used in place of e for the exponent e f Converts double parameters to d dddddd format g Converts double parameters to the format specified in e or f Normally f conversion but conversion to e type when the exponent is 4 or less or the precision is less than the value of the exponent e G Same as g except that E is used in place of e for the exponent Left aligns the result of conversion in the minimum field width The default is right alignment e Adds or to the result of signed conversion By default only the is added to negative numbers Blank By default a blank is added before the value if the result of signed conversion has no sign eo Adds 0 to the beginning of o conversion Adds Ox or OX to the beginning when other than 0 in x or X conversion Always adds the decimal point in e E and f conversion Always adds the decimal point in g and G conversion and also outputs any Os in the decimal place 2 Minimum field width o Specifies the minimum field width of positive decimal integers When the result of conversion has fewer characters than the specified field
76. purposes such as apparatus orsystems for transportation vehicular medical aerospace nuclear or undersea repeater use 3 1 1 Notes about Version up of compiler The machine language instructions assembly language generated by NC308 vary in contents depending on the startup options specified when compiling contents of version up etc Therefore when you have changed the startup options or upgraded the compiler version be sure to reevaluate the operation of your application program Furthermore when the same RAM data is referenced and its contents changed between interrupt handling and non interrupt handling routines or between tasks under realtime OS always be sure to use exclusive control such as volatile specification Also use exclusive control for bit field structures which have different member names but are mapped into the same RAM 3 1 2 Notes about the M32C s Type Dependent Part When writing to or reading a register in the SFR area it may sometimes be necessary to use a specific instruction Because this specific instruction varies with each type of MCU consult the user s manual of your MCU for details In this case write the instruction directly in the program using the ASM function In this compiler the instructions which cannot be used may be generated for writing and read out to the register of SFR area When accessing registers in the SFR area in C language make sure that the same correct instructions are generat
77. push Variable j Old FB Stack usage state of 3 4 When PUSH instruction completed push lt FB Old FB Stack usage state of 5 lt spP Argument x i RO FB of Argument x i Function main Retum Retum address address Argument y j Argument y j Argument Z k Argument Z k Variable j Variable j Variable k Old FB Old FB lt FB Stack usage state of 6 Stack usage state of 7 When JSR instruction When ENTER instruction completed completed Figure D 18 Calling Function func and Entry Processing REJ10J2057 0200 Rev 2 00 2010 04 01 214 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules Argument x i FB of RO Function Retum value of func main Return address Old FB Old FB Stack uage state of 8 Stack usage state of 9 When EXITD instruction completed lt spP Variable j Variable k Old FB Stack usage state of 10 11 lt FB Figure D 19 Exit Processing of Function func REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 215 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 4 Securing auto Variable Area Variables of storage class auto are placed in the stack of the micro processor For a C language source file like the one shown in Figure D 20 if the areas where variables of storage class auto are
78. s register not allocated A register which is specifed in the function decleared by pragma PARAMETER can not be allocated Use the correct register const is duplicate const is described more than twice Write the type qualifier correctly far amp near conflict far near is described more than twice Write near far correctly far is duplicate far is described more than twice Write far correctly near is duplicate near is described more than twice Write near correctly static is illegal storage class for agument ely ey eW ely y y An appropriate storage class is used in argument declaration Use the correct storage class 2tENESAS Table F 8 ccom308 Error Messages 2 13 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Error message Description and countermeasure volatile is duplicate volatile is described more than twice Write the type qualifier correctly can t read C source from filename line number for error message e gt e The source line is in error and cannot be displayed The file indicated by filename cannot be found or the line number does not exist in the file Check whether the file actually exists can t open C source filename for error message The source file in error cannot be opened Check whether the file exists M82 M90 duplicated option eu ey y The compil
79. saved or loaded as a call information file cal Before CallWalker amp gensni can be used the compile driver s startup option finfo must be specified during compilation so that inspector information will be added to the absolute module file x30 1 2 7 MapViewer MapViewer shows how sections are allocated in the linkage editor and detailed information on the sections and symbols gensni is a utility that allows the use of MapViewer in the High performance Embedded Workshop and is automatically executed when MapViewer is invoked By loading the map file output by genmap MapViewer graphically shows post lmkage memory mapping To use MapViewer specify the compile driver startup option finfo when compiling so that the absolute REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 3 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 module file x30 will be generated REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 4 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 1 3 Notes Renesas Electronics Corp are not designed or manufactured for use in a device or system that is used under circumstances in which human life is potentially at stake Please contact Renesas Electronics Corp Renesas Solutions Corp or an authorized Renesas Semiconductor product distributor when considering the use of a product contained herein for any specific purposes such as apparatus orsystems for transportation v
80. standard output stdout The stream cannot be changed for these functions The output direction of stderr is defined as stdout in define The stream can only be changed for functions that specify pointers to the stream as parameters such as fgete and fputce REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 307 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library Figure E 3 fRelationship of Functions and Streams Figure E 4 shows the stream definition in stdio h REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 308 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library EPIRA TIER REARS DEER RESETS RINE REN ER EER AEEA SIRS ERREIAR T a TED standard I O header file omitted typedef struct _iobuf char _buff Store buffer for ungetc 1 int _cnt Strings number in _buff 1 or 0 2 int _flag Flag 3 int _mod Mode 4 int _furnc_in void Pointer to one byte input function 5 int _func_out int Pointer to one byte output function 6 FILE define _ OBUF_DEF omitted extern FILE_iobl define stdin amp iob 0 Fundamental input define stdout amp _iob 1 Fundamental output define stdaux amp iob 2 Fundamental auxialiary input output define stdprn amp _iob 3 Fundamental printer output define stderr stdout NC no support Ree ees a a nee Saree ake en
81. the format for binary floating point float data 23 16 o D fo e o Fixed point location s fixed point part sign 1 bit e characteristic part 8 bits m lt fixed point part 23 bits Figure D 1 Single precision floating point data format 2 Double precision floating point data format Figure D 2 shows the format for binary floating point double and long double data Fixed point location s fixed point part sign 1 bit e characteristic part 11 bits m fixed point part 52 bits Figure D 2 Double precision floating point data format REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 199 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 1 3 Enumerator Type Enumerator types have the same internal representation as unsigned int types Unless otherwise specified integers 0 1 2 are applied in the order in which the members appear Note that you can also use the nc308 command line option fchar_enumerator fCE to force enumerator types to have the same internal representation as unsigned char types D 1 4 Pointer Type Table D 3 shows the number of bytes used by pointer type data Table D 3 Data Size of Pointer Types Type Existence of Sign Bit Size Range near pointers None 16 0 to OxFFFF far pointers None 32 0 to OxXFFFFFFFF Note that only the least significant 24 bits of the 32 bits of far pointers are valid D 1 5 Array
82. the input character string ReturnValue Returns the number of data entries stored in each argument Returns EOF if EOF is input from the stream as data Description Converts the characters input from the stream as specified in format and stores them in the variables shown in the arguments Argument must be a pointer to the respective variable Interprets code 0x1A as the end code and ignores any subsequent data Format is specified in the same way as in scanf REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 251 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library fwrite Input Output Functions Function Outputs the specified items of data to the stream Format include lt stdio h gt size_t fwrite buffer size count stream Method function Argument const void _far buffer Pointer of the output data size_t size Number of bytes in one data item size_t count Maximum number of data items FILE _far stream Pointer of the stream ReturnValue Returns the number of data items output Description Outputs data with the size specified in size to the stream Data is output by the number of times specified in count If an error occurs before the amount of data specified in count has been input this function returns the number of data items output to that point REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 252 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library
83. the left and right sides of must be of the same type invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid amp amp operands y e The amp amp operation contains an error Check the expressions on the left and right sides of the operator invalid amp operands The amp operation contains an error Check the expression on the right side of the operator invalid amp operands Uey The amp operation contains an error Check the expressions on the left and right sides of the operator invalid 0 operand y e The expression on the left side of is not a function Write a function or a pointer to the function in the left side expression of invalid operands If multiplication the operation contains an error If is the pointer operator the right side expressionis not pointer type For a multiplication check the expressions on the left and right sides of the operator For a pointer check the type of the right side expression REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 12 ccom808Error message 6 13 Error message Description and countermeasure invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid
84. the number of characters in the converted multibyte character string Returns 1 if s does not configure a correct multibyte character string REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 267 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library mbtowc Multi byte Character Multi oyte Character String Manipulate Functions Function Converts a multibyte character into a wide character Format include lt stdlib h gt int mbtowc wes s n Method function Argument wchar t _far wes Pointer to an area for storing conversion wide character string const char _far s Pointer to a multibyte character string size_t n Number of wide characters stored ReturnValue Returns the number of wide characters converted if s configure a correct multibyte character string Returns 1 if s does not configure a correct multibyte character string Returns 0if s indicates a NULL character memchr Memory Handling Functions Function Searches a character from a memory area Format include lt string h gt void _far memchr s c n Method function Argument const void _far s Pointer to the memory area to be searched from int c Character to be searched size_t n Size of the memory area to be searched ReturnValue Returns the position pointer of the specified character c where it is found Returns NULL if the character c could not be found in the memory area Description S
85. the stream Format include lt stdio h gt int putc c stream Method macro Argument int c Character to be output FILE _far stream Pointer of the stream ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to the stream putchar Function Outputs one character to stdout Format include lt stdio h gt int putchar c Method macro Argument int c Character to be output ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to stdout REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 276 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library puts Input Output Functions Function Outputs one line to stdout Format include lt stdio h gt int puts str Method macro Argument char _far str Pointer of the character string to be output ReturnValue Returns 0 if output normally Returns 1 EOF if an error occurs Description Outputs one line to stdout The null character 0 at the end of the character string is replaced with the new line character n REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 277 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library qsort Integer Arithmetic Functions Function Sorts elements in an array Format include lt stdlib h gt void
86. there is static data you want to be used in an inline function declare it outside the function Ifa static declaration is found in an inline function NC308 generates a warning Renesas does not recommend entering static declarations in an inline function Figure B 59 inline int func int j staticint i 0 i return i j Warning Message Warning ccom smp c line 3 static valuable in inline function gt static int i 0 Figure B 59 Example of inappropriate code of inline function 4 7 Regarding debug information NC308 does not output C language level debug information for inline functions Therefore you need to debug inline functions at the assembly language level REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 133 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 6 Extension of Comments NC308 allows comments enclosed between and as well as C like comments starting with B 6 1 Overview of Comments In C comments must be written between and In C anything following B 6 2 Comment Format When you include on a line anything after the is treated as a comment Figure B 60 shows comment format comments Figure B 60 Comment Format Figure B 61 shows example comments void func void int i This is commentes intj This is commentes omitted Figure B 61 Example Comments
87. type unsigned int fptrdifft_16 fP16 Changes the type definition ptrdiff_t from type signed long to type singed int fuse_strings fUS Generates code using string instructions fuse_product_sum fUPS Generates code using sum of products instructions g Library Specifying Option Table 2 8 lists the startup options you can use to specify a library file Table 2 8 Library Specifying Option Option Function lLitbraryfilename Specifies a library file that is used by ln308 when linking files REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 21 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler h Warning Options Table 2 9 shows the command line options for outputting warning messages for contraventions of nc308 language specifications Table 2 9 Warning Options Option Short form Function Wall None Displays message for all detectable warnings however not including alarms output by Wlarge_to_small and Wno_used_argument Wccom_max_warnings WCMW This option allows you to specify an upper limit for Warning Count the number of warnings output by ccom308 Werror_file lt fi e name gt WEF Outputs error messages to the specified file Wlarge_to_small WLTS Outputs a warning about the tacit transfer of variables in descending sequence of size Wmake_tagfile WMT Outputs error messages to the tag file o
88. types 64bit integer type flong longparameters floating point type double argument You also cannot declare the functions returning structure or union types as the function s return values 3 4 Other 3 4 1 Precautions on Transporting between NC Series Compilers NC308 basically is compatible with Renesas C compilers NCxx at the language specification level including extended functions However there are some differences between the compiler this manual and other NC series compilers as described below a Difference in default near far The default near far in the NC series are shown in Table 3 3 Therefore when transporting the compiler this manual to other NC series compilers the near far specification needs to be adjusted Table 3 3 Default near far in the NC Series Compiler RAM data ROM data Program NC308 near far far Fixed However pointer type is far NC30 near far far Fixed 3 4 2 Precautions on Transporting between NC308 and NC30 a Differences in calling convention The register when the function is called is saved on the call side of the function in NC30 However it does on the call side of the function substance side of the function in NC308 Therefore when calling an assembler function from a C language function in NC308 follow the procedure described below J Conditions Tf there are some registers that may be destroyed by an assembler function 1 Save those reg
89. width the left of the field is padded J The default padding character is the blank However 0 is the padding character if you specified the field with using an integer preceded by 0 e If you specified the flag the result of conversion is left aligned and padding characters always blanks inserted to the right Ifyou specified the asterisk for the minimum field width the integer in the parameter specifies the field width If the value of the parameter is negative the value after the flag is the positive field width 3 Precision Specify a positive integer after If you specify only with no value it is interpreted as zero The function and default value differs according to the conversion type Floating point type data is output with a precision of 6 by default However no decimal places are output if you specify a precision of 0 e d i 0 u x and X conversion 1 Ifthe number of columns in the result of conversion is less than the specified number the beginning is padded with Zeros REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 274 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library printf Input Output Functions Description 2 Tf the specified number of columns exceeds the minimum field width the specified number of columns takes precedence 8 If the number of columns in the specified precision is less than the minimum field width the field width is processed after the min
90. with 0 Hexadecimals start with Ox or OX The target parameter must be a pointer to an integer u Converts an unsigned decimal The target parameter must be a pointer to an unsigned integer o o Converts a signed octal The target parameter must be a pointer to an integer o x X Converts a signed hexadecimal Uppercase or lowercase can be used for OAH to OFH The leading Ox is not included The target parameter must be a pointer to an integer s Stores character strings ending with the null character O The target parameter must be a pointer to a character array of sufficient size to store the character string including the null character O If input stops when the maximum field width is reached the character string stored consists of the characters to that point plus the ending null character g Stores a character Space characters are not skipped If you specify 2 or more for the maximum field width multiple characters are stored However the null character NO is not included The target parameter must be a pointer to a character array of sufficient size to store the character string e p Converts input in the format data bank register plus offset Example 00 1205 The target parameter is a pointer to all types e Stores the input characters while the one or more characters between land are input Storing stops when a character other than those between and is input If you specify the circumflex after onl
91. with typedef Delete the initialize expression uncomplete array pointer operation An incomplete multidimensional array has been accessed to pointer Specify the size of the multidimensional array undefined label label used The jump address label for goto is not defined in the function Define the jump address label in the function union or enum s tag used for struct The tag name for union and enumerated types is used as a tag name for structure Change the tag name unknown function argument variable e An argument is specified that is not included in the name argument list Check the argument unknown member member name used A member is referenced that is not registered as any structure or union members Check the member name unknown pointer to identifier variable name structure The left side expression of gt is not the structure or union type Use struct or union as the left side expression of gt unknown size of struct or union A structure or union is used which has had its size not determined Declare the structure or union before declaring a structure or union variable unknown structure identifier variable name The left side expression of dose not have struct or union Use the struct or union as it unknown variable variable name An undefined variable name is used in the asm used in asm Q statement Define the variable un
92. x Initialize fgetc Inputs one character from the stream x getc Inputs one character from the stream x getchar Inputs one character from stdin x fgets Inputs one line from the stream x gets Inputs one line from stdin x fread Inputs the specified items of data from the stream x scanf Inputs characters with format from stdin x fscanf Inputs characters with format from the stream x sscanf Inputs data with format from a character string x Output fputc Outputs one character to the stream x putc Outputs one character to the stream x putchar Outputs one character to stdout x fputs Outputs one line to the stream x puts Outputs one line to stdout x fwrite Outputs the specified items of data to the stream x perror Outputs an error message to stdout x printf Outputs characters with format to stdout x fflush Flushes the stream of an output buffer x fprintf Outputs characters with format to the stream x sprintf Writes text with format to a character string x vfprintf Output to a stream with format x vprintf Output to stdout with format x vsprintf Output to a buffer with format x Return ungetc Sends one character back to the input stream x Determination ferror Checks input output errors x feof Checks EOF End of File x d Memory Management Functions The following lists memory management functions Table E 5 Memory Management Functions Function Contents Reentrant calloc Allocates a memory area
93. 0 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 b Adjustment in an instance in which SB declaration is made in assembler If the SB area is used as a result of the sbsym declaration in an assembler routine you need to adjust the file generated by utl308 assembler routine ssbsym _sym omitted glo _sym _sym blkb 2 generated file by utl308 va pragma SBDATA Utility SBDATA Size 255 pragma SBDATA data3 size 4 ref 2 pragma SBDATA data2 size 1 ref 1 omitted pragma SBDATA data1 F size 2 ref 1 f End of File 5 Since 2 byte data are SB declared in an assembler routine you subtract 2 bytes of SBDATA declaration from the file generated by utl308 Example omitted pragma SBDATA data1 F size 2 ref 1 Comments out Figure G 7 Example of adjust the file generated by utl308 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 351 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 5 2 Generating a SPECIAL Page Function declaration file a Generating a SPECIAL Page Function declaration file It is possible to output SPECIAL page function declaration and SPECIAL page vector definition files by having the absolute module file generated by using the option finfo when comp
94. 0 04 01 RENESAS 287 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strcp String Handling Functions Function Copies a character string Format include lt string h gt char _far strepy s1 s2 Method macro or function Argument char _far s1 Pointer to the character string to be copied to const char _far s2 Pointer to the character string to be copied from ReturnValue Returns a pointer to the character string at the destination of copy Description Usually the program code described by macro is used for this function In using the function in a library please describe it as undef strcpy after description of include lt string h gt Copies character string s2 ending with NULL to area s1 After copying the character string ends with NULL When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects functions with good code efficiency by optimization strespn String Handling Functions Function Calculates the length number of unspecified characters that are not found in the other character string Format include lt string h gt size_t strespn s1 s2 Method function Argument const char _far s1 Pointer to the character string to be searched in const char _far s2 Pointer to the character string to be searched for ReturnValue Returns the length number of unspecified characters Description Calculates the size of the first character string
95. 0 2010 04 01 RENESAS 240 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library calloc Memory Management Functions Function Allocates a memory area and initializes it to zero 0 Format include lt stdlib h gt void _far calloc n size Method function Variable size_t n3 Number of elements size_t size Value indicating the element size in bytes ReturnValue Returns NULL if a memory area of the specified size could not be allocated Description After allocating the specified memory it is cleared to zero The size of the memory area is the product of the two parameters Rule The rules for securing memory are the same as for malloc ceil Function Calculates an integer carry value Format include lt math h gt double ceil x Method function Argument double x arbitrary real number ReturnValue Returns the minimum integer value from among integers larger than given real REJ10J2057 0200 Rev 2 00 2010 04 01 number x 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library clearerr Function Initializes clears error status specifiers Format include lt stdio h gt void clearerr stream Method function Argument FILE _far stream Pointer of stream ReturnValue No value is returned Description Resets the error designator and end of file designator to their normal values cos Function Calculates cosine Format include lt math h gt double co
96. 0 times fover_write fOW Outputs SBDATA declaration or SPECIAL function declaration to a file Function Does not check whether the output file specified by o already exists If such file exists it is overwritten This option must be specified along with the o option fsection Outputs SBDATA declaration and SPECIAL page function declaration in pragma SECTIONS Function The variables and functions located in areas whose section names have been altered by pragma SECTION are also included among those to be processed Notes If pragma SECTION is used for an explicit purpose of locating a particular variable or function at a given address do not specify this option because the variable or function may be located at an unintended different address by SBDATA or SPECIAL page declaration Outputs the declared SBDATA result display file I Function Outpus the result of SBDATA declaration or SPECIAL Page Function declaration to a file With this option not specified outputs the result to the host machine s either EWS or personal computer standard output device If the specified file already exists the result is written to the standard output device sb308 Outputs SBDATA declaration Function Outputs SBDATA declaration This option can be specified simultaneously with sp308 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 347 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration a
97. 00 Rev 2 00 2010 04 01 RENESAS 235 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library acos Mathematical Functions Function Calculates arc cosine Format include lt math h gt double acos x Method function Variable double x arbitrary real number ReturnValue Assumes an error and returns 0 if the value of given real number x is outside therange of 1 0 to 1 0 Otherwise returns a value in the range from 0 to p radian asin Mathematical Functions Function Calculates arc sine Format include lt math h gt double asin x Method function Variable double x arbitrary real number ReturnValue Assumes an error and returns 0 if the value of given real number x is outside the range of 1 0 to 1 0 Otherwise returns a value in the range from p 2 to p 2 radian atan Mathematical Functions Function Calculates arc tangent Format include lt math h gt double atan x Method function Variable double x arbitrary real number ReturnValue Returns a value in the range from n 2 to 7 2 radian REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 236 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library atan2 Function Calculates arc tangent Format include lt math h gt double atan2 x y Method function Variable double x arbitrary real number double y arbitrary real number ReturnValue Returns a value in the range from r to n radian atof Function Conv
98. 115 B 2 4 Specifying Symbol Name of extern and static Variable 116 B 2 5 Specification Not Dependent on Storage Class 119 B 2 6 Selectively suppressing optimization 120 B 2 7 Notes on the asm Function 120 B 3 Description of Japanese Characters 124 B 3 1 Overview of Japanese Characters 124 B 3 2 Settings Required for Using Japanese Characters 124 B 3 3 Japanese Characters in Character Strings 125 B 3 4 sing Japanese Characters as Character Constants 126 B 4 Default Argument Declaration of Function 127 B 4 1 Overview of Default Argument Declaration of Function 127 B 4 2 Format of Default Argument Declaration of Function 127 B 4 3 Restrictions on Default Argument Declaration of Function 129 B 5 inline Function Declaration 130 B 5 1 Overview of inline Storage Class 130 B 5 2 Declaration Format of inline Storage Class 130 B 5 3 Restrictions on inline Storage Class 131 B 6 Extension of Comments 134 B 6 1 Overview of Comments 134 B 6 2 Comment Format 134 B 6 3 Priority of and 134 B 7 pragma Extended Functions 185 B 7 1 Index of pragma Extended Functions 135 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS M32C Series C Compiler Package V 5 42 C Compiler Contents B 7 2 Using Memory Mapping Extended Functions 139 B 7 3 Using Extended Functions for Target Devices 147 B 7 4 Using MR308 Extended Functions 158 B 7 5 The Other Extensions 162 B 8 assembler Macro Function 167 B 8 1 Outline of Assembler Macro Function 167 B 8 2 Descripti
99. 244 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library fabs Function Calculates the absolute value of a double precision floating point number Format include lt math h gt double fabs x Method function Argument double x arbitrary real number ReturnValue Returns the absolute value of a double precision floating point number feof Function Checks EOF End of File Format include lt stdio h gt int feof stream Method macro Argument FILE _far stream Pointer of stream ReturnValue Returns true other than 0 if the stream is EOF Otherwise returns NULL 0 Description Determines if the stream has been read to the EOF Interprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 245 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library ferror Function Checks input output errors Format include lt stdio h gt int ferror stream Method macro Argument FILE _far stream Pointer of stream ReturnValue Returns true other than 0 if the stream is in error Otherwise returns NULL 0 Description Determines errors in the stream Interprets code 0x1A as the end code and ignores any subsequent data fflush Function Flushes the stream of an output buffer Format include lt stdio h gt int fflush stream Method function Argument FILE _far stream Pointer of stream ReturnVa
100. 3 pragma JARW function name 24 pragma PAGE 25 pragma _ASMMACRO function name register name 26 pragma MONITERIn variable name REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 195 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications samt Sz Description 1 Facility to arrange in the rom section 2 Facility to describe variables using SB relative addressing 3 Facility to describe variables using SB relative 16 bit displacement addressing 4 Facility to alter the section base name 5 Facility to control the array of structures 6 Facility to control the array of structures 7 Facility to specify absolute addresses for input output variables 8 Facility to specify absolute with bit position addresses for input output variables 9 Facility to specify the DMAC register of a external variable 10 Facility to declare functions using software interrupts 11 Facility to write interrupt functions 12 Facility to write interrupt functions 13 Facility to declare assembler functions passed via register 14 Facility to declare special page subroutine call functions 15 Facility to describe alarm handler functions 16 Facility to describe cyclic handler functions 17 Facility to describe interrupt handler functions 18 Facility to describe interrupt handler functions 19 Facility to describe task start functions 20 Facility to describe inline assembler 21 Facility to describe inline as
101. 4 Body of the Program Use the format of body of the program shown in Figure C 6 List of Variable Declaratoropt Compound Statement There is no body of the program in a prototype declaration which ends with a semicolon opt indicates optional items Figure C 6 Format of Body of the Program REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 186 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications C 2 5 Statement NC308 supports the following Labelled Statement Compound Statement Expression Null Statement Selection Statement Iteration Statement Jump Statement Assembly Language Statement a Labelled Statement Use the format of labelled statement shown in Figure C 7 Identifier statement case constant statement default statement Figure C 7 Format of Labelled Statement b Compound Statement Use the format of compound statement shown in Figure C 8 list of declarations opt list of statementsopt opt opt indicates optional items Figure C 8 Format of Compound Statement c Expression Null Statement Use the format of expression and null statement shown in Figure C 9 expression expression null statement Figure C 9 Format of Expression and Null Statement REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 187 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specific
102. 42 C Compiler A Command Option Reference Ono_asmopt ONA Inhibits starting the assembler optimizer Function Inhibits starting the assembler optimizer aopt308 Ono _bit ONB Suppression of optimization Function Suppresses optimization based on grouping of bit manipulations Supplement When you specify O 3 to 5 or OR or OS ORM OSM optimization is based on grouping manipulations that assign constants to a bit field mapped to the same memory area into one routine Because it is not suitable to perform this operation when there is an order to the consecutive bit operations as in I O bit fields use this option to suppress optimization Notes This option is only valid if you specify option O 3 to 5 or OR or OS ORM OSM Ono_break_source_debug ONBSD Suppression of optimization Function Suppresses optimization that affects source line data Supplement Specifying the O 3 to 5 or OR or OS ORM OSM option performs the following optimization which may affect source line data This option ONBSD is used to suppress such optimization Notes This option is valid only when the O 8 to 5 or OR or OS ORM OSM option is specified REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 77 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Ono_float_const_fold ONFCF Function Suppresses the constant folding processing of floating point numbers Suppleme
103. C 1 to declare variables storage class specifier typedeclarator declaration specifier initialization expression Figure C 1 Declaration Format of Variable 1 Storage class Specifiers NC308 supports the following storage class specifiers extern auto static register typedef 2 Type Declarator NC308 supports the type declarators Bool char int short long long long float double unsigned signed struct union enum REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 184 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 2 in NC308 Declarator Pointer op declarator2 Declarator2 identifier declarator declarator2 constant expression opt declarator2 list of dummy arguments opt Only the first array can be omitted from constant expressions showing the number of arrays opt indicates optional items Figure C 2 Format of Declaration Specifier 4 Initialization expressions NC808 allows the initial values shown in Figure C 3 in initialization expressions integral types constant integral types array constant constant character types constant character types array character literal constant pointer types character literal pointer array character literal character literal Fi
104. C Outputs a warning for a comment including Wno_stop WNS Prevents the compiler stopping when an error occurs Wno_used_argument WNUA Outputs a warning for unused argument of functions Wno_used_function WNUF Displays unused global functions when linking Wno_used_static_function WNUSF For one of the following reasons a static function name is output that does not require code generation Wno_warning_stdlib WNWS Specifying this option while Wnon_prototype or Wall is specified inhibits Alarm for standard libraries which do not have prototype declaration Wnon_prototype WNP Outputs warning messages for functions without prototype declarations Wstdout None Outputs error messages to the host machine s standard output stdout Wstop_at_link WSAL Stops linking the source files if a warning occurs during linking to suppress generation of absolute module files Also a return value 10 is returned to the host OS Wstop_at_warning WSAW Stops compiling the source files if a warning occurs during compiling and returns the compiler end code 10 Wundefined_macro WUM Warns you that undefined macros are used in if Wuninitialize_variable WUV Outputs a warning about auto variables that have not been initialized Wunknown_pragma WUP Outputs warning messages for non supported pragma REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 93 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference
105. C308 interprets the following as qualified type const volatile restrict near far REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 181 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications c Data Type and Size TableC 9 shows the size corresponding to data type TableC 9 Data Type and Bit Size Type Existence of sign Bit size Range of values _Bool No 8 0 1 char No 8 0 to 255 unsigned char signed char Yes 8 128 to 127 int Yes 16 32768 to 32767 short signed int signed short unsigned int No 16 0 to 65535 unsigned short long Yes 32 2147483648 to 2147483647 signed long unsigned long No 32 0 to 4294967295 long long Yes 64 9223372036854775808 to signed long long 92 23372036854775807 unsigned long long No 64 18446744073709551615 float Yes 32 1 17549435e 38F to 3 40282347e 38F double Yes 64 2 22507385850720 1 4e 308 to long double 1 7976931348623157e 308 near pointer No 16 0 to OxFFFF far pointer No 32 0 to OxFFFFFFFF J The _Bool type can not specify to sign e If a char type is specified with no sign it is processed as an unsigned char type Ifan int or short type is specified with no sign it is processed as a signed int or signed short type e If a long type is specified with no sign it is processed as a sign long type If a long long type is specified with no sign it is processed as a sign long long type J If th
106. Command Line Options The following informationGnput parameters is needed in order to start utl308 Table G 1 shows the utl308 command line options Table G 1 utl308 Command Line Options Option Short form Description all None When used simultaneously with the sb308 option Because the usage frequency is low SBDATA declaration is output in the form of a comment for even the variables that are not placed in the SB area When used simultaneously with the sp308 option Because the usage frequency is low SPECIAL declaration is output in the form of a comment for even the functions that are not placed in the SPECIAL page area fsection None The variables and functions specified by pragma SECTION are also included among those to be processed fover_write FOW Forcibly writes over the output file name specified with the o option 0 None Outpus the result of SBDATA declaration or SPECIAL Page Function declaration to a file With this option not specified outputs the result to the host machine s either EWS or personal computer standard output device No extensions can be specified Tf the specified file already exists the result is written to the standard output device sb308 None sb308 gt Outputs SBDATA declaration sp308 gt Outputs SPECIAL page function declaration To use utl308 always specify one of the two options If neither option is specified an error is assumed sp lt number
107. Compiler Package V 5 42 C Compiler E Standard Library scanf Input Output Functions Function Reads characters with format from stdin Format include lt stdio h gt include lt ctype h gt int scanf format argument Method function Argument const char _far format Pointer of format specifying character string The part after the percent sign in the character string given in format has the following meaning The part between and is optional Details of the format are shown below Format maximum field width modifier L or h conversion specification character Example format 5ld ReturnValue Returns the number of data entries stored in each argument Returns EOF if EOF is input from stdin as data Description Converts the characters read from stdin as specified in format and stores them in the variables shown in the arguments Argument must be a far pointer to the respective variable The first space character is ignored except in c and conversion Interprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 280 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library scanf Input Output Functions Description 1 Conversion specification symbol e d Converts a signed decimal The target parameter must be a pointer to an integer e i Converts signed decimal octal and hexadecimal input Octals start
108. Define complete structs or unions first incomplete struct member An attempt is made to reference an struct member of incomplete Define complete structs or unions first incomplete struct initialized An attempt is made to initialize an array of incomplete structs or unions that do not have defined members Define complete structs or unions first incomplete struct return function call An attempt is made to call a function that has as a return value the of incomplete struct or union that does not have defined members Define a complete struct or union first incomplete struct union s member access An attempt is made to reference members of an incomplete struct or union that do not have defined members Define a complete struct or union first incomplete struct union tagname s member access An attempt is made to reference members of an incomplete struct or union that do not have defined members Define a complete struct or union first 2tENESAS Table F 11 ccom08Error message 5 13 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Error message Description and countermeasure inline function have invalid argument or return code inline function has an invalid argument or an invalid return value Write the argument or an invalid return value correctly inline function is called as normal function before The function declared in storage class inline i
109. E F interrupt vector number interrupt handlingfunction name pragma INTERRUPT B E F interrupt handling function name vect interrupt vector number Example pragma INTERRUPT int func pragma INTERRUPT B int func pragma INTERRUPT 10 int_func pragma INTERRUPT E 10 int_func pragma INTERRUPT int func vect 10 pragma INTERRUPT F int func vect 20 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 136 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Table B 6 Extended Functions for Use with Target Devices 2 Extended function Description pragma PARAMETER Declares that when calling an assembler function the parameters are passed via specified registers By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Syntax pragma PARAMETERI C function_name register_name Example pragma PARAMETER asm_func R0 R1 Example pragma PARAMETER C asm_func R0 R1 Always be sure to declare the prototype of the function before entering this declaration pragma SPECIAL Declares special page subroutine call functions By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Syntax pragma SPECIAL C number functionnameQ pragma SPECIAL C function name vect number Example pragma SPECIAL 30 func pragma SP
110. ECIAL C 30 func pragma SPECIAL func vect 30 pragma SPECIAL C func Q vect 30 c Using MR308 Extended Functions Table B 7 Extended Functions for MR308 Extended function Description pragma ALMHANDLER Declares the name of the MR308 alarm handler function Syntax pragma ALMHANDLER function name Example pragma ALMHANDLER alm func pragma CYCHANDLER Declares the name of the MR308 cycle start handler function Syntax pragma CYCHANDLER function name Example pragma CYCHANDLER cyc_func pragma INTHANDLER Declares the name of the MR308 interrupt handler function pragma HANDLER Syntax pragma INTHANDLER function name pragma INTHANDLER E function name Syntax2 pragma HANDLER function name pragma HANDLER E function name Example pragma INTHANDLER int_func pragma TASK Declares the name of the MR3808 task start function Syntax pragma TASK task start function name Example pragma TASK task1 Supplement The above extended function normally is generated by the configurator so that the user need not be concerned with it REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 137 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference d The Other Extensions Table B 8 Using Inline Assembler Description Function Extended feature Description pragma ASM Specifies an area in which statements are written in assembly language pragma ENDASM Synt
111. ETER This pragma PARAMETER passes arguments to assembler functions via 32 bit general purpose registers R2R0 R3R1 16 bit general purpose registers RO R1 R2 R3 or 8 bit general purpose registers ROL ROH R1L R1H and address registers AO A1 The following shows the sequence of operations for calling an assembler function using pragma PARAMETER REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 53 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique 1 Write a prototype declaration for the assembler function before the pragma PARAMETER declaration You must also declare the parameter type s 2 Declare the name of the register used by pragma PARAMETER in the assembler function s parameter list Figure 3 14 is an example of using pragma PARAMETER when calling the assembler function asm_func extern unsigned int asm_func unsigned int unsigned int pragma PARAMETER asm_func RO R1 lt Parameters are passed via the RO and R1 registers to the assembler function void main void int i 0x02 int j 0x05 asm_funcii j Figure 3 14 Example of Calling Assembler Function With Parameters sample2 c SECTION program CODE ALIGN _file sample2 c align ine 5 C_SRC glb _main _main enter 04H pushm R1 ine 6 HHHC SRC int i 0x02 mov w 0002H 4 FB H _line 7 C_SRC int j 0x05 mov w 0005H 2 FB sij _line 9 H C_SRC asm_funcii j mov w 2
112. FB R1 j lt Parameters are passed via the RO and R1 mov w 4 FB RO i registers to the assembler function jsr _asm_func ine 10 C_ SRC popm R1 exitd E1 glb _asm_func Calls assembler function preceded by _ END Figure 3 15 Compiled result of sample2 c sample2 a30 REJ10J2057 0200 Rev 2 00 2010 04 01 54 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique c Limits on Parameters in pragma PARAMETER Declaration The following parameter types cannot be declared in a pragma PARAMETER declaration o structure types and union type parameters 64 bit integer type flong longparameters Floating point type float and double parameters Furthermore return values of structure or union types cannot be defined as the return values of assembler functions 3 3 2 Writing Assembler Functions a Method for writing the called assembler functions The following shows a procedure for writing the entry processing of assembler functions 1 Specify section names using the assembler pseudo command SECTION 2 Global specify function name labels using the assembler pseudo command GLB 3 Add the underscore _ to the function name to write it as label 4 When modifying the B and U flags within the function save the flag register to the stack beforehand 5 Save the registers that may be destroyed in the function The following shows a procedure for writing the exit proces
113. INTCALL declaration 3 Observe the following in the prototype declaration a In the prototype declaration you can only declare functions in which all parameters are passed via registers as in the function calling rules d You cannot declare the following functions as the return values of functions e Functions that return structures or unions REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 151 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference 4 You can only use decimals for the INT Numbers REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 152 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma INTCALL Declare a function called by the INT instruction Examples int asm_func unsigned long unsigned int Prototype declaration for pragma INTCALL 25 asm_func R2R0 R1 the assembler function void main void int i long l i 0x7FFD 0x007F asm_func i Calling the assembler function Figure B 74 Example of pragma INTCALL Declaration asm function 1 int c_func unsigned int unsigned int lt Prototype declaration for the C function pragma INTCALL 25 c_func lt You may NOT specify registers void main void int i j i 0x7FFD j 0x007F c_func i j Calling the C function Figure B 75 Example of pragma INTCALL Declaration C language functuion 2 Note To use the startup file included with the pro
114. IV fUD This option changes generated code for divide operation M82 None Generates object code for M32C 80 series M90 None Generates the code corresponding to the M32C 90 series fsizet_16 fS16 Changes the type definition size_t from type unsigned long to type unsigned int fptrdifft_16 fP16 Changes the type definition ptrdiff_t from type signed long to type singed int fuse_strings fUS Generates code using string instructions fuse_product_sum fUPS Generates code using sum of products instructions fansi Modify generated code Function Validates the following command line options fnot_reserve_asm Removes asm from reserved words fnot_reserve_far_and_near Removes far and near from reserved words fnot_reserve_inline Removes inline from reserved words fextend_to_int Extends char type data to int type data to perform operations Supplement When this option is specified the compiler generates code in conformity with ANSI standards fchar_enumerator fCE Modify generated code Function Processes enumerator types not as int types but as unsigned char types Notes The type debug information does not include information on type sizes Therefore if this option is specified the enum type may not be referenced correctly in some debugger REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 83 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fconst_not_ROM f CNR Functio
115. LL when character cannot be found Description Inthe first call returns a pointer to the first character of the first token A NULL character is written after the returned character In subsequent calls when s1 is NULL this instruction returns each token as it is encountered NULL is returned when there are no more tokens in s1 When you specify options O 8 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strtol Character String Value Convert Function Function Converts a character string into a long type integer Format include lt string h gt long strtol s endptr base Method function Argument const char _far s Pointer to the converted character string char _far _far endptr Pointer to the remaining character strings that have not been converted int base Base of values to be read in 0 to 36 Reads the format of integral constant if the base of value is zero ReturnValue ReturnValue 0OL Does not constitute a number ReturnValue OL Returns the configured number in long type Description When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may REJ10J2057 0200 Rev 2 00 2010 04 01 selects another functions with good code efficiency by optimization 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strtoul Character String Value Convert Function Function Converts a charac
116. Make sure that the value of case that you used once is not used again within one switch statement conflict declare of variable name The variable is defined twice with different storage classes each time Use the same storage class to declare a variable twice conflict function argument type of variable name The argument list contains the same variable name Change the variable name declared register parameter function s body declared ey ey The function body for the function declared with pragma PARAMETER is defined in C Do not define in C the body for such function default function argument conflict The default value of an argument is declared more than once in prototype declaration Make sure that the default value of an argument is declared only once default is duplicated The default value is used more than one time Use only one default within one switch statement do while struct union statement The struct or union type is used in the expression of the do while statement Use the scalar type for an expression in the dowhile statement do while void statement y The void type is used in the expression of the dowhile statement Use the scalar type for an expression in the dowhile statement frame defind duplicate position e Auto variable is described more than twice variable name Write the type specifier correctly Empty declare
117. NB Suppresses optimization based on grouping of bit manipulations Ono_break_source_debug ONBSD Suppresses optimization that affects source line data Ono_float_const_fold ONFCF Suppresses the constant folding processing of floating point numbers Ono_logical_or_combine ONLOC Suppresses the optimization that puts consecutive ORs together Ono_stdlib ONS Inhibits inline padding of standard library functions and modification of library functions Osp_adjust OSA Optimizes removal of stack correction code This allows the necessary ROM capacity to be reduced However this may result in an increased amount of stack being used Ostatic_to_inline OSTI A static function is treated as an inline function O50A None Inhibits code generation based on bit manipulating instructions when the optimization option O5 is selected 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler f Generated Code Modification Options Table 2 6 to Table 2 7 shows the command line options for controlling nc308 generated assembly code Table 2 6 Generated Code Modification Options 1 2 Option Short form Function fansi None Makes fnot_reserve_far_and_near fnot_reserve_asm and fextend_to_int valid fehar_enumerator FCE Handles the enumerator type as an unsigned char type not as an int type feonst_not_ROM
118. NE BZERO bss NO top bss NO initialize data section 10 BCOPY data_SEI_top data_SE_top data_SE BCOPY data_SOl_top data_SO_top data_SO BCOPY data_NEI_top data_NE_top data_NE BCOPY data_NOI_top data_NO_top data_NO After a reset execution starts from this label start Sets processor operating mode Sets IPL and each flags Clears the near bss section to zeros 0 Moves the initial values of the near and SBDATA data section to RAM Figure 2 9 Startup Program List 4 ncrt0 a30 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 26 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler BZERO bss SE top oss_ SE bss SO _top oss SO BZERO bss 6E top bss_ 6E BZERO bss 60 top bss 60 BZERO _ bss _FE_top oss FE BZERO bss _FO top bss FO m po O Copy edata_E O section from edata_El Ol section 12 BCOPY data_SEIl_top data_SE_top data_SE BCOPY data_SOl_top data_SO_top data_SO BCOPY data_6El_top data_6E_top data_6E BCOPY data_6Ol_top data_6O_top data_6O BCOPY data_FEI_top data_FE_top data_FE BCOPY data_FOI_top data_FO_top data_FO Idc stack_top sp stk Validate this when use BZEROL BCOPYL heap area initialize 13 f _HEAP_ 1 glb __mnext glb __msize mov heap_top amp 0OFFFFFFH __mnext mov HEAPSIZE amp 0FFFFFFH __msize endif Initialize standard I O 14 if STANDARD _IO_ glb _
119. Package V 5 42 C Compiler F Error Messages F 6 c ccom308 Warning Messages Table F20 to Table F28 list the ccom308 compiler warning messages and their countermeasures Table F 20 ccom308 Warning Messages 1 9 Warning message Description and countermeasure pragma pragma rname amp HANDLER e Both pragma pragma name and pragma HANDLER both specified are specified in one function Specify pragma pragma name and pragma HANDLER exclusive to each other pragma pragma name amp INTERRUPT e Both pragma pragma name and pragma INTERRUPT both specified are specified in one function gt Specify pragma pragma name and pragma INTERRUPT exclusive to each other pragma pragma name amp TASK both e Both pragma pragma name and pragma TASK are specified specified in one function gt Specify pragma pragma name and pragma TASK exclusive to each other pragma pragma name format error e The pragma pragma name is erroneously written Processing will be continued gt Write it correctly pragma pragma name format error e The pragma pragma name is erroneously written ignored This line will be ignored gt Write it correctly pragma pragma name not function e A name is written in the pragma pragma name that is ignored not a function gt Write it with a function name pragma pragma name s function must e A function specified in the pragma pragma name is not be predecla
120. Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 5 Example of utl308 use G 5 1 Generating a SBDATA declaration file a Generating a SBDATA declaration file You can output a SBDATA declaration file by means of causing the SBDATA declaration utility utl308 to process files holding information as to the state of using variables Figure G 4 shows an example of making entries in utl308 and Figure G 5 shows an example of SBDATA declaration file utl308 ncrt0 x30 osbdata lt RET gt Prompt ncrt0 x30 Name of absolute file FigureG 4 Example utl308 Command Line i pragma SBDATA Utility SBDATA Size 255 pragmaSBDATA data3 UF size 4ylret 2 7 pragma SBDATA data2 size 1 ref 1 pragma SBDATA data1 F size 2 lref 1 i End of File 1 Indicates the size of data 2 Indicates the usage frequency of data Figure G 5 SBDATA declaration File sbdata h You include the SBDATA declaration file generated above in a program as a header file Figure G 6 shows an example of making setting in a SBDATA file include sbdata h void func void ommit Figure G 6 Example of making settings ina SBDATA Figure G 6 shows an example where the SBDATA declaration file generated in Figure G 4 is included in the program as a header file REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 35
121. REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 24 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler glo SB when copy less 64K byte BZERO _ macro TOP_ SECT_ mov b 00H ROL mov TOP_ A1 mov w sizeof SECT_ R3 sstr b endm BCOPY macro FROM_ TO_ SECT_ mov l FROM_ AO mov TO_ A1 mov w sizeof SECT_ R3 smovf b endm when copy over 64K byte BZEROL macro TOP_ SECT_ push w sizeof SECT_ gt gt 16 push w sizeofSECT_ amp Offffh pusha TOP_ stk 8 glo _bzero Call _bzero G jsr a _bzero endm BCOPYL macro FROM_ TO_ SECT_ pushw sizeofSECT_ gt gt 16 pushw sizeofSECT_ amp Offffh pusha TO_ pusha FROM_ stk 12 gl _bcopy Call _bcopy G jsr a _bcopy endm Figure 2 8 Startup Program List 3 ncrt0 a30 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 29 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler insf start S 0 glib start section interrupt start 6 Idc istack_top isp set istack pointer mov b 02h 0ah mov b 00h 04h set processer mode 7 mov b 00h 0ah Idc 0080h flg 8 Idc stack_top sp set stack pointer Ide data_SE_top sb set sb register fset b sswitch to bank 1 Ide data_SE_top sb set sb register felr b switch to bank 0 Idc VECTOR_ADR into BZERO bss SE top oss_ SE BZERO bss SO top oss SO BZERO _ bss _NE top bss
122. SS A variable is assigned to the bit position which the specified absolute address specified Syntax pragma BITADDRESS variable name bit position absolute address Example pragma BITADDRESS io 1 100H pragma DMAC Specifies the DMAC register of a external variable Syntax pragma DMAC variable name DMAC register name Example pragma DMAC dma0 DMAO pragma INTCALL Declares a function written in assembler called in a software interrupt int instruction By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Syntax pragma INTCALL C INT No function name register name Example pragma INTCALL 25 func RO R1 Example pragma INTCALL C 25 func RO R1 Syntax pragma INTCALL INT No function name Example pragma INTCALL 25 func Example pragma INTCALL C 25 func Always be sure to declare the prototype of the function before entering this declaration pragma INTERRUPT Declares an interrupt handling function written in C language This declaration causes code to perform a procedure for the interrupt handling function to be generated at the entry or exit to and from the function Furthermore by specifying switch B it is possible to switch the register to a back register instead of saving it to a stack when calling the function Syntax pragma INTERRUPT B E F V interrupt handling function name pragma INTERRUPT B
123. Specify the line number in the file and the filename You can change the name of the source file and the line No REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 194 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications Jamie Sz Function Instructs the system to process NC308 s extended functions Format 1 pragma ROM variable name 2 pragma SBDATA variable name 3 pragma SBI6DATA variable name 4 pragma SECTION predetermined section name altered section name 5 pragma STRUCT tag name of structure unpack 6 pragma STRUCT tag name of structure arrange 7 pragma ADDRESS variable name absolute address 8 pragma BITADDRESS variable name bit position absolute address 9 pragma DMAC variablename DMAC register name 10 pragma INTCALL C int No assembler function name register name register name 11 pragma INTCALL C intNo C language function name 0 12 pragma INTERRUPT B E F interrupt handling function name 13 pragma PARAMETER C assembler function name register name register name 14 pragma SPECIAL C specialNo function name 15 pragma ALMHANDLER alarm handler function name 16 pragma CYCHANDLER cyclic handler function name 17 pragma INTHANDLER interrupt handler function name 18 pragma HANDLER interrupt handler function name 19 pragma TASK task start function name 20 pragma ASM 21 pragma ENDASM 22 pragma JSRA function name 2
124. Standard Library malloc Function Allocates a memory area Format include lt stdlib h gt void _far malloc n bytes Method function Argument size_t n bytes Size of memory area in bytes to be allocated ReturnValue Returns NULL if a memory area of the specified size could not be allocated Description Dynamically allocates memory areas Rule malloc performs the following two checks to secure memory in the appropriate location 1 Ifmemory areas have been freed with free If the amount of memory to be secured is smaller than that freed the area is secured from the high address of the contiguously empty area created by free toward the low address Heap area Sa Coa e High i Unused area REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 265 M32C Series C Compiler Package V 5 42 C Compiler E Standard Librar malloc Memory Management Functions Rule Ifthe amount of memory to be secured is larger than that freed the area is secured from the lowest address of the unused memory toward the high address Heap area Low E freee Freie unseen E usse High 2 Ifno memory area has been freed with free If there is any unused area that can be secured the area is secured from the lowest address of the unused memory toward the high address Heap area Low are Unused area High If there is no unused area that can be secured mal
125. TCALL declaration be sure to include an assembler function prototype declaration If there is no prototype declaration a warning is output and the pragma INTCALL declaration is ignored 2 Observe the following in the prototype declaration a Make sure that the number of parameters in the prototype declaration matches those in the pragma INTCALL declaration b You cannot declare the following types in the parameters in the assembler function J Structure types and union types e double types e long long types You cannot declare the following functions as the return values of assembler functions o Functions that return structures or unions 3 You can use the following registers for parameters when calling float types long types 82 bit registers R2RO and R8R1 far pointer types 24 bit registers AO A1 R2RO0 and R3R1 near pointer types 16 bit registers AO A1 RO0 R1 R2 and R3 char types and _Bool types 8 bit registers ROL ROH R1L and R1H There is no differentiation between uppercase and lowercase letters in register names 4 You can only use decimals for the INT Numbers Declaring functions of which the body is written in C 1 Before a pragma INTCALL declaration be sure to include a prototype declaration If there is no prototype declaration a warning is output and the pragma INTCALL declaration is ignored 2 You cannot specify register names in the parameters of functions that include the pragma
126. Types Array types are mapped contiguously to an area equal to the product of the size of the elements in bytes and the number of elements They are mapped to memory in the order in which the elements appear Figure D 3 is an example of mapping Example char c 5 0 1 2 3 4 address higher Figure D 3 Example of Placement of Array REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 200 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 1 6 Structure types Structure types are mapped contiguously in the order of their member data Figure D 4 is an example of mapping Example struct TAG 3 S l s address higher Figure D 4 Example of Placement of Structure 1 Normally there is no word alignment with structures The members of structures aremapped contiguously To use word alignment use the pragma STRUCT extended function pragma STRUCT adds a byte of padding if the total size of the members is odd Figure D 5 is an example of mapping Example pragma STRUCT TAG unpac struct TAG char C int i s address higher Figure D 5 Example of Placement of Structure 2 D 1 7 Unions Unions occupy an area equal to the maximum data size of their members Figure D 6 is an example of mapping Example wion TA E char C int i 4 bytes size of lo long lo s address higher Figure D 6 Example of Placem
127. X Copyright C XXXX XXXX Renesas Electronics Corp 3 and Renesas Solutions Corp All Rights Reserved Compile Start Time XXX XXX XX XX XX XX XXXX COMMAND LINE ccom308 C Renesas nc308wa vXXXXXX TMP sample i o sample a30 dS r 3 Normal Optimize OFF 1 ROM size Optimize OFF Speed Optimize OFF Default ROM is far l 3 Default RAM is near GLB __SB SB __SB FB 0 HH FUNCTION main HH H FRAME AUTO flag size 2 offset 2 HH ARG Size 0 Auto Size 2 Context Size 8 SECTION program CODE ALIGN _file sample c align ine 6 C_SRC glib _main _main enter 02H ine 9 H C_SRC flag CLR mov w 0000H 2 FB flag ine 11 C_SRC printf flag d n flag 2 push w 2 FB flag push __ TO jsr _ printf add l 06H SP _line 13 C_SRC exitd omitted glb _puts glib ungetc glib _ printf glib _forintf glib _ sprintf omitted Figure 1 10 Example Assembly Language Source File 1 sample a30 REJ10J2057 0200 Rev 2 00 2010 04 01 12 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 SECTION rom_FO ROMDATA TO byte 66H f byte 6cH T byte 61H a byte 67H g byte 20H n byte 3dH byte 20H oe byte 25H byte 64H d byte OaH byte 00H END Compile End Time XX XXX XX XX XX XX XXXX Figure 1 11 Example Assembly Language Source File 2 sampl
128. a data_SEI data_SOI data_6EI data_6OID storing them are transferred to RAM data_SE data_SO data_6E data_60 Initializes the heap area Initializes the standard I O function library Initializes FB register Calls the main function REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 29 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler b Modifying the Startup Program Figure 2 12 summarizes the steps required to modify the startup programs to match the target system d Set the size of stack sections e Set the size of heap sections oge opou f Set the interrupt base register g Set the processor operating mode 2 2 3 Customizing Memory Allocations j n 3 Pascwominglenonaoams O go 5 2 Figure 2 12 Example Sequence for Modifying Startup Programs c Examples of startup modifications that require caution 1 Settings When Not Using Standard I O Functions The init function initializes the M16C 80 Series I O It is called before main in ncrt0 a30 Figure 2 13 shows the part where the init function is called If your application program does not use standard I O comment out the init function call from nert0 a30 if STANDARD IO 1 glib _init Call _init G jsra _init endif Figure 2 13 Part of ncrt0 a30 Where init Function is Called 3 The init function also initializes the microcomputer hardware for standa
129. a control for function duplicate ignored Two or more of INTERRUPT TASK HANDLER CYCHANDLER or ALMHANDLER are specified for the same function in pragma Be sure to specify only one of INTERRUPT TASK HA NDLER CYCHANDLER orALMHANDLER pragma unknown switch ignored Invalid switch is specified to pragma pragma declaration is ignored Write switch correctly auto is illegal storage class An incorrect storage class is used Specify the correct storage class register is illegal storage class An incorrect storage class is used Specify the correct storage class argument is define by typedef typedef ignored eU eU ey Specifier typedef is used in argument declaration Specifier typedef will be ignored Delete typedef assign far pointer to near pointer bank value ignored ey The bank address will be nullified when substituting the far pointer for the near pointer Check the data types near or far assignment from const pointer to non const pointer The const property is lost by assignment from const pointer to non const pointer Check the statement description If the description is correct ignore this warning 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 336 Table F 22 ccom308 Waming Messages 3 9 Waming message Description and countermeasure assignment from volatile pointe
130. a30 4 The two relocatable object files AA r30 and ncrt0 a30 are linked by the linkage editor In308 which is run from nc30 to create the absolute module file AA x30 Figure 1 3 Program Development Flow Figure 1 3 is an example make file containing the series of operations shown in Figure 1 4 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 6 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 AA x80 nert0 a30 AA r30 nc308 oAA ncrt0 r30 AA r30 nert0 r30 ncrt0 a30 as308 ncrt0 a30 AA r30 AA c nc308 c AA c Figure 1 4 Example make File Figure 1 5 shows the command line required for nc308 to perform the same operations as in the makefile shown in Figure 1 4 nc308 oAA nert0 a30 AA c lt RET gt Indicates the prompt lt RET gt Indicates the Return key Specify ncrt0 a30 first when linking Figure 1 5 Example nc308 Command Line REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 7 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 1 5 NC308 Output Files This chapter introduces the preprocess result C source program output when the sample program sample c is compiled using NC308 and the assembly language source program 1 5 1 Introduction to Output Files With the specified command line options the nc308 compile driver outputs the files shown in Figure 1 6 Below we show the contents of the files output when the C source fil
131. acter strings s1 and s2 in the sequence s1 s21 The concatenated string ends with NULL When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strchr String Handling Functions Function Searches the specified character beginning with the top of the character string Format include lt string h gt char _far strchr s Method function Argument const char _far s Pointer to the character string to be searched in int c Character to be searched for ReturnValue Returns the position of character c that is first encountered in character string e ee NULL when character string s does not contain character c Description Searches for character c starting from the beginning of area s You can also search for 0 When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization __ There must be adequate space to accommodate s1 plus s2 S REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 286 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strcmp String Handling Functions Function Compares character strings Format include lt string h gt int strcmp s1 s2 Method Macro function Argument const char _far s1 Pointer to the first character string to be compared const char _far s2
132. also created The following command line options are used o Specifies machine language data file sample x80 ccceeeeees option o e Specifies output of list file extension lst at assembling option as308 Specifies output of map file extension map at linking option 1n308 ms nc308A command line option A assembly language source file name A relocatable object file name A lt C source file name gt Prompt lt gt Mandatory item Optional item A Space Figure 2 1 nc308 Command Line Format REJ10J2057 0200 Rev 1 00 2010 04 01 1RENESAS 14 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler nc308 osample as308 n308 ms nert0 a30 sample c lt RET gt lt RET gt Return key Always specify the startup program first when linking Figure 2 2 Example nc308 Command Line 2 1 2 Command File The compile driver can compile a file which has multiple command options written in it i e a command file after loading it into the machine Use of a command file helps to overcome the limitations on the number of command line characters imposed a Command file input format Nc308A command line option A lt file name gt command line option Prompt lt gt Mandatory item Optional item A Space Figure 2 3 Command File Command Line Format nc308 c testcmd g lt RET gt
133. an be avoided by a combined use with pragma JSRA fnear_pointer fNP Modify generated code Function Specified the default attribute of the pointer type variables to near This option sets the default pointer size to 16 bit Supplement The pointer size of C language pointer type variables by default is 32 bit 24 bit in effect Use this option when you want to change the pointer size to 16 bit By specifying this option it is possible to compress the generated code size and the RAM sizes used Conversely this gives rise to the need for precise near far control For near far control Renesas recommends using the const qualifier and not the near far qualifier as much as possible Notes If this option is selected near far control must be exercised strictly It is recommended that the const qualifier be used for near far control rather than using the near far qualifier fnear_ROM f NROM Modify generated code Function Change the default attribute of ROM data to near Supplement The ROM data const specified variables etc are located in the far area by default By specifying this option you can locate the ROM data in the near area You do not normally need to use this option REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 86 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fno_align fNA Modify generated code Function Does not align the start address of the function fno_ev
134. and initializes it to zero 0 x free Frees the allocated memory area x malloc Allocates a memory area x realloc Changes the size of an allocated memory area x REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 231 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library e Memory Handling Functions REJ10J2057 0200 Rev 2 00 2010 04 01 232 The following lists memory handling functions Table E 6 Memory Handling Functions Type Function Contents Reentrant Initialize bzero Initializes a memory area by clearing it to zero O Copy bcopy Copies characters from a memory area to another O memcpy Copies characters n bytes from a memory area to another O memset Set a memory area by filling with characters O Compare memcmp Compares memory areas n bytes o memicmp Compares memory areas with alphabets handled as 0 upper case letters Move memmove Moves the area of a character string 0 Search memchr Searches a character from a memory area o f Execution Control Functions The following lists execution control functions Table E 7 Execution Control Functions Function Contents Reentrant abort Terminates the execution of the program o longjmp Performs a global jump 0 setjmp Sets a stack environment for a global jump 0 2ENESAS g Mathematical Functions The following lists mathematical functions M32C Series C Compiler Package V 5 42
135. anguage macro assebler function You can describe some assembler command as the function of C Example char dadd_b char val1 char val2 Example int dadd_w char vall char val2 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 103 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 1 Near and far Modifiers For the M82C series microcomputers the addressing modes used for referencing and locating data vary around the boundary address OFFFFH NC308 allows you to control addressing mode switching by near and far qualifiers B 1 1 Overview of near and far Modifiers The near and far qualifiers select an addressing mode used for variables or functions near MOUIPIEL cceceeseeeeeeeeeseenes Area of 000000H to OOFFFFH far MOCIPICL ecessesesseseeeseeeseeees Area of 000000H to OFFFFFFH The near and far modifiers are added to a type specifier when declaring a variable or function If you do not specify the near or far modifiers when declaring variables and functions NC308 interprets their attributes as follows Variables c ccescssesssssssssessesssneeees near attribute const qualified constants far attribute PUNCtIONS csesccsseseseeeeseseeeseeeeees far attribute Furthermore NC308 allows you to modify these default attributes by using the startup options of compile driver nc308 B 1 2 Format of Variable Declaration The near and far modifiers are
136. ared confllict declare of function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 353 M32C Series C Compiler Package V 5 42 C Compiler H Using gensni or the sni File Creation Tool for Call Walker Appendix H Using gensni or the sni File Creation Tool for Call Walker H 1 H 2 H 2 1 Before Call Walker or the stack analysis tool of the High performance Embedded Workshop can be used you must have sni files as the input files for it You use gensni or the sni file creation tool for Call Walker to create these sni files from the absolute module file Starting Call Walker To start Call Walker select Call Walker that is registered to the High performance Embedded Workshop or select the tool from the Tools menu of the High performance Embedded Workshop After starting Call Walker choose Import Stack File from the File menu and select a sni file as the input file for Call Walker Note on Call Walker Values indicated by Call Walker are not strictly accurate so simply use them for reference when you examine the size of the stack space Careful evaluation is needed if you have decided the actual size of the stack space according to the information indicated by Call Walker Outline of gensni Processing Outline of gensni gensni is the tool to create sni files for Call Walker gensni generates a sni file by processing the absolute module file extension x30 Before gensni can be used there must
137. ary putc Input Output Functions Function Outputs one character to the stream Format include lt stdio h gt int fpute c stream Method function Argument int c Character to be output FILE _far stream Pointer of the stream ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to the stream puts Input Output Functions Function Outputs one line to the stream Format include lt stdio h gt int fputs str stream Method function Argument const char _far str Pointer of the character string to be output FILE _far stream Pointer of the stream ReturnValue Returns 0 if output normally Returns any value other than 0 EOF if an error occurs Description Outputs one line to the stream REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 249 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library fread Input Output Functions Function Reads fixed length data from the stream Format include lt stdio h gt size_t fread buffer size count stream Method function Argument void _far buffer Pointer of the location to be stored in size_t size Number of bytes in one data item size_t count Maximum number of data items FILE _far stream Pointer of stream ReturnValue Returns the number of data items input Description Reads data of the size specified in size from the stream and
138. ata_6O section data_6OI section bss_NE section bss_NO section bss_FE section bss_FO section bss_SE section bss_SO section bss_6E section bss_60 section rom_NE section rom _NO section rom _FE section rom_FO section data_MONInlI_E section data _MONInI_O section bss_MONInI _E section bss MON n _O section data_MONInI_EI section data _MONIn _OI section n 1 4 2 Example Section Mapping in Single Chip Mode Figure 2 23 to Figure 2 26 are examples of the sect308 inc include file which is used for mapping sections to memory in single chip mode REJ10J2057 0200 Rev 1 00 2010 04 01 39 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler IIR IK IKI AI KI KIKI III IRIE IKI I IIIS II III IKI III IIIA IIIA III IKI IK kkk k 3 C Compiler for M16C 80 Copyright C XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All rights reserved omitted ld sect308 inc v X XX X X XXXX XX IXX XX XX XX XXXXX Exp IIR ekeke ee kekek ee eee keke ee ke eke eke ke ee Heede kekeke deke ede ee kek dekek dede ke dee kekeke ekekeke kek eede kek kekek dee IKI dok kkk Arrangement of section Near RAM data area SBDATA area section data_SE DATA org 400H data_SE_top section bss SE DATA ALIGN bss_SE_top section data_SO DATA data_SO_ top section bss SO DATA bss_SO_top near RAM area section
139. ating it right by 1 bit including the C flag Syntax include lt asmmacro h gt static unsigned char rorc_b unsigned char val When calculated in 8 bits static unsigned int rorc_w unsigned int val When calculated in 16 bits ROT Function The value of val is returned after rotating it as many times as indicated by count Syntax include lt asmmacro h gt static unsigned char rot_b signed char count unsigned char val When calculated in 8 bits static unsigned int rot_w signed char count unsigned int val When calculated in 16 bits static unsigned char rot_b signed char count unsigned char val REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 174 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications Appendix C Overview of C Language Specifications In addition to the standard versions of C available on the market C language specifications include extended functions for embedded system C 1 Performance Specifications C 1 1 Overview of Standard Specifications NC808 is a cross C compiler targeting the M82C series In terms of language specifications it is virtually identical to the standard full set C language but also has specifications to the hardware in the M82C series and extended functions for embedded system J Extended functions for embedded system near far modifiers and asm function etc o Floating point library and host machine dependent fu
140. ation option M82 and M90 have been selected more than once Either of the compilation option M82 or M90 one is selected argument type given both places Argument declaration in function definition overlaps an argument list separately given Choose the argument list or argument declaration for this argument declaration array of functions declared The array type in array declaration is defined as function Specify scalar type struct union for the array type array size is not constant integer j The number of elements in array declaration is not a constant Use a constant to describe the number of elements asm s string must have only 1 b b is described more than twice in asm statement Make sure that b is described only once asm s string must not have more than 3 or or is described more than thrice in asm statement Make sure that is described only twice auto variable s size is zero ee ey An array with 0 elements or no elements was declared in the auto area Correct the coding bitfield width exceeded The bit field width exceeds the bit width of the data type gt Make sure that the data type bit width declared in the bit field is not exceeded bitfield width is not constant integer The bit width of the bit field is not a constant Use a constant to write the bit width can t get bitfield address by amp operator The bi
141. ations d Selection Statement Use the format of selection statement shown in Figure C 10 if expression statement if expression statement else statement switch expression statement Figure C 10 Format of Selection Statement e Iteration Statement Use the format of iteration statement shown in Figure C 11 while expression statement do statement while expression for expression op jexpression optJEXPFESSION opt Statement opt indicates optional items Figure C 11 Format of Iteration Statement f Jump statement Use the format of jump statement shown in Figure C 12 goto identifier continue break return expression opt opt indicates optional items Figure C 12 Format of Jump Statement g Assembly Language Statement Use the format of assembly language shown in Figure C 13 asm Literals literals assembly language statement Figure C 13 Format of Assembly Language Statement REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 188 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications C 3 Preprocess Commands Preprocess commands start with the pound sign and are processed by the cpp308 preprocessor This chapter provides the specifications of the preprocess commands List of Preprocess Commands Available TableC 12 lists the preprocess commands available in NC308 TableC 12 List of Preprocess Co
142. ax pragma ASM pragma ENDASM Example pragma ASM mov w R0 R1 add w R1 02H pragma ENDASM pragma JSRA Calls functions using JSR A as the JSR instruction Syntax pragma JSRA function name Example pragma JSRA func pragma JSRW Calls functions using JSR W as the JSR instruction Syntax pragma JSRW function name Example pragma JSRW func pragma PAGE Indicates a new page point in the assembler listing file Syntax pragma PAGE Example pragma PAGE pragma _ ASMMACRO Declares defined a function by assembler macro Syntax pragma _ ASMMACRO function name register name Example pragma _ ASMMACRO mul RO R1 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 138 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 7 2 Using Memory Mapping Extended Functions NC808 includes the following memory mapping extended functions pragma ROM Map to rom section Function Maps specified data variable to rom section Syntax pragma ROM variable_name Description This extended function is valid only for variables that satisfy one or other of the following conditions Non extern variables defined outside a function Variables for which an area is secured Variables declared as static within the function Rules 1 Ifyou specify other than a variable it will be ignored 2 No error occurs if you specify pragma ROM more than once 3 The data is mapped to a ro
143. be an absolute module file extension x30 available Specify the compile option finfo during compilation to generate that file The processing flow of NC308 is shown in Figure G 1 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 354 M32C Series C Compiler Package V 5 42 C Compiler H Using gensni or the sni File Creation Tool for Call Walker C language source file Compile driver nc308 cpp308 Preprocessor ccom308 Compiler Assembly language source file Assembler as308 Relocatabale file Linker In308 nc308 Command option Absolute module file Specify the nc308 startup option finfo to generate this file sni file Call Walker Software Indicates the software included in the NC308 C Files output by NC308 and gensni Figure G 1 Processing flow of NC308 REJ10J2057 0200 Rev 2 00 2010 04 01 355 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler H Using gensni or the sni File Creation Tool for Call Walker H 3 H 3 1 Starting gensni Tf Call Walker is started from the High performance Embedded Workshop gensni is automatically executed However if Call Walker is started from other than the High performance Embedded Workshop gensni is not automatically executed In this case start gensni from the Windows command prompt Input format To start gensni specify an input file name and startup option according to the input format shown below
144. be cast from the structure or union type nor can it be cast to the structure or union type Write the expression correctly invalid asm s argument ey The variables that can be used in asm statements are only the auto variable and argument gt Use the auto variable or argument for the statement invalid bitfield declare e The bit field declaration contains an error gt Write the declaration correctly invalid break statements e The break statement is put where it cannot be used gt Make sure that it is written in switch while dowhile and for REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 14 ccom308Error message 8 13 Error message Description and countermeasure invalid case statements The switch statement contains an error Write the switch statement correctly invalid case value The case value contains an error Write an integral type or enumerated type constant invalid cast operator Use of the cast operator is illegal Write the expression correctly invalid continue statements The continue statement is put where it cannot be used Use it in a while do while and for block invalid default statements The switch statement contains an error Write the switch statement correctly invalid enumerator initialized ey ei eu ey ei e The initial value of the enumerator is incor
145. ble from 000000H to OOFFFFH _____ far accessible from 000000H to OFFFFFFH REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 34 M 32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 000000H 000400H dat SE section L bss NE section dat NO section 010000H bss NO section 020000H ie dat FE section bss FE section dat FO section bss FO section OEFOO00H eae gS 1 rare YS Rare IVY fewelu E pare Aowawu peua E OFE0000H rom_FE section rom FO section data SEI section data SOI section data NEI section data NOI section data FEI section data FOI section interrupt section program section program _S section vector section OFFOO00H Bale NOY Puau OFFFDFFH fvector section Include special page OFFFFFFH Figure 2 19 Example Section Mapping 1 Also Figure 2 20 shows the how the sections are mapped according to the sample startup program s include file sect308 inc used pragma SB16DATA Extended Functions See the B 7 pragma Extended Functions and 2 2 1 f pragma SB1I6DATA for the pragma SB16DATA Extended Functions REJ10J2057 0200 Rev 1 00 2010 04 01 35 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 000000H 000400H 010000H 020000H OEFOO00H dat NE section bss NE section bss NO sectio
146. btowc Converts a multibyte character into a wide character o westombs Converts a wide character string into a multibyte character string O wctomb Converts a wide character into a multibyte character O k Localization Functions The following lists localization functions Table E 12 Localization Functions Function Contents Reentrant localeconv Initializes struct Iconv O setlocale Sets and searches the locale information of a program O REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 234 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 2 3 Standard Function Reference The following describes the detailed specifications of the standard functions provided in NC308 The functions are listed in alphabetical order Note that the standard header file extension h shown under Format must be included when that function is used abort Function Terminates the execution of the program abnormally Format include lt stdlib h gt void abort void Method function Variable No argument used ReturnValue No value is returned Description Terminates the execution of the program abnormally Note Actually the program loops in the abort function abs Function Calculates the absolute value of an integer Format include lt stdlib h gt int abs n Method function Variable int n Integer ReturnValue Returns the absolute value of integer n distance from 0 REJ10J2057 02
147. c void struct TAG char bit0 1 char bit1 1 char bit2 1 char bit3 1 s asm bset b FB s bitt Assembly language source file compile result FUNCTION func 4 FRAME AUTO __ PAD1 size 1 offset 1 FRAME AUTO s size 1 offset 2 4 ARG Size 0 Auto Size 2 Context Size 8 section program CODE ALIGN file bit c align _line3 glib _func _func enter 02H ine 10 HHH ASM START bset 1 2 FB s HHHH ASM END ine 11 exitd Figure B 23 Example of Referencing auto Area Bit Field When referencing a bit field in the auto area you must confirm that it is located within the range that can be referenced using bit operation instructions within 32 bytes of the FB register value REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 114 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 2 3 Specifying Register Name of register Variable The storage class auto and register variables including arguments may be mapped to registers by the compiler The variables mapped to registers can be used in the asm function by writing the program as shown in Figure B 24 below asm op code Variable name Figure B 24 Description Format for Register Variables You can only specify two variable name using this format Figure B 25 shows examples of referencing register variables and the results of compiling C Source file void func void re
148. calculated in 24 bits SIN Function Strings are transferred from a fixed source address that is indicated by pl to the destination address indicated by p2 as many times as indicated by count in the address incrementing direction There is no return value Syntax include lt asmmacro h gt static void sin_b char _far p1 char _far p2 unsigned int count When calculated in 8 bits static void sin_w int _far p1 int _far p2 unsigned int count When calculated in 16 bits SMOVB Function Strings are transferred from the source address indicated by p1 to the destination address indicated by p2 as many times as indicated by count in the addressdecrementing direction There is no return value Syntax include lt asmmacro h gt static void smovb_b char _far p1 char _far p2 unsigned int count calculated in 8 bits static void smovb_w Gnt _far p1 int _far p2 unsigned int count When calculated in 16 bits REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 172 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference SMOVU Function Strings are transferred from the source address indicated by p1 to the destination address indicated by p2 in the address incrementing direction until zero is detected There is no return value Syntax include lt asmmacro h gt static void smovu_b char _far p1 char _far p2 When calculated in 8 bits static void sm
149. calculation shown in Figure D 9 void func void char c1 C2 c3 c1 c2 2 C3 FigureD 9 Example of C Program To generate code that maximizes code efficiency and maximizes speed NC308 does not by default extend char types to int types The default can however be overridden using the nc308 compile driver command line option fansi or fextend_to_int fETI to achieve the same sign extension as in standard C If you do not use the fansi or fextend_to_int fETI option and your program assigns the result of a calculation to a char type as in Figure D 9 make sure that the maximum or minimum value for a char type does not result in an overflow in the calculation 1 The ranges of values that can be expressed as char types in NC308 are as follows unsigned char type c scccesseceeeeeees Oto 255 REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 203 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 3 Function Call Rules D 3 1 Rules of Return Value When returning a return value from a function the system uses a register to return that value for the integer pointer and floating point types Table D 4 shows rules on calls regarding return values Table D 4 Return Value related Calling Rules Return value type Rules _Boll ROL register char int RO register near pointer float Least significant 16 bits returned by storing in RO register Mos
150. cify Oforward_function_to_inline option ignore this condition Below inline deployment is carried out The example of description of a static function is shown extern int i Function func is a function inline deployment is carried out in each place static intfunc void re currently called within main a i return i J void main void int s func s func Notes 1 The assembler code to description of substance of the static function which became inline function treatment is always generated 2 About a function it is compulsorily In treating as an inline function it is in a function Please make an inline declaration REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 80 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference O50A Inhibit code generation Function Inhibits code generation based on bit manipulating instructions BTSTC and BTSTS when the optimization option 05 is selected Notes The bit manipulating instructions BTSTC and BTSTS cannot be used to read or write to the registers in the SFR area Select this option if when the optimization option O5 is selected codes are generated using bit manipulating instructions for read or write to the registers in the SFR area REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 81 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 6 Generated Code Modification Opti
151. clude file of the startup program The sections are mapped to memory in the order they are defined in sect308 inc Use the as308 pseudo instruction ORG to specify their starting addresses Figure 2 22 is an example of these settings section program_S org OFF0000H Specifies the starting address of the program section Figure 2 22 Example Setting of Section Starting Address If no starting address is specified for a section that section is mapped immediately after the previously defined section REJ10J2057 0200 Rev 1 00 2010 04 01 1RENESAS 37 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 1 Rules for Mapping Sections to Memory Because of the effect on the memory attributes RAM and ROM of Micro Processor memory some sections can only be mapped to specific areas Apply the following rules when mapping sections to REJ10J2057 0200 Rev 1 00 2010 04 01 38 memory 1 Sections mapped to RAM stack section heap section data_SE section data_SO section data_NE section data_NO section data_6E section data_6O section bss_SE section bss_SO section bss_NE section bss_NO section bss_FE section bss_FO section bss_6E section bss_60 section 2 Sections mapped to ROM program section interrupt section fvector section rom_NE section rom_NO section rom_FE section rom_FO section data_SEI sectio
152. compiler itself C source programs processed by cpp308 are converted to assembly language source programs that can be processed by as308 1 24 aopt308 aopt308 is the assembler optimizer It optimizes the assembler codes output by ccom308 1 2 5 utl308 utl308 is the execution file for the SBDATA declaration utility and SPECIAL page Function declaration Utility By processing the absolute module file x30 utl308 generates a file that contains SBDATA declarations located in the SB area beginning with the most frequently used one and a file that contains SPECIAL page function declarations located in the SPECIAL page area beginning with the most frequently used one To use utl308 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated 1 2 6 Call Walker amp gensni CallWalker is the utility to graphically display the relationship between stack sizes and function calls that is needed for program operation Similarly gensni is the utility to analyze the necessary information CallWalker loads a stack information file x30 that is output by gensni to display the amount of stacks used The amount of stacks used by an assembly program that cannot be output to a stack information file can be added or edited by using the editing facility making it possible to find the total amount of stacks used in the entire system The edited information for the amount of stacks used can be
153. completely suppressed inhibited REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 94 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Werror_file lt file name gt METIN KOJ OE Function Outputs error messages to the specified file Syntax nc308A Werror_fileA lt output error message file name gt Notes The format in which error messages are output to a file differs from one in which error messages are displayed on the screen When error messages are output to a file they are output in the format suitable for the tag jump function that some editors have Wlarge_to_small WLTS Warning Options Function Outputs a warning about the substitution of variables in descending sequence of size Supplement A warning may be output for negative boundary values of any type even when they fit in the type This is because negative values are considered under language conventions to be an integer combined with the unary operator For example the value 32768 fits in the signed int type but when broken into 2 and 32768 the value 32768 does not fit in the signed int type and consequently becomes the signed long type Therefore the immediate value 32768 is the signed long type For this reason any statement like int i 32768 gives rise to a warning Notes Because this option outputs a large amount of warnings warning output is suppressed for the type conversions listed below Assignment from
154. const char _far s1 Pointer to the character string to be searched in const char _far s2 Pointer to the character string of the character to be searched for ReturnValue Returns the position pointer where the specified character is found first Returns NULLif the specified character cannot be found Description Searches the specified character s2 from the other character string in s1 area You cannot search for 0 When you specify options O 8 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 292 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strrchr String Handling Functions Function Searches the specified character from the end of a character string Format include lt string h gt char _far strrchr s c Method function Argument const char _far s Pointer to the character string to be searched in int c Character to be searched for ReturnValue Returns the position of character c that is last encountered in character string s Returns NULL when character string s does not contain character c Description Searches for the character specified in c from the end of area s You can search for O When you specify options O 8 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimizat
155. ctions In M32C Series the BTSTC and BTSTS bit manipulation instructions are prohibited from rewriting the contents of the interrupt control registers However the compiler does not recognize the type of any register so should BTSTC or BTSTS instructions be generated for interrupt control registers the assembled program will be different from the one you intend to develop Please compile after taking the following measures if the manipulation instructions is generated to bit operation of SFR area Make sure that no BTSTC and BTSTS instructions are generated after these side steppings Jt selects it excluding the compilation option option OR_MAX or O5 An instruction is directly described in a program using an ASM function 2 The source line information may partly be modified in the course of optimization Therefore if this options is specified when your program is running on the debugger your program is a possibility of different actions If you do not want the source line information to be modified use the compile option One_break_source_debug ONBSD to suppress optimization 3 Please make sure to specify link option JOPT 4 The enum type may not be referenced correctly in some debugger 5 A function prototype must always be expressly written Without a prototype declaration the compiler may not be able to generate the correct code 6 The debug information of the type double is proce
156. ctly invalid member used e The member reference contains an error gt Write correctly invalid redefined type name of e The same identifier is defined more than once in typedef identifier Write the identifier correctly invalid return type e The type of return value of the function is incorrect gt Write it correctly invalid sign specifier e Specifiers signed unsigned are described twice or more Write the type specifier correctly invalid storage class for data e The storage class is erroneously specified gt Write it correctly invalid struct or union type e Structure or union members are referenced for the enumerated type of data gt Write it correctly invalid truth expression e The void struct or union type is used in the first expression of a condition expression Use scalar type to write this expression invalid type specifier e The same type specifier is described twice or more as in int int i or an incompatible type specifier is described as in float int 1 Write the type specifier correctly invalid type s bitfield e Abit field of an invalid type is declared Use the integer type for bit fields invalid type specifier long long long e Specifiers long are described thrice or more Check the type invalid unary operands e Use of the unary operator is illegal Check the right side expression of the operator invalid unary operands e Use of the unary operator is illegal Check th
157. dard include files stdio h 1 Defines the FILE structure 2 Defines a stream name 3 Declares the prototype of input output functions stdlib h Declares the prototypes of memory management and terminate functions string h Declares the prototypes of character string and memory handling functions time h Declares the functions necessary to indicate the current calendar time and defines the type REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 218 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 1 2 Standard Header Files Reference Following are detailed descriptions of the standard header files supplied with NC308 The header files are presented in alphabetical order The NC308 standard functions declared in the header files and the macros defining the limits of numerical expression of data types are described with the respective header files assert h Function Defines assert function ctype h Function Defines declares string handling function The following lists string handling functions Function Contents isalnum Checks whether the character is an alphabet or numeral isalpha Checks whether the character is an alphabet iscntrl Checks whether the character is a control character isdigit Checks whether the character is a numeral isgraph Checks whether the character is printable except a blank islower Checks whether the character is a lower ca
158. data _NE DATA ALIGN data_NE_top section bss NE DATA ALIGN bss_NE_top section data_NO DATA data_NO_top section bss _NO DATA bss_NO_top Stack area section stack DATA ALIGN blkb STACKSIZE align stack_top blkb ISTACKSIZE align istack_top Figure 2 23 Listing of sect308 inc in Single Chip Mode 1 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 40 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler heap section if HEAP 1 section heap DATA heap_top blkb HEAPSIZE endif Se EE F i Near ROM data area E acc hanna A T E Sa l section rom_NE ROMDATA ALIGN i rom_NE top section rom _NO ROMDATA rom_NO top l E E E eee wee E A oe cee as oe em Far RAM data area lt You can remove this part because it is unnecessary SBDATA area for pragma SB16DATA In this case you need to remove the section data_SE DATA ee org 10000H initialize program in the far area of data_SE_top nert0 a30 section bss SE DATA ALIGN bss_SE_top section data_SO DATA data SO top 3 section bss_SO DATA bss _SO top p section data_6E DATA ALIGN data_6E_top section bss_6E DATA ALIGN Q section data_60 DATA data_6O_top E a section bss _60 DATA pss 6O top l section data_FE DATA org XXXXOH data_FE_top section bss FE DATA ALIGN bss_FE_top section data _FO DATA data_FO_top section bss FO DATA bss_FO_top l
159. dified Figure E 7 Method of Directly Linking Modified Source Programs make lt RET gt Figure E 8 Method of Updating Library Using Modified Source Programs REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 313 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Appendix F Error Messages This appendix describes the error messages and warning messages output by NC308 and their countermeasures F 1 Message Format If during processing NC308 detects an error it displays an error message on the screen and stops the compiling process The following shows the format of error messages and warning messages nc308 error message Figure F 1 Format of Error Messages from the nc308 Compile Driver Error cop308 error No filename line No error message Error ccom filename line No error message Fatal ccom filename line No error message er Figure F 2 Format of Command Error Messages Warning cpp308 warning No filename line No warning message Warning ccom filename line No warning message Figure F 3 Format of Command Warning Messages 1 Fatal error message This error message is not normally output Please contact nearest Renesas office with details of the message if displayed REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 314 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages F 2 nc308 Error Messages Table F1
160. duct alter the content of the vector section before use For details on how to alter it refer to Preparing the Startup Program REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 153 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference at an INTERRUPT Declare interrupt function Function Declares an interrupt handler Syntax 1 pragma INTERRUPTAI B E F V Ainterrupt handlername 2 pragmaINTERRUPTAIB E F Ainterrupt vector numberAinterrupt handler name 3 pragmaINTERRUPTAIB E F Ainterrupt handler name vect interrupt vector number Description 1 By using the above format to declare interrupt processing functions written in C NC308 generates the code for performing the following interrupt processing at the entry and exit points of the function In entry processing all registers of the Micro Procesor are saved to the stack In exit processing the saved registers are restored and control is returned to the calling function by the REIT instruction 2 You may specify either B or E of F in this declaration e B Instead of saving the registers to the stack when calling the function you can switch to the alternate registers This allows for faster interrupt processing e E Multiple interrupts are enabled immediately after entering the interrupt This improves interrupt response e F Return to th calling function by the FREIT instruction in exit processing e IN
161. e ey zero divide ignored zero width for bitfield eu ey no const in previous declaretion y xxx Was declared but never referenced REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 342 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 Appendix G The SBDATA declaration amp SPECIAL page Function declaration Utility utl308 How to startup the SBDATA declaration amp SPECIAL page function declaration utility utl308 and how the startup options works are described here G 1 Introduction of utl308 G 1 Introduction of utl308 processes The SBDATA declaration amp SPECIAL page Function declaration Utility utl308 precesses the absolute module file hanving the extension x30 The utl308 generates a file that contains SBDATA declarations located in the SB area beginning with the most frequently used one pragma SBDATA and a file that contains SPECIAL page function declarations located in the SPECIAL page area beginning with the most frequently used one pragma SPECIAL To use utl308 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated Figure G 1 illustrates the NC308 processing flow REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 343 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Func
162. e unary operation or postfix operation contains an error For the unary operator check the right side expression For the postfix operator check the leftside expression invalid gt used e The left side expression of gt is not struct or union gt gt The left side expression of gt must have struct or union invalid s condition e The ternary operator is erroneously written Check the ternary operator invalid array type e Incomplete arrays cannot be declared gt Specify the number of elements in the multidimensional array invalid operation for pointer to Invalid calculation for the pointer to an incomplete type incomplete type Define members of a structure or define complete structs Invalid pragma OS Extended The INT No in pragma OS Extended function is invalid function interrupt number Specify correctly Invalid pragma INTCALL interrupt number The INT No in pragma INTCALL is invalid Specify correctly Invalid pragma SPECIAL special page number ba cca a The number or format specification written with pragma SPECIAL is incorrect Specify the number or format correctly Invalid pragma INTERRUPT vector number The number or format specification written with pragma INTERRUPT is incorrect Specify the number or format correctly invalid CAST operand The cast operation contains an error The void type cannot be cast to any other type it can neither
163. e This assignment feature is not affected by whether the variables are register qualified 3 1 5 About Startup Handling Startup may need to be modified depending on the type of microcomputer you are using or depending on your application system For modifications pertinent to the type of microcomputer consult the data book etc for your microcomputer and correct the startup file included with the compiler package before use REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 49 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique 3 2 For Greater Code Efficiency 3 2 1 Programming Techniques for Greater Code Efficiency a Regarding Integers and Variables 1 Unless required use unsigned integers If there is no sign specifier for int short or long types they are processed as signed integers Unless required add the unsigned sign specifier for operations on integers with these data types 2 If possible do not use gt or lt comparing signed variables Use and for conditional judgements b far type array The far type array is referenced differently at machine language level depending on its size 1 When the array size is within 64 Kbytes Subscripts are calculated in 16 bit width This ensures efficient access for arrays of 64 Kbytes or less in size 2 When the array size is greater than 64 Kbytes or unknown Subscripts are calculated in 32 bit width Therefore when it is known that the arra
164. e a30 Let s look at the contents of the assembly language source files Items 1 to 2 correspond to 1 to 2 in Figure 1 10 1 Shows status of optimization option and information on the initial settings of the near and far attribute for ROM and RAM 2 When the nc308 command line option dsource dS is specified shows the contents of the C source file s as comments REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 13 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler Chapter 2 Basic Method for Using the Compiler This chapter describes how to start the compile driver nc308 and the command line options 2 1 Starting Up the Compiler 2 1 1 nc308 Command Format The nc308 compile driver starts the compiler commands cpp308 and ccom308 the assemble command as308 and the link command 1n808 to create a absolute module file The following information input parameters is needed in order to start nc308 1 C source file s 2 Assembly language source file s 3 Relocatable object file s 4 Command line options optional These items are specified on the command line Figure 2 1 shows the command line format Figure 2 2 is an example In the example the following is performed 1 Startup program ncrt0 a30 is assembled 2 C source program sample c is compiled and assembled 3 Relocatable object files ncrt0 r30 and sample r30 are linked The absolute module file sample x30 is
165. e ane RESARA PEPE AER ERED SEAN SA RETREAT taiii A define _IOREAD 1 Read only flag define _IOWRT 2 Write only flag define _IOEOF 4 End of file flag define _IOERR 8 Error flag define _IORW 16 Read and write flag define _NFILE 4 Stream number define _TEXT 1 Text mode flag define _BIN 2 Binary mode flag remainder omitted Figure E 4 Stream Definition in stdio h Let s look at the elements of the file structures shown in Figure E 4 Items 1 to 6 correspond to 1 to 6 in Figure E 4 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 309 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library 1 char _buff Functions scanf and fscanf read one character ahead during input If the character is no use function ungetc is called and the character is stored in this variable If data exists in this variable the input function uses this data as the input data 2 int_cnt Stores the _buff data count 0 or 1 3 int_flag Stores the read only flag IOREAD the write only flag JOWRT the read write flag IORW the end of file flag IOEOF and the error flag IOERR _JOREAD IOWRT _IORW These flags specify the stream operating mode They are set during stream initialization _JOEOF _IOERR These flags are set according to whether an EOF is encountered or error occurs in the T O function 4 int_mod Stores the flags indicating the text mode TEXT
166. e bit field members of a structure are specified with no sign they are processed as unsigned o Can not specifies bit fields of long long type REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 182 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications C 2 3 Expressions TableC 10 and TableC 11 show the relationship between types of expressions and their elements TableC 10 Types of Expressions and Their Elements 1 2 Type of expression Elements of expression Primary expression identifier constant character literal expression primary expression Postpositional expression Postpositional expression expression Postpositional expression list of parameters Postpositional expression identifier Postpositional expression gt identifier Postpositional expression Postpositional expression Postpositional expression Monadic expression monadic expression monadic expression monadic operator cast expression sizeof monadic expression sizeof type name Monadic expression Cast expression type name cast expression cast expression Expression expression expression expression expression expression expression Additional and expression expression subtraction expressions expression expression Bitwise shift expression expression lt lt expression expre
167. e is out of range The value of case exceeds the switch parameter range Specify correctly character buffer overflow The size of the string exceeded 512 characters Do not use more than 511 characters for a string character constant too long iy 1 e 1p There are too many characters in a character constant characters enclosed with single quotes Write it correctly constant variable assignment In this assign statement substitution is made for a variable specified by the const qualifier Check the declaration part to be substituted for cyclic or alarm handler function has argument The function specified by pragma CYCHANDLER or ALMHANDLER is using an argument The function cannot use an argument Delete the argument enumerator value overflow size of unsigned char The enumerator value exceeded 255 Do not use more than 255 for the enumerator otherwise do not specify the startup function fehar_enumerator enumerator value overflow size of The enumerator value exceeded 65535 unsigned int Do not use more than 65535 to describe the enumerator enum s bitfield An enumeration is used as a bit field member Use a different type of member external variable initialized change to public ei ely e y An initialization expression is specified for extern declared variable extern will be ignored Delete extern an 2ENESAS M32C Series C Compiler Package V 5 42 C Com
168. e macro assembler and its executable file TM High performance Erabedded Workshop Integrated development environment be attached to this compiler Description of Symbols The following symbols are used in the NC308 manuals Symbol Description A gt MS Windows TM prompt lt RET gt Return key lt gt Mandatory item Optional item A Space or tab code mandatory A Space or tab code optional omitted Indicates that part of file listing has been omitted Additional descriptions are provided where other symbols are used REJ10J2057 0200 Rev 1 00 2010 04 01 RENESAS M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 Chapter 1 Introduction to NC308 This chapter introduces the processing of compiling performed by NC308 and provides an example of program development using NC308 1 1 NC308 Components NC308 consists of the following 8 executable files 1 NEZO oeer Compile driver 2 epp308 errrerre errr Preprocessor 3 CCOMBOS eee Compiler A aopt308 0e Assembler Optimizer 5 utl308 eee SBDATA declaration amp SPECIAL page Function declaration Utility 6 MapViewer e Mapviewer 7 CallWalker amp gensni Stack analysis tool amp Stack information analysis utility 8 genmap vr Utility to use Mapviewer of High performance Embedded Workshop REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 1 M32C Series C Compiler Package V 5 42 C Compiler 1 In
169. e of the following declarations in pragma INTERRUPT pragma ALMHANDLER pragma INTHANDLER pragma HANDLER pragma CYCHANDLER pragma TASK Example extern int int_counter pragma INTERRUPT B i func void i_func void int_counter 1 Figure B 77 Example of pragma INTERRUPT Declaration Note To use the startup file included with the product alter the content of the vector section before use For details on how to alter it refer to Preparing the Startup Program REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 155 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma PARAMETER Declare assembler function that passed arguments via register Function Declares an assembler function that passes parameters via registers Syntax pragma PARAMETERA C Aassembler function name register name register name Description This extended function declares that when calling an assembler function its parameters are passed via registers float types long types 32 bit registers R2RO and R3R1 far pointer types 24 bit registers R2RO R3R1 Al and AO near pointer types 16 bit registers AO A1 RO R1 R2 and R3 char types and _Bool types 8 bit registers ROL ROH R1L and R1H Register names are NOT case sensitive The long long type 64 bit integer type and double type as well as structure and union types cannot be declared Further
170. e procedure of the called function o Register use in called function neither RO nor use to return value REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 217 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library Appendix E Standard Library E 1 Standard Header Files When using the NC3808 standard library you must include the header file that defines that function This appendix details the functions and specifications of the standard NC808 header files E 1 1 Contents of Standard Header Files NC308 includes the 15 standard header files shown in Table E 1 Table E 1 List of Standard Header Files Header File Name Contents assert h Outputs the program s diagnostic information ctype h Declares character determination function as macro errno h Defines an error number float h Defines various limit values concerning the internal representation of floating points limits h Defines various limit values concerning the internal processing of compiler locale h Defines declares macros and functions that manipulate program localization math h Declares arithmetic logic functions for internal processing setjmp h Defines the structures used in branch functions signal h Defines declares necessary for processing asynchronous interrupts stdarg h Defines declares the functions which have a variable number of real arguments stddef h Defines the macro names which are shared among stan
171. e register variables are used without being initialized Make sure the register variables are assigned the appropriate value No storage class amp data type in declare global storage class amp int type assumed The variable is declared without storage class and type specifiers It will be handled as int when processed Write the storage class and type specifiers non initialized variable variable name is used It is probable that uninitialized variables are being referenced Check the statement description This warning can occur in the last line of the function In such a case check the description of the auto variables etc in the function If the description is correct ignore this warning non prototyped function used A function is called that is not declared of the prototype This message is output only when you specified the Wnon_prototype option Write prototype declaration Or delete the option Wnon_prototype non prototyped function declared A prototype declaration for the defined function cannot be found Displayed only when the Wnon_prototype option is specified Write a prototype declaration octal constant is out of range The octal constant contains some character that cannot be used in octal notation Use numerals 0 to 7 to describe octal constants octal_character is out of range The octal constant contains some character that cannot be used in octal notation
172. e right side expression of the operator invalid unary operands e Use of the unary operator is illegal Check the right side expression of the operator invalid unary operands e Use of the unary operator is illegal Check the right side expression of the operator invalid void type e The void type specifier is used with long or singed Write the type specifier correctly invalid void type int assumed e The void type variable cannot be declared Processing will be continued by assuming it to be the int type Write the type specifier correctly invalid size of bitfield e Get the bitfield size Not write bitfield on this decraration REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 329 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 16 ccom808Error message 10 13 Error message Description and countermeasure invalid switch statement Can not specifies bit fields of long long type e The switch statement is illegal gt Write it correctly label label redefine e The same label is defined twice within one function Change the name for either of the two labels long long type s bitfield e Specifies bitfield by long long type gt e mismatch prototyped parameter type The argument type is not the type declared in prototype declaration Check the argument type No pragma ENDASM ey pragma ASM does not have matching pragma ENDASM Write pragma ENDASM No
173. e smp c shown in Figure 1 7 is compiled assembled and linked See the AS308 User Manual for the relocatable object files extension r30 print files extension Ist and map files extension map output by as308 and 1n308 C language source file cpp308 nc308 command o D C source file from preprocesser nc308 command option Assembly language source file Relocatable object file A output file of nc308 Figure 1 6 Relationship of nc308 Command Line Options and Output Files Absolute module file REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 8 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 include lt stdio h gt define CLR 0 define PRN 1 void main void int flag flag CLR ifdef PRN printf flag d n flag endif Figure 1 7 Example C Source File sample c 1 5 2 Preprocessed C Source Files The cpp308 processes preprocess commands starting with Such operations include header file contents macro expansion and judgements on conditional compiling The C source files output by the preprocessor include the results of cpp308 processing of the C source files Therefore do not contain preprocess lines other than pragma and line You can refer to these files to check the contents of programs processed by the compiler The file extension is 1 Figure 1 8 and Figure 1 9 are examples of file output
174. earches for the characters shown in c in the amount of memory specified in n starting at the address specified in s When you specify options O 8 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 268 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library memcmp Memory Handling Functions Function Compares memory areas n bytes Format include lt string h gt int memcmp s1 s2 n Method function Argument const void _far s1 Pointer to the first memory area to be compared const void _far s2 Pointer to the second memory area to be compared size_t n Number of bytes to be compared ReturnValue Return Value 0 The two memory areas are equal Return Value gt 0 The first memory area s1 is greater than the other Return Value lt 0 The second memory area s2 is greater than the other Description Compares each of n bytes of two memory areas When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization memcpy Memory Handling Functions Function Copies n bytes of memory Format include lt string h gt void _far memcpy s1 s2 n Method macro default or function Argument void _far s1 Pointer to the memory area to be copied to const void _far s2 Pointer to the me
175. ects another functions with good code efficiency by optimization memmove Memory Handling Functions Function Moves the area of a character string Format include lt string h gt void _far memmove s1 s2 n Method function Argument void _far s1 Pointer to be moved to const void _far s2 Pointer to be moved from size_t n Number of bytes to be moved ReturnValue Returns a pointer to the destination of movement Description When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 270 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library memset Memory Handling Functions Function Set a memory area Format include lt string h gt void _far memset s c n Method macro or function Argument void _far s Pointer to the memory area to be set at int c Data to be set size_t n Number of bytes to be set ReturnValue Returns the pointer to the memory area which has been set Description Usually the program code described by macro is used for this function In using the function in a library please describe it as undef memset after description of include lt string h gt Sets n bytes of data c in memory s When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code effic
176. ed as done by using asm functions regardless of the compiler s version and of whether optimizing options are used or not When you describe like the following examples as C language description to a SFR area in this compiler may generate the assembler code which carries out operation which is not assumed since the interrupt request bit is not normal REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 46 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique pragma ADDRESS TAOIC 006Ch M16C 80 MCU s Timer AO interrupt control register struct char ILVL 3 char IR 1 An interrupt request bit char dmy 4 TAOIC void wait_until_IR_is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 Figure 3 1 C language description to SFR area 3 1 3 About Optimization a Regular optimization The following are always optimized regardless of whether optimization options are specified or not 1 Meaningless variable access For example the variable port shown below does not use the readout results so that readout operations are deleted extern int port void func void port Figure 3 2 Example of a Meaningless Variable Access Optimized Although the intended operation in this example is only to read out port the readout code actually is not optimized before being output To suppr
177. ed using a 1 byte Japanese characters require 2 bytes NC308 allows such 2 bytes characters to be used in character strings character constants and comments The following character types can be included kanji hiragana e full size katakana J half size katakana Only the following kanji code systems can be used for Japanese characters in NC308 J EUC excluding user defined characters made up of 3 bytes code e Shift JIS SJIS B 3 2 Settings Required for Using Japanese Characters The following environment variables must be set in order to use kanji codes default specifies J Environment variable specifying input code system cc00 NCKIN J Environment variable specifying output code system NCKOUT Figure B 40 is an example of setting the environment variables Include the following in your autoexec bat file set NCKIN SJIS set NCKOUT SJIS Figure B 40 Example Setting of Environment Variables NCKIN and NCKOUT In NC308 the input kanji codes are processed by the cpp308 preprocessor cpp308 changes the codes to EUC codes In the last stage of token analysis in the ccom308 compiler the EUC codes are then converted for output as specified in the environment variable REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 124 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 3 3 Japanese Characters in Character Strings Figure B 41 shows the format for includin
178. ede the character constant with L and process it as a wchar_t type If as in you use two or more characters as the character constant only the first character becomes the character constant Figure B 45 shows examples of how to write Japanese character constants include lt stdlib h gt void func void wehar t JC 5 JC O L X Joi L JC 2 L JC 3 L Bt remainder omitted Figure B 45 Format of Kanji Character Constant Description Figure B 46 is a memory map of the array to which the character constant in Figure B 45 has been assigned JC O JCf1 JC 2 JOS JCi4 address higher Figure B 46 Memory Location of wchar_t Type Character Constant Assigned Array REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 126 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 4 Default Argument Declaration of Function NC308 allows you to define default values for the arguments of functions in the same way as with the C facility This chapter describes NC308 s facility to declare the default arguments of functions B 4 1 Overview of Default Argument Declaration of Function NC308 allows you to use implicit arguments by assigning parameter default values when declaring a function s prototype By using this facility you can save the time and labor that would otherwise be required for writing frequently used values when calling a functio
179. ee ee ee ee ee ee ee ee ee Notes Use of the option Osp_adjust helps to reduce the ROM capacity and at the same time to speed up the processing However the amount of stack used may increase REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 79 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Ostatic_to_inline OSTI A static function is treated as an inline function Function A static function is treated as an inline function and the assembling code which carried out inline deployment is generated Supplement When the following conditions are fulfilled a static function is treated as an inline function and the assembling code which carried out inline deployment is generated 1 Substance is described before the function call It is aimed at a static function A function call and the body of that function must be written in the same source file e When you specify Oforward_function_to_inline option ignore this condition 2 When address acquisition is omitted in the program to the static function 3 When the recursive call of the static function has not been carried out 4 When construction of a frame reservation of an auto variable etc is not performed in the assembling code output of a compiler J The situation of the existence of frame construction changes with combined use with the contents of description of the target function and another optimization option J When you spe
180. efine Delimit multiple identifiers with spaces Syntax nc308A Didentifierl constant A lt C source file gt constant is optional Notes The number of identifiers that can be defined may be limited by the maximum number of characters that can be specified on the command line of the operating system of the host machine dsource dS Comment option Function Generates an assembly language source file extension a30 with a C language source list output as a comment Not deleted even after assembling Supplement 1 When the S option is used the option dsouce dS is automatically enabled 2 The generated files 230 and r30 are not deleted Use this option when you want to output C language source lists to the assembly list file dsource_in_list dSL List File option Function In addition to the dsource dS function generates an assembly language list file filename extension Ist REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 62 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference E Compile driver control Function Invokes only preprocess commands and outputs results to standard output Notes When this option is specified no assembly source file extensions a30 re locatable object files extension r30 absolute module files extension x30 or other files output by ccom308 as308 or 1n308 are generated ldirectory Compile driver control Function Specif
181. efine overflowed Reduce the number of token characters 45 illegal undef command usage e Error in undef Correct the source file 46 undef id not found e The following macro names to be undefined in undef were not defined FILE_ LINE DATE _ __TIME Check the macro name 52 illegal ifdef ifndef command e Error in ifdef usage Correct the source file 53 elseif else sequence erro e elseif or Helse were used without if ifdef ifndef Use elseif or else only after if Hifdef ifndef 54 endif not exist e No endif to match if ifdef ifndef Add endif to the source file 55 endif sequence error e endif was used without if Hifdef ifndef Use endif only after if Hifdef ifndef 61 illegal line command usage e Error in line gt Correct the source file 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages F 4 cpp308 Warning Messages Table E6 shows the warning messages output by cpp308 and their countermeasures Table F 6 cpp308 Warning Messages No Warning Messages Description and countermeasure 81 reserved id used e You attempted to define or undefine one of the following macro names reserved by cpp308 FILE_ LINE DATE TIME Use a different macro name 82 assertion warning e The result of an assert operation expression was 0 Check the operation expression 83 garbage argument e Characters ot
182. efined 4 The external variable declared by pragma MONITORIn cannot be used in combination with other extended pragma directives However if pragma SBDATA and pragma MONITORIn are specified at the same time pragma SBDATA has priority At this time no warnings are output Note 1 pragma MONITORIn does not affect the op codes generated by the compiler Please pay attention to the near far attributes of variables 2 Even if external variables with different near far attributes coexist in a section used exclusively for the RAM monitor area no errors and warnings are assumed Please pay attention to the near far attributes of variables 3 The sections used exclusively for the RAM monitor area are not subject to size limitations 4 The location address of the section allocated by pragma MONITORIn and a process to set the initial value for the external variable should be written in the startup program 5 If pragma MONITORIn is declared a number times for one and the same external variable the pragma MONITORIn declared first is effective 6 Ifthe compile option fno_evenI fNE is specified the external variable is located in a section with odd size attribute e g data MON1_0 7 The external variables declared by pragma MONITORIn are not affected by pragma SECTION 8 The declaration of pragma MONITORIn has no effect if w in it is other than 1 4 If the compile option Wunknown_pragmal WUP or Wall is s
183. ehicular medical aerospace nuclear or undersea repeater use 1 3 1 Notes about Version up of compiler The machine language instructions assembly language generated by NC308 vary in contents depending on the startup options specified when compiling contents of version up etc Therefore when you have changed the startup options or upgraded the compiler version be sure to reevaluate the operation of your application program Furthermore when the same RAM data is referenced and its contents changed between interrupt handling and non interrupt handling routines or between tasks under realtime OS always be sure to use exclusive control such as volatile specification Also use exclusive control for bit field structures which have different member names but are mapped into the same RAM 1 3 2 Notes about the M16C s Type Dependent Part When writing to or reading a register in the SFR area it may sometimes be necessary to use a specific instruction Because this specific instruction varies with each type of MCU consult the user s manual of your MCU for details In this case write the instruction directly in the program using the ASM function In this compiler the instructions which cannot be used may be generated for writing and read out to the register of SFR area When accessing registers in the SFR area in C language make sure that the same correct instructions are generated as done by using asm functions regardless of the compiler s
184. en fNE Modify generated code Function When outputting data does not separate odd and even data That is all data is mapped to the odd sections data_NO data_FO data_INO data_IFO bss_NO bss_FO rom_NO rom_FO Supplement By default the odd size and the even size data are output to separate sections Take a look at the example below char C int i In this case variable c and variable i are output to separate sections This is because the even size variable i is located at an even address This allows for fast access when accessing in 16 bit bus width Use this option only when you are using the compiler in 8 bit bus width and when you want to reduce the number of sections Notes When pragma SECTION is used to change the name of a section data is mapped to the newly named section fno_switch_table INST Modify generated code Function When this option is specified the code which branches since it compares is generated to a switch statement Supplement Only when code size becomes smaller when not specifying this option the code which used the jump table is generated Notes For such a large function whose code size is larger than 32 Kbytes if code which contains a jump table for a switch statement is generated the program may not be branched to an appropriate address In that case be sure to specify this option Please note that when a code which cannot be branched properly because of no
185. ent of Union REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 201 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 1 8 Bitfield Types Bitfield types are mapped from the least significant bit Figure D 7 is an example of mapping Example bit7 bito strut BTAG sor st6 sts sb st CALIE char b0 1 char b1 1 char b2 1 char b3 1 char b4 1 char b5 1 char b6 1 char b7 1 s Figure D 7 Example of Placement of Bitfield 1 If a bitfield member is of a different data type it is mapped to the next address Thus members of the same data type are mapped contiguously from the lowest address to which that data type is mapped Example struct BTAG 1 byte char b0 1 char b1 1 2 bytes char b2 1 char b3 1 char b4 1 int b56 2 char b7 1 s Figure D 8 Example of Placement of Bitfield 2 e Note 1 Tfno sign is specified the default bitfield member type is unsigned 2 Cannot specifies bit fields of long long type REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 202 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 2 Sign Extension Rules Under the ANSI and other standard C language specifications char type data is sign extended to int type data for calculations etc This specification prevents the maximum value for char types being exceeded with unexpected results when performing the char type
186. er function to return a value Table 3 2 Calling Rules for Return Values Return value type Rules _Bool ROL register char int RO register near pointer float Least significant 16 bits returned by storing in RO register Most significant 16 long bits returned by storing in R2 register far pointer double Values are stored in 16 bits beginning with the high order bits sequentially in long double order of registers R3 R2 R1 and RO as they are returned long long Values are stored in 16 bits beginning with the high order bits sequentially in order of registers R3 R1 R2 and RO as they are returned Structure Immediately before the function call save the far address for the area for storing Union the return value to the stack Before execution returns from the called function that function writes the return value to the area indicated by the far address saved to the stack section program glib _asm_func _asm_func omitted movi 01A000H R2RO rts END Figure 3 17 Example of Coding Assembler Function to Return long type Return Value c Referencing C Variables Because assembler functions are written in different files from the C program only the C global variables can be referenced When including the names of C variables in an assembler function precede them with an underscore _ Also in assembler language programs external variables must be declared using the assemble
187. er string to make up the number specified in n When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strnicmp String Handling Functions Function Compares character strings n characters All alphabets are handled as uppercase letters Format include lt string h gt int strnicmp s1 s2 n Method function Argument char _far s1 Pointer to the first character string to be compared char _far s2 Pointer to the second character string to be compared size_t n Number of characters to be compared ReturnValue ReturnValue The two character strings are equal ReturnValue gt 0 The first character string s1 is greater than the other ReturnValue lt 0 The second character string s2 is greater than the other Description Compares each byte of n characters of two character strings ending with NULL However all letters are treated as uppercase letters When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strpbrk String Handling Functions Function Searches the specified character in a character string from the other character string Format include lt string h gt char _far strpbrk s1 s2 Method function Argument
188. erator invalid gt gt operands The gt gt operation contains an error Check the expressions on the left and right sides of the operator invalid gt gt operands The gt gt operation contains an error Check the expressions on the left and right sides of the operator invalid operands The left side expression of is not array type or pointer type Use an array or pointer type to write the left side expression of invalid operands The operation contains an error Check the expressions on the left and right sides of the operator REJ10J2057 0200 Rev 2 00 2010 04 01 326 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 13 ccom308Error message 7 13 Error message Description and countermeasure invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The unary operator or postfix operator contains an error For the unary operator check the right side expression For the postfix operator check the leftside expression invalid operands U Th
189. ernally declare the interrupt processing function in the GLB as308 pseudo instruction The labels of functions created by NC308 are preceded by the underscore _ Therefore the names of interrupt processing functions declared here should also be preceded by the underscore 2 Replace the names of the interrupt processing functions with the names of interrupt processing functions that use the dummy interrupt function name dummy_int corresponding to the appropriate interrupt table in the vector address table Figure 2 28 is an example of registering the UART1 send interrupt processing function uarttrn word dummy_int uartO receive for user glo _uarttrn lt Process 1 above word _uarttrn uart1 trance for user lt Process 2 above omitted Figure 2 28 Example Setting of Interrupt Vector Addresses REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 45 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique Chapter 3 Programming Technique This chapter describes precautions to be observed when programming with the C compiler NC308 3 1 Notes Renesas Electronics Corp are not designed or manufactured for use in a device or system that is used under circumstances in which human life is potentially at stake Please contact Renesas Electronics Corp Renesas Solutions Corp or an authorized Renesas Semiconductor product distributor when considering the use of a product contained herein for any specific
190. erts a character string into a double type floating point number Format include lt stdlib h gt double atof s Method function Variable const char _far s Pointer to the converted character string ReturnValue Returns the value derived by converting a character string into a double precision floating point number atoi Function Converts a character string into an int type integer Format include lt stdlib h gt int atoi s Method function Variable const char _far s Pointer to the converted character string ReturnValue Returns the value derived by converting a character string into an int type integer REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 237 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library atol Function Converts a character string into a long type integer Format include lt stdlib h gt long atoll s Method function Variable const char _ far s Pointer to the converted character string ReturnValue Returns the value derived by converting a character string into an long type integer REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 238 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library bcopy Memory Handling Functions Function Copies characters from a memory area to another Format include lt string h gt void beopy sre dtop size Method function Variable char _far src Start address of the memory area to be copied from char _far dtop
191. es defined outside the function 4 pragma BITADDRESS is valid for previously declared variables 5 pragma BITADDRESS is invalid if you specify other than a variable 6 No error occurs if a pragma BITADDRESS declaration is duplicated but the last declared address is valid 7 An error occurs if you include an initialization expression Normally pragma BITADDRESS operates on I O variables so that even though volatile may not actually be specified the compiler processes them assuming volatile is specified Example pragma BITADDRESS io 1 100H _Bool io void func void io 1 Figure B 72 pragma BITADDRESS Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 149 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma DMAC Specifies the DMAC register of a external variable Function The DMAC register inside CPU is assigned to the specified external variable Syntax pragma DMACAvariable nameADMAC Register Name Rules 1 You have to declare the variable specified to be pragma DMAC before description of pragma DMAC 2 It can be specified as pragma DMAC pragma DMAC register name and the type of a variable are as follows 16 bit s Register 24 bit s Register Register Name DMDO DMAO DMD1 DMA1 DCTO DSAO DCT1 DSA1 DRCO DRAO DRC1 DRA1 Variable Type unsigned int To arbitrary models far pointer unsigned short However the pointer
192. ess optimization add the volatile qualifier as shown in Figure 3 2 extern int volatile port void func void port Figure 3 3 Example of a Meaningless Variable Access Optimization Suppressed REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 47 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique 2 Meaningless comparison int func char c int i if c 1 else return i Figure 3 4 eaningless Comparison Tn the case of this example because the variable c is written as char the compiler treats it as the unsigned char type Since the range of values re presentable by the unsigned char type is 0 to 255 the variable c will never take on the value 1 Accordingly if there is any statement which logically has no effect like this example the compiler does not generate assembler code 3 Programs not executed No assembler codes are generated for programs which logically are not executed void func int i func2 i return i 10 lt Fragment not executed Figure 3 5 Program Not Executed 4 Operation between constants Operation between constants is performed when compiling void func int i int i 1 2 Operation on this part is performed when compiling return i Figure 3 6 Program Not Executed REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 48 M32C Series C Compiler Package V 5 42 C Compiler 3 Program
193. essed assuming an extension lib 2 Ifyou specify a file extension be sure to specify lib 3 NC308 links the library Nc308lib lib in the directory specified by environment variable LIB308 by default When the compiler option M82 is specified nc382lib lib is linked and when the compiler option M90 is specified nc390lib lib is linked 4 If multiple libraries are specified references to nc308lib lib are assigned the lowest priority REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 92 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 8 Warning Options Table A 10 shows the command line options for outputting warning messages for contraventions of nc308 language specifications Table A 10 Warning Options Option Short form Function Wall None Displays message for all detectable warnings however not including alarms output by Wlarge_to_small and Wno_used_argument Wccom_max_warnings WCMW This option allows you to specify an upper limit for Warning Count the number of warnings output by ccom308 Werror_file lt fi e name gt WEF Outputs error messages to the specified file Wlarge_to_small WLTS Outputs a warning about the tacit transfer of variables in descending sequence of size Wmake_tagfile WMT Outputs error messages to the tag file of source file by source file Wnesting_ comment WN
194. essing Flow 2 1 2 1 nc308 3 1 2 2 cpp308 3 1 2 3 ccom308 3 1 2 4 aopt308 3 1 2 5 utl308 3 1 2 6 Call Walker amp gensni 3 1 2 7 MapViewer 3 1 3 Notes 5 1 3 1 Notes about Version up of compiler 5 1 3 2 Notes about the M16C s Type Dependent Part 5 1 4 Example Program Development 6 1 5 NC308 Output Files 8 1 5 1 Introduction to Output Files 8 1 5 2 Preprocessed C Source Files 9 1 5 3 Assembly Language Source Files 11 Chapter 2 Basic Method for Using the Compiler 14 2 1 Starting Up the Compiler 14 2 1 1 nc308 Command Format 14 2 1 2 Command File 15 2 1 8 Notes on NC308 Command Line Options 16 2 1 4 nc308 Command Line Options 17 2 2 Preparing the Startup Program 23 2 2 1 Sample of Startup Program 23 2 2 2 Customizing the Startup Program 29 2 2 3 Customizing for NC308 Memory Mapping 33 Chapter 3 Programming Technique 46 3 1 Notes 46 3 1 1 Notes about Version up of compiler 46 3 1 2 Notes about the M82C s Type Dependent Part 46 3 1 3 About Optimization 47 3 1 4 Precautions on Using register Variables 49 3 1 5 About Startup Handling 49 3 2 For Greater Code Efficiency 50 3 2 1 Programming Techniques for Greater Code Efficiency 50 3 2 2 Speeding Up Startup Processing 52 3 3 Linking Assembly Language Programs with C Programs 53 3 3 1 Calling Assembler Functions from C Programs 53 3 3 2 Writing Assembler Functions 55 3 3 3 Notes on Coding Assembler Functions 58 3 4 Other 59 3 4 1 Precautions on Transporting between NC Series Compilers 59
195. f array 2tENESAS Table F 27 ccom308 Waming Messages 8 9 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Waming message Description and countermeasure struct or union member s address can t has no near far information near or far is used as arrangement position information of members variables of a struct or union Do not specify near and far for members task function called The function specified by pragma TASK is called Be careful not to call a task function task function can t return value eu ey y The function specified by pragma TASK is using a return value The function specified by pragma TASK cannot use return values Delete the return value task function has invalid argument y The function specified with pragma TASK uses arguments Any function specified with pragma TASK cannot use arguments Delete the arguments this comparison is always false Comparison is made that always results in false Check the conditional expression this comparison is always true Comparison is made that always results in true Check the conditional expression this feature not supported now ignored ei e iy This is a syntax error Do not this syntax because t is reserved for extended use in the future Write the description correctly this function used before with non default argument A function once used is declared as
196. f source file by source file Wnesting_ comment WNC Outputs a warning for a comment including Wno_stop WNS Prevents the compiler stopping when an error occurs Wno_used_argument WNUA Outputs a warning for unused argument of functions Wno_used_function WNUF Displays unused global functions when linking Wno_used_static_function WNUSF For one of the following reasons a static function name is output that does not require code generation Wno_warning_stdlib WNWS Specifying this option while Wnon_prototype or Wall is specified inhibits Alarm for standard libraries which do not have prototype declaration Wnon_prototype WNP Outputs warning messages for functions without prototype declarations Wstdout None Outputs error messages to the host machine s standard output stdout Wstop_at_link WSAL Stops linking the source files if a warning occurs during linking to suppress generation of absolute module files Also a return value 10 is returned to the host OS Wstop_at_warning WSAW Stops compiling the source files if a warning occurs during compiling and returns the compiler end code 10 Wundefined_macro WUM Warns you that undefined macros are used in if Wuninitialize_variable WUV Outputs a warning about auto variables that have not been initialized Wunknown_pragma WUP Outputs warning messages for non supported pragma i Assemble and Link Options Table 2 10 shows the command li
197. far area Therefore do not write a near declaration for functions If a function is declared to take on a near attribute NC308 outputss a warning and contin ues processing by assuming the attribute of that function is far Figure B 12 shows a dis7play example where a function is declared to be near nc308 S smp c M32C Series Compiler V X XX Release XX Copyright C XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All rights reserved smp c Warning ccom smp c line 3 function must be far gt func Figure B 12 Example Declaration of Function B 1 9 Function for Specifying near and far in Multiple Declarations As shown in Figure B 18 if there are multiple declarations of the same variable the type information for the variable is interpreted as indicating a combined type extern int far idata int idata int idata 10 void func void remainder omitted This Declaration is interpreted as the following externint far idata 10 void func void remainder omitted Figure B 13 Integrated Function of Variable Declaration As shown in this example if there are many declarations the type can be declared by specifying near or far in one of those declarations However an error occurs if there is any contention between near and far specifications in two or more of those declarations You can ensure consistency among source files by declaring near or
198. field name Figure B 29 Format for Specifying Symbol Names REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 117 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference You can specify one variable name using this format See Figure B 30 for an example struct TAG char bitO 1 char bit1 1 char bit2 1 char bit3 1 s void func void asm bset b s bit1 Figure B 30 Example of Specifying Symbol Bit Position Figure B 31 shows the results of compiling the C source file shown in Figure B 30 Ht FUNCTION func 3 ARG Size 0 Auto Size 0 Context Size 4 section program CODE ALIGN _file kk c align _line 10 HH C_SRC glo _ func _ func line 11 4 C_SRC asm bset b s bit1 HHH ASM START bset 1s Reference to bitfield bitO of structure s HHH ASM END line 12 HH C_SRC rts E1 section bss NO DATA glb S S bikb 1 END Figure B 31 Example of Referencing Bit Field of Symbol When referencing the bit fields of extern or static variables you must confirm that they are located within the range that can be referenced directly using bit operation instructions within 0000H and 1FFFH REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 118 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 2 5 Specification Not Dependent on Storage Class The variables written in C language can be used in the asm function wit
199. fined instead e NC308 C 3 4 Usage of predefined Macros The predefined macros are used to for example use preprocess commands to switch machine dependent code in non NC308 C programs ifdef NC308 pragma ADDRESS port0 2H pragma ADDRESS porti 3H else pragma AD _ portA 0x5F pragma AD porA 0x60 endif Figure C 14 Usage Example of Predefined Macros REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 197 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules Appendix D C Language Specification Rules This appendix describes the internal structure and mapping of data processed by NC308 the extended rules for signs in operations etc and the rules for calling functions and the values returned by functions D 1 Internal Representation of Data D 1 1 Integral Type Table D 1 shows the number of bytes used by integral type data Table D 1 Data Size of Integral Type Type Existence of sign Bit size Range of values _Bool No 8 0 1 char No 8 0 to 255 unsigned char signed char Yes 8 128 to 127 int Yes 16 32768 to 32767 short signed int signed short unsigned int No 16 0 to 65535 unsigned short long Yes 32 2147483648 to 2147483647 signed long unsigned long No 32 0 to 4294967295 long long Yes 64 9223372036854775808 to signed long long 92 23372036854775807 unsigned long long No 64 18446744073709551615 float Yes 32 1 17549435e 38F to
200. fining the structure members Examples pragma STRUCT TAG unpack struct TAG int i char C s1 Figure B 69 Example of pragma STRUCT Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 144 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma MONITORJIn n 1 4 Directive to specify the location of the RAM monitor area Description Declares that the specified external variable be located in a section used exclusively for the RAM monitor area Syntax pragma MONITORIn external variable name n 1 4 Rules 1 Only external variables and external static variables can be specified 2 The area for the external variable declared by pragma MONITORIn is allocated to one of the sections listed below data_MONIn _E External variables in even size that have initial values are located here data_MONIn _O External variables in odd size that have initial values are located here bss MONIn _E External variables in even size that do not have initial values are located here bss MONIn _O External variables in odd size that do not have initial values are located here data_MONIn _EI Initial values of external variables in even size that have initial values are located here data_MONIn _OI Initial values of external variables in odd size that have initial values are located here 3 The declaration of pragma MONITORIn must be made before the external variable is d
201. forms to the AS308 language specifications is included between the double quote marks pragma ADDRESS ta0_int 55H char taO_ int void func void abbreviated taO int 0x07 Permits timer AO interrupt asm FSET l Set interrupt enable flag Figure B 16 Example of Description of asm Function 1 Compiler optimization based on the positional relationship of the statements can be partially suppressed using the code shown in Figure B 17 asm Figure B 17 Example of Coding asm Function 2 The asm function used in NC308 not only allows you to include assembly language code but also has the following extended functions o Specifying the FB offset of storage class auto variables in the C program using the names of the variables in C e Specifying the register name of storage class register variables in the C program using the names of the variables in C Specifying the symbol name of storage class extern and static variables in the C program using the names of the variables in C The following shows precautions to be observed when using the asm function o Do not destroy register contents in the asm function The compiler does not check the inside of the asm function If registers are going to be destroyed write push and pop instructions using the asm function to save and restore the registers l ae the eae of expression in this user s manual the subroutines written in n the a
202. free Frees the allocated memory area labs Calculates the absolute value of a long type integer ldiv Divides a long type integer and calculates the remainder malloc Allocates a memory area mblen Calculates the length of a multibyte character string mbstowcs Converts a multibyte character string into a wide character string mbtowc Converts a multibyte character into a wide character qsort Sorts elements in an array realloc Changes the size of an allocated memory area strtod Converts a character string into a double type integer strtol Converts a character string into a long type integer strtoul Converts a character string into an unsigned long type integer westombs Converts a wide character string into a multibyte character string wctomb Converts a wide character into a multibyte character REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 226 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library ee Function Declares the prototypes of string handling functions and memory handling functions Type Type Contents Copy strcpy Copies a character string strncpy Copies a character string n characters Concatenate streat Concatenates character strings strncat Concatenates character strings n characters Compare stremp Compares character strings strcoll Compares character strings using locale information stricmp C
203. g Japanese characters in character strings LY RFR Figure B 41 Format of Kanji code Description in Character Strings Tf you write Japanese using the format L F 7 5F 11 as with normal character strings it is processed as a pointer type to a char type when manipulating the character string You therefore cannot manipulate them as 2 bytes characters To process the Japanese as 2 bytes characters precede the character string with L and process it as a pointer type to a wchar_t type wchar_t types are defined typedef as unsigned short types in the standard header file stdlib h Figure B 42 shows an example of a Japanese character string include lt stdlib h gt void func void wehart JC 4J L FSI lt 1 remainder omitted Figure B 42 Example of Japanese Character Strings Description Figure B 43 is a memory map of the character string initialized in 1 inFigure B 42 JC O JC 1 8bytes JC 2 JC 3 address higher Figure B 43 Memory Location of wchar_t Type Character Strings REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 125 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 3 4 sing Japanese Characters as Character Constants Figure B 44 shows the format for using Japanese characters as character constants gk Figure B 44 Format of Kanji code Description in Character Strings As with character strings prec
204. g degradation or any other appropriate measures Because the evaluation of microcomputer software alone is very difficult please evaluate the safety of the final products or system manufactured by you Please contact a Renesas Electronics sales office for details as to environmental matters such as the environmental compatibility of each Renesas Electronics product Please use Renesas Electronics products in compliance with all applicable laws and regulations that regulate the inclusion or use of controlled substances including without limitation the EU RoHS Directive Renesas Electronics assumes no liability for damages or losses occurring as a result of your noncompliance with applicable laws and regulations This document may not be reproduced or duplicated in any form in whole or in part without prior written consent of Renesas Electronics Please contact a Renesas Electronics sales office if you have any questions regarding the information contained in this document or Renesas Electronics products or if you have any other inquiries Note 1 Renesas Electronics as used in this document means Renesas Electronics Corporation and also includes its majority owned subsidiaries Note 2 Renesas Electronics product s means any product developed or manufactured by or for Renesas Electronics M32C Series C Compiler Package V 5 42 C Compiler Contents Chapter 1 Introduction to NC308 1 1 1 NC308 Components 1 12 NC308 Proc
205. ge V 5 42 C Compiler C Overview of C Language Specifications 1 Integer constants In addition to decimals you can also specify octal and hexadecimal integer constants TableC 6 shows the format of each base decimal octal and hexadecimal TableC 6 Specifying Integer Constants Base Notation Structure Example Decimal None 0123456789 15 Octal Start with 0 zero 01234567 017 Hexadecimal Start with OX or Ox 0123456789ABCDEF OXF or Oxf 0123456789abcdef Binary number Start with OB or Ob 01 OB1 or 0b1 Determine the type of the integer constant in the following order according to the value Octal and hexadecimal and Binary number signed int gt unsigned int gt signed long gt unsigned long gt signed long long gt unsigned long long Decimal signed int gt signed long gt signed long long Adding the suffix U or u or Lor 1 or LL or I results in the integer constant being processed as follows 1 Unsigned constants Specify unsigned constants by appending the letter U or u after the value The type is determined from the value in the following order d unsigned int gt unsigned long gt unsigned long long 2 long type constants Specify long type constants by appending the letter L or 1 The type is determined from the value in the following order e Octal and hexadecimal and Binary number signed long gt unsigned long gt signed long long gt unsigned long long e Decimal signed long gt
206. gister int i 1 Variable i is a register variable asm mov w A1 i Assembly language source file compile result FUNCTION func 4 ARG Size 0 Auto Size 0 Context Size 4 section program CODE ALIGN _file reg c align _line3 C_SRC glb _func _func line 4 4 C_SRC register int i 1 mov w 0001H RO i _line6 H C_SRC asm mov w A1 i JHHHEASM START mov w RO A1 RO register is transferred to A1 register HHH ASM END Figure B 25 An Example for Referencing a Register Variable and its Compile Result In NC308 register variables used within functions are managed dynamically At anyone position the register used for a register variable is not necessarily always the same one Therefore if a register is specified directly in an asm function it may after compiling operate differently We therefore strongly suggest using this function to check the register variables 115 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 2 4 Specifying Symbol Name of extern and static Variable extern and static storage class variables written in C are referenced as symbols You can use the format shown in Figure B 26 to use extern and static variables in asm functions asm op code R1 variable name Figure B 26 Description Format for Specifying Symbol Name Only two variable name can be specified by using this description for
207. gma SECTION uses interrupt A section name interrupt cannot be used Change it to another size of incomplete type An undefined structure or union is used in the operand of the size of operator Define the structure or union first The number of elements of an array defined as an operand of the size of operator is unknown Define the structure or union first size of incomplete array type An attempt is made to find size of of an array of unknown size This is an invalid size Specify the size of the array size of void An attempt is made to find the size of void This is an invalid size The size of void cannot be found standard library function name need include file name This standard library function is used without its header file included Be sure to include the header file static variable in inline function static data is declared within a function that is declared in storage class inline Do not declare static data in an inline function string size bigger than array size The size of the initialize expression is greater than that of the variable to be initialized Make sure that the size of the initialize expression is equal to or smaller than the variable string terminator not added Since the variable to be initialized and the size of the initialize expression are equal 0 cannot be affixed to the character string Increase a element number o
208. gure C 3 Initial Values Specifiable in Initialization Expressions b Function Declaration Use the format shown in Figure C 4 to declare functions e function declaration definition storage class specifier type declarator declaration specifier main program e function declaration prototype declaration storage class specifier type declarator declaration specifier Figure C 4 Declaration Format of Function 1 Storage class Specifier NC308 supports the following storage class specifier o extern e static J inline REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 185 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications 2 Type Declarators NC808 supports the following type declarators Bool char int short long long long float double unsigned signed struct union enum 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 5 in NC308 Declarator Pointer op declarator2 Declarator2 identifier list of dummy argument opt declarator declarator constant expressiono opi declarator list of dummy argument opt Only the first array can be omitted from constant expressions showing the number of arrays opt indicates optional items The list of dummy arguments is replaced by a list of type declarators in a prototype declaration Figure C 5 Format of Declaration Specifier
209. handled in units of radian REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 283 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library sinh Function Calculates hyperbolic sine Format include lt math h gt double sinh x Method function Argument double x arbitrary real number ReturnValue Returns the hyperbolic sine of given real number x sprintf Input Output Functions Function Writes text with format to a character string Format include lt stdio h gt int sprintf pointer format argument Method function Argument char _far pointer Pointer of the location to be stored const char _far format Pointer of the format specifying character string ReturnValue Returns the number of characters output Description Converts argument to a character string as specified in format and stores them from the pointer Format is specified in the same way as in printf sqrt Function Calculates the square root of a numeric value Format include lt math h gt double sqrt x Method function Argument double x arbitrary real number ReturnValue Returns the square root of given real number x REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 284 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library srand Integer Arithmetic Functions Function Imparts seed to a pseudo random number generating routine Format include lt stdlib h gt void srand seed Method
210. he following meaning The part between and is optional Details of the format are shown below Format flag minimum field width precision modifier I L or h conversion specification character Example format 05 8ld ReturnValue Returns the number of characters output Returns EOF if a hardware error occurs Description Converts argument to a character string as specified in format and outputs the character string to stdout When giving a pointer to argument it is necessary to be a far type pointer 1 Conversion specification symbol e dI Converts the integer in the parameter to a signed decimal d u Converts the integer in the parameter to an unsigned decimal o o Converts the integer in the parameter to an unsigned octal d X Converts the integer in the parameter to an unsigned hexadecimal Lowercase abcdef are equivalent to OAH to OFH e X Converts the integer in the parameter to an unsigned hexadecimal Uppercase ABCDEF are equivalent to OAH to OFH c Outputs the parameter as an ASCII character d s Converts the parameter after the string far pointer char and up to a null character 0 or the precision to a character string Note that wchar_t type character strings cannot be processed p Outputs the parameter pointer all types in the format 24 bits address n Stores the number of characters output in the integer pointer of the parameter The parameter is
211. he C language source file prefixed by _ underbar or dollar The table below lists the character strings that are added to a function name and the conditions under which they are added Table D 7 Conditions Under Which Character Strings Are Added to Function Added character string Condition dollar Functions where any one of arguments is passed via register _ underbar Functions that do not belong to the above Shown in Figure D 10 is a sample program where a function has register arguments and where a function has its arguments passed via only a stack REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 205 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules int func_proto int int int 1 l int func_proto inti int j int k l return i j k lint func no proto Gh 3 int i 1 int j I int k l return i j k l oid main void int sum sum func_proto 1 2 3 sum func_no_proto 1 2 3 1 This is the prototype declaration of function func_proto 2 This is the body of function func_proto Prototype declaration is entered so this is a new format 3 This is the body of function func_no_proto This is a description in K amp R format that is an old format 4 This is the body of function main 5 This calls function func_proto 6 This calls function func_no_proto Figure D 10 Sample Program for
212. her than a comment exist after a preprocess command Specify characters as a comment string after the preprocess command 84 escape sequence out of range for e An escape sequence in a character constant or character character string constant exceeded 255 characters Reduce the escape sequence to within 255 characters 85 redefined e A previously defined macro was redefined with different contents Check the contents against those in the previous definition 87 within comment e Acomment includes Donot nest comments 88 Environment variable NCKIN e Environment variable NCKIN is not valid must be SJIS or EUC gt Set SJIS or EUC to NCKIN 90 Macro name in if is not e An undefined macro name in if is used defined so it s tereated as 0 Check the macro definition REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 320 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages F 5 ccom308 Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 321 Table E7 to Table F19 list the ccom308 compiler error messages and their countermeasures Table F 7 ccom308 Error Messages 1 13 Error message Description and countermeasure pragma PRAGMA name functionname redefined gt The same function is defined twice in pragmaname Make sure that pragma name is declared only once pragma PRAGMA name functionargument is long long or double The arguments used for
213. hose specified by volatile fnot_reserve_asm FNRA Exclude asm from reserved words Only _asm is valid fnot_reserve_far_and_near fNRFAN Exclude far and near from reserved words Only _far and _near are valid fnot_reserve_inline FNRI Exclude far and near from reserved words Only _inline is made a reserved word 2 char type data or signed char type data evaluated under ANSI rules is always extended to inttype data This is because operations on char types c1 c2 2 c3 for example would otherwise result in an overflow and failure to obtain the intended result SS REJ10J2057 0200 Rev 1 00 2010 04 01 20 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler Table 2 7 Generated Code Modification Options 2 2 Option Short form Function fsmall_array fSA When referencing a far type array whose total size is unknown when compiling this option calculates subscripts in 16 bits assuming that the array s total size is within 64 Kbytes fswitch_other_section fSOS This option outputs a ROM table for a switch statement to some other section than a program section fuse_DIV fUD This option changes generated code for divide operation M82 None Generates object code for M32C 80 Series M90 None Generates the code corresponding to the M32C 90 series fsizet_16 fS16 Changes the type definition size_t from type unsigned long to
214. hout relying on the storage class of that variable auto register extern or static variable Consequently any variable written in C language can be used in the asm function by writing it in the format shown in Figure B 322 asm op code RO variable name Figure B 32 Description Format Not Dependent on Variable s Storage Class You can only specify one variable name using this format Figure B 33 shows examples of referencing register variables and the results of compiling e C source file extern int e_val lt extern variable void func void int f_val auto variable register int r_val register variable static int s val static variable asm mov w 1 e_val Reference to external variable asm mov w 2 f _val Reference to auto variable asm mov w 3 r_val Reference to register variable asm mov w 4 s val lt Reference to static variable asm mov w f_val r_val Assembly language source file compile result glb _func _func enter 02H pushm R1 ine 9 H C_SRC asm mov w 1 e_val HHHH ASM START mov w 1 _e val 16 Reference to external variable ine 10 H C_SRC asm mov w 2 f _val mov w 2 2 FB Reference to auto variable ine 11 H C_SRC asm mov w 3 r_val mov w 3 R1 Reference to register variable _line 12 C_SRC asm mov w 4 s_val mov w 4
215. ich performs I O via the Centronics communications circuit 1 Circuit settings J Processor mode Microprocessor mode e Clock frequency 20MHz J External bus size 16 bits 2 Initial serial communications settings Use UART1 J Baud rate 9600bps Data size 8 bits o Parity None e Stop bits 2 bits The initial serial communications settings are made in the init function init c REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 305 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library The level 3 I O functions are written in the C library source file device c Table E 18 lists the specifications of these functions Table E 14 Specifications of Level 3 Functions Input functions Parameters Return value int type _sget None If no error occurs returns the input character Returns EOF if an _sput error occurs _pput Output functions Parameters int type Retum value int type _sput Character to If no error occurs returns 1 _pput output Returns EOF if an error occurs Serial communication is set to UART1 in the M16C 80 series s two UARTs device c is written so that the UARTO can be selected using the conditional compile commands as follows J To use UART cece define UARTO 1 Specify these commands at the beginning of device c or specify following option when compiling To use UART0 ee ccceceeeeeeteenees DUARTO To use both UARTs modify the file as foll
216. iency by optimization modf Mathematical Functions Function Calculates the division of a real number into the mantissa and exponent parts Format include lt math h gt double modf val pd Method function Argument double val arbitrary real number double _far pd Pointer to an area for storing an integer ReturnValue Returns the decimal part of a real number REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library perror Function Outputs an error message to stderr Format include lt stdio h gt void perror s Method function Argument const char _ far s Pointer to a character string attached before a message ReturnValue No value is returned pow Function Calculates the power of a number Format include lt math h gt double pow x y Method function Argument double x multiplicand double y power of a numbe ReturnValue Returns the multiplicand x raised to the power of y REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 272 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library printf Input Output Functions Function Outputs characters with format to stdout Format include lt stdio h gt int printf format argument Method function Argument const char _far format Pointer of the format specifying character string The part after the percent t sign in the character string given in format has t
217. ies the directory name in which to search for files to be referenced by the preprocess command include Max specified 256 directory Supplement An example of specifying two directories dirl and dir2 for the I option is shown below nc308 Idirl Idir2 sample c lt RET gt Indicates the prompt lt RET gt Indicates the Return key Syntax nc308A IdirectoryA lt C source file gt Notes The number of directories that can be defined may be limited by the maximum number of characters that can be specified on the command line of the operating system of the host machine Compile driver control Function Invokes only preprocess commands creates a file extension i and stops processing Notes 1 When this option is specified no assembly source file extensions a30 re locatable module files extension r30 absolute module files extension x30 or other files output by ccom308 as308 or 1n308 are generated 2 The file extension i generated by this option does not include the line command generated by the preprocessor To get a result that includes line try again with the E option REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 63 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference S Compile driver control Function Creates assembly language source files extension a30 and ext and stops processing Notes When this option is specified no relocatable module files extension
218. if the prototype declaration is not performed for any function Supplement Function arguments can be passed via a register by writing a prototype declaration Increased speed and reduced code size can be expected by passing arguments via a register Also the prototype declaration causes the compiler to check function arguments Increased program reliability can be expected from this Therefore Renesas recommends using this option whenever possible REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 97 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Wstdout Warning Options Function Outputs error messages to the host machine s standard output stdout Supplement Use this option to save error output etc to a file by using Redirect in the Microsoft Windows TM Notes In this Compiler for Microsoft Windows TM errors from as308 and 1n308 invoked by the compile driver are output to the standard output regardless of this option Wstop_at_link WSAL Warning Options Function Stops linking the source files if a warning occurs during linking to suppress generation of absolute module files Also a return value 10 is returned to the host OS Wstop_at_warning WSAW Warning Options Function Stops compiling the source files if a warning occurs during compiling and returns the compiler end code 10 Supplement If a warning occurs when compiling the compilation by default is terminated wi
219. if _HEAPSIZE _ 0 HEAPSIZE equ 300h else for HEW HEAPSIZE equ __HEAPSIZE __ endif endif Figure 2 15 Example of Setting Heap Section Size ncrt0 a30 f Setting the interrupt vector table Set the top address of the interrupt vector table to the part of Figure 2 16 in ncrt0 a30 The INTB Register is initialized by the top address of the interrupt vector table VECTOR_ADR equ offfd0Oh SVECTOR ADR equ Offfe00h Figure 2 16 Example of Setting Top Address of Interrupt Vector Table ncrt0 a30 The sample startup program has had values set for the tables listed below OFFFDOOH OFFFDFFH Interrupt vector table OFFFEOOH OFFFFFFH Special page vector table and fixed vector table Normally these set values do not need to be modified REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 32 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler g Setting the Processor Mode Register Set the processor operating mode to match the target system at address 04H Processor mode register in the part of ncrt0 a30 shown in Figure 2 15 omitted movb 00h 04h set processer mode omitted Figure 2 17 Example Setting of Processor Mode Register ncrt0 a30 See the User s Manual of microcomputer you are using for details of the Processor Mode Register 2 2 3 Customizing for NC308 Memory Mapping a Structure of Sections In the case of a native environment compiler
220. igned to registers Integral type variable Pointer variable Notes Because register specification in some cases has an adverse effect that the efficiency decreases be sure to verify the generated assembly language before using this specification REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 84 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fextend_to_int fETI Modify generated code Function Extends char type or signed char type data to int type data to perform operation extension as per ANSI rules Supplement In ANSI standards the char type or singed char type data is always extended into the int type when evaluated This extension is provided to prevent a problem in char type arithmetic operations e g cl c2 2 c8 that the char type overflows in the middle of operation and that the result takes on an unexpected value An example is shown below void main void char ci char c2 200 char c3 2 cl c2 2 c3 In this case the char type overflows when calculating c2 2 so that the correct result may not be obtained Specification of this option helps to obtain the correct result The reason why extension into the int type is disabled by default is because it is conducive to increasing the ROM efficiency any further ffar_RAM fFRAM Modify generated code Function Change the default attribute of RAM data to far Supplement The RAM data va
221. ignored Make sure that member names are declared only once identifier variable name is duplicated The variable name is defined twice or more This declaration will be ignored Make sure that variable names are declared only once identifier variable name is shadowed The auto variable which is the same as the name declared as an argument is used Use any name not in use for arguments illegal storage class for argument extern ignore ey An invalid storage class is used in the argument list of function definition Specify the correct storage class incomplete array access An incomplete multidimensional array has been accessed Specify the size of the multidimensional array incompatible pointer types The object type pointed to by the pointer is incorrect Check the pointer type incomplete return type eU ey ey An attempt is made to reference an return variable of incomplete type Check return variable incomplete struct member ey An attempt is made to reference an struct member of incomplete Define complete structs or unions first init elements overflow ignored The initialization expression exceeded the size of the variable to be initialized Make sure that the number of initialize expressions does not exceed the size of the variables to be initialized inline function is caled as normal function before change to static function The function declared i
222. iling processed by utl308 the SBDATA Declaration amp SPECIAL Page Function Declaration Utility Figure G 8 shows an example of input for utl308 Figure G 9 shows an example of a SPECIAL page function declaration file utl308 sp308 nert0 x30 ospecial lt RET gt Prompt ncrt0 x30 Name of absolute file Figure G 8 Example utl308 Command Line Ja pragma SPECIAL PAGE Utility SBDATA Size 255 pragma SPECIAL 255 funct size 100 ref 10 7 pragma SPECIAL 254 func2 size 100 jref 7 pragma SPECIA 253 func3 size 100 flref 5 1 2 Va End of File Ei 1 Indicates the function size 2 Indicates the reference frequency of function Figure G 9 SPECIAL Page Function declaration File special h Figure G 10 shows an example where the SPECIAL page function declaration file generated in Figure G 8 is included in the program as a header file include special h void func void ommit Figure G 10 Example of making settings in a SPECIAL Page Function File REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 352 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 6 utl308 Error Messages G 6 1 Error Messages Table G 2 lists the utl308 calculation utility error messages and their countermeasures Table G 2 sbutl Error Messages Er
223. imum number of columns have bee processed 4 The default is1 5 Nothing is output if zero with converted by zero minimum columns e s conversion 1 Represents the maximum number of characters 2 Tf the result of conversion exceeds the specified number of characters the remainder is discarded 3 There is no limit to the number of characters in the default 4 If you specify an asterisk for the precision the integer of the parameter specifies the precision 5 Ifthe parameter is a negative value specification of the precision is invalid J e E and f conversion n where n is the precision numerals are output after the decimal point o g and G conversion Valid characters in excess of n where n is the precision are not output 4 I Lorh e I d i 0 u x X and n conversion is performed on long int and unsigned long int parameters e h d i 0 u x and X conversion is performed on short int and unsigned short int parameters e If I or h are specified in other than d i o u x X or n conversion they are ignored e L e E f g and G conversion is performed on double parameters iIin 5e standard z ieee Leena e E f and go conversions are rR in theca case aR Lon a double parameters In NC308 long double REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 275 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library putc Input Output Functions Function Outputs one character to
224. in void f_ptr n_ptr assigns the near pointer to the far pointer abbreviated func n_ptr prototype declaration for function with far pointer to parameter specifies near pointer parameter at the function call Figure B 10 Type conversion from near to far When converting type into far 0 zero is expanded as high order address B 1 7 Checking Function for Assigning far Pointer to near Pointer When compiling the warning message assign far pointer to near pointer bank value ignored is output for the code shown in Figure B 11 to show that the high part of the address the bank value has been lost int func int near int far f_ptr int near n_ptr void main void n_ptr f_ptr Assigns a far pointer to a near pointer abbreviated func f_pyr prototype declaration of function with near pointer in parameter far pointer implicitly cast as near type n_ptr near f_ptr far pointer explicitly cast as near type Figure B 11 Type conversion from far to near The warning message far pointer implicitly casted by near pointer is also output when a far pointer is explicitly cast as a near pointer then assigned to a near pointer REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 108 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 1 8 Declaring functions In NC308 functions are always located in the
225. ing 2 Predefines the M32C80 3 For the M16C 80 70 M32C 90 series C source files do not select this option M90 Change code generation Function Generates object code for M32C 90 series Notes 1 If the option M90 is selected when compiling or assembling source files be sure to use the standard function library nc390lib lib or nc390_16 lib if the compile option fsizet_16 or fptrdifft_16 is selected when linking 2 Predefines the M32C90 3 For the M16C 80 70 M32C 80 series C source files do not select this option REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 90 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fsizet_16 fS16 Change the bit size of type definition Function Changes the type definition size_t from type unsigned long to type unsigned int Notes 1 If this option is selected be sure to use one of the standard function libraries listed below when linking M82C 90 series nc390_16 lib M82C 80 series nc382_16 lib J M16C 80 70 series nc308_16 lib 2 When selecting this option make sure that it is selected for all C source files 3 When selecting this option be sure to select the compile option fptrdifft_16 fP16 too fptrdifft_16 fP16 Function Changes the type definition ptrdiff_t from type signed long to type singed int Notes 1 If this option is selected be sure to use one of the standard function libraries listed below when
226. ing Teqnique 5 Selection of optimum instructions Selection of optimum instructions as when using the STZ instruction or outputting shift instructions for division multiplications is always performed regardless of whether optimization options are specified or not b About the volatile qualifier Use of the volatile qualifier helps to prevent the referencing of variables the order in which they are referenced the number of times they are referenced etc from being affected by optimization However avoid writing statements like those shown below which will be interpreted ambiguously int a int volatile b c a b c whether a c or a b a b whether a b or a b 1 Figure 3 7 Example of Ambiguously Interpreted volatile qualifier 3 1 4 Precautions on Using register Variables a register qualification and compile option fenable_register fER If the compile option fenable_register fER is specified the variables that are register qualified so as to satisfy specific conditions can be forcibly assigned to registers This facility is provided for improving generated codes without relying on optimization Because improper use of this facility produces negative effects always be sure to examine generated codes before deciding to use it b About register qualification and optimization options When optimization options are specified variables are assigned to registers as one optimization featur
227. init Call _init G jsra _init endif Call main function 15 Idc 0h fb for debuger glb _main jsr a _main 1 Clears the far bss section to zeros Moves the initial values of the far data section to RAM Initializes the heap area Comment out this line if no memory management function is used Calls the init function which initializes standard I O Comment out this line if no I O function is used Calls the main function Interrupt is not enable when calls main function Therefore permits interrupt by FSET command when uses interrupt function 1 12 13 14 15 Figure 2 10 Startup Program List 5 ncrt0 a30 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 27 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler exit function 16 glib _exit glb exit _ exit End program exit jmp _exit einsf dummy interrupt function 17 glib dummy_int dummy_int reit end RIK IKI AIHA IKI RIK IK III IRIE KIKI III IKI IK IK III III IA IIR kek kk kekk kkk k J C COMPILER for M16C 80 Copyright C XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All rights reserved 3 7 RIK ekeke ee kekeke dee edee IK eeke ee kek ke eke eee keke eke e ekeke ee kekeke dee kedede keke eede keke kek ekek keke kekk kek kk kkk kkk k 3 16 exit function 17 Dummy interrupt processing function Figure
228. ion strspn String Handling Functions Function Calculates the length number of specified characters that are found in the character string Format include lt string h gt size_t strspn s1 s2 Method function Argument const char _far s1 Pointer to the character string to be searched in const char _far s2 Pointer to the character string of the character to be searched for ReturnValue Returns the length number of specified characters Description Calculates the size of the first character string consisting of characters in s2 from REJ10J2057 0200 Rev 2 00 2010 04 01 area s1 and searches the characters from the beginning of s1 You cannot search for 0 When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strstr String Handling Functions Function Searches the specified character from a character string Format include lt string h gt char _far strstr s1 s2 Method function Argument const char _far s1 Pointer to the character string to be searched in const char _far s2 Pointer to the character string of the character to be searched for ReturnValue Returns the position pointer where the specified character is found Returns NULL when the specified character cannot be found Description Returns the
229. ion Defines declares macros and functions that manipulate program localization The following lists locale functions Function Contents localeconv Initializes struct lconv setlocale Sets and searches the locale information of a program math h Function Declares prototype of mathematical function The following lists mathematical functions Function Contents acos Calculates arc cosine asin Calculates arc sine atan Calculates arc tangent atan2 Calculates arc tangent ceil Calculates an integer carry value cos Calculates cosine cosh Calculates hyperbolic cosine exp Calculates exponential function fabs Calculates the absolute value of a double precision floating point number floor Calculates an integer borrow value fmod Calculates the remainder frexp Divides floating point number into mantissa and exponent parts labs Calculates the absolute value of a long type integer ldexp Calculates the power of a floating point number log Calculates natural logarithm log10 Calculates common logarithm modf Calculates the division of a real number into the mantissa and exponent parts pow Calculates the power of a number sin Calculates sine sinh Calculates hyperbolic sine sqrt Calculates the square root of a numeric value tan Calculates tangent tanh Calculates hyperbolic tangent REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 223 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library setimp h
230. ion Published by 1753 Shimonumabe Nakahara ku Kawasaki shi Kanagawa 211 8668 Japan Edited by Renesas Solutions Corp 2010 Renesas Electronics Corporation All rights reserved Printed in Japan M32C Series C Compiler Package V 5 42 C Compiler User s Manual 2rCENESAS Renesas Electronics Corporation 1753 Shimonumabe Nakahara ku Kawasaki shi Kanagawa 211 8668 Japan RE10J2057 0200
231. ion and outputs the message to the standard output device Format error character string Description Suspends compilation lexical string is found this command outputs that character string to the standard output device if elif else endif Function Performs conditional compilation Examines the expression true or false Format if constant expression Helif constant expression igs Hendif Description If the value of the constant is true not 0 the commands if and elif process the program that follows elifis used in a pair with if ifdef or ifndef else is used in a pair with if Do not specify any tokens between else and the line feed You can however insert a comment endif indicates the end of the range controlled by if Always be sure to enter endif when using command if Combinations of if elif else endif can be nested There is no set limit to the number of levels of nesting Cannot use the sizeof operator cast operator or variables in a constant expression REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 191 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications ifdef elif else endif Function Performs conditional compilation Examines the macro defined or not Format ifdef identifier elif constant expression eles Hendif Description If an identifier is defined ifdef processes the p
232. ique f Other methods Tn addition to the above the ROM capacity can be compressed by changing program description s as shown below 1 Change a relatively small function that is called only once to an inline function 2 Replace an if else statement with a switch statement This is effective unless the variable concerned is a simple variable such as an array pointer or structure 3 For bit comparison use amp or in place of amp amp or 4 Fora function which returns a value in only the range of char type declare its return value type with char 5 For variables used overlapping a function call do not use a register variable 3 2 2 Speeding Up Startup Processing The ncrt0 a30 startup program includes routines for clearing the bss area This routine ensures that variables that are not initialized have an initial value of 0 as per the C language specifications For example the code shown in Figure 3 10 does not initialize the variable which must therefore be initialized to 0 by clearing the bss area during the startup routine staticint i Figure 3 10 Example Declaration of Variable Without Initial Value In some instances it is not necessary for a variable with no initial value to be cleared to 0 In such cases you can comment out the routine for clearing the bss area in the startup program to increase the speed of startup processing BZERO bss SE top bss SE BZERO bss SO top bss SO
233. isters that may be destroyed at entry of the function 2 Restore the registers at exit of the function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 59 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Appendix A Command Option Reference This appendix describes how to start the compile driver nc308 and the command line options The description of the command line options includes those for the as308 assembler and 1n308 linkage editor which can be started from nc308 A 1 nc308 Command Format nc308A command line option A assembly language source file name A relocatable module file name A lt C source file name gt Prompt lt gt Mandatory item Optional item A Space Figure A 1 nc308 Command Line Format nc308 osample as308 I n308 ms ncrt0 a30 sample c lt RET gt lt RET gt Return key Always specify the startup program first when linking Figure A 2 Example nc308 Command Line REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 60 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 nc308 Command Line Options A 2 1 Options for Controlling Compile Driver Table A 1 shows the command line options for controlling the compile driver Table A 1 Options for Controlling Compile Driver Option Function c Creates a relocatable module file extension r30 and ends processing Ddentifier Defines an iden
234. ithin functions only Example asm Japanese characters 1 Permits you to use Japanese characters in character strings Example L EF 2 Permits you to use Japanese characters for character constants Example L 8 Permits you to write Japanese characters in comments Example BF x Shift JIS and EUC code are supported but can t use the half size character of Japanese KATA KANA REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 102 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Table B 2 Extended Functions 2 2 Extended feature Description Default argument declaration Default value can be defined for the argument of a function for function Example1 extern int func int 1 char 0 Example2 extern int func int a char 0 When writing a variable as a default value be sure to declare the variable used as a default value before declaring the function Write default values sequentially beginning immediately after the argument Inline storage class Functions can be inline developed by using the inline storage class specifier inline Example inline func int 1 Always be sure to define the body of an inline function before using the inline function Extension of Comments You can include C like comments Example This is a comment pragma Extended functions You can use extended functions for which the hardware of M32C series in C l
235. k frame Currently nnn bytes have been used Reduce the size or number of parameters Sorry compilation terminated because of An error occurred in some function indicated by function name these errors in functionname Compilation is terminated Correct the errors detected before this message is output Sorry compilation terminated because of Errors in the source file exceeded the upper limit 50 too many errors errors Correct the errors detected before this message is output The tag name for structure and enumerated type is used as a tag name for union Change the tag name The tag name for structure and union is used as a tag name for enumerated type Change the tag name struct or union enum does not have long Type specifiers long or signed are used for the struct union enum or sign type specifiers Write the type specifier correctly size of incomplete type size of void struct or enum s tag used for union struct or union s tag used for enum switch s condition is floating e The float type is used for the expression of a switch statement Use the integer type or enumerated type The void type is used for the expression of a switch statement Use the integer type or enumerated type Invalid types other than the integer and enumerated types are used for the expression of a switch statement Use the integer type or enumerated type This is a syntax error Write the descri
236. known variable variable name e Anundefined variable name is used Define the variable REJ10JU2057 0200 Rev 2 00 2010 04 01 2tENESAS 332 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 19 ccom808Error message 13 13 Error message Description and countermeasure unknown variable variable name e An undefined variable name is used used Define the variable void array is invalid type int array e An array cannot be declared as void Processing will be assumed continued assuming it has type int Write the type specifier correctly The value converted to void by cast is used as the return from a function void value can t return gt Write correctly while struct union statement e struct or union is used in the expression of a while statement Use scalar type while void statement e void is used in the expression of a while statement Use scalar type zero size array member e the array which size is zero Declare the array size e The structure members include an array whose size is zero Arrays whose size is zero cannot be members of a structure function name is resursion then inline e The inline declared function name is called recursively is ignored The inline declaration will be ignored Correct the statement not to call such a function name recursively REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 333 M32C Series C Compiler
237. l be ignored Write the description correctly invalid pragma operand ignored An operand of pragma contains an error This line will be ignored Write the description correctly invalid function argument The function argument is not correctly written e Write the function argument correctly invalid return type e The expression of the return statement does not match the type of the function Make sure that the return value is matched to the type of the function or that the type of the function is matched to the return value invalid storage class for function change to extern An invalid storage class is used in function declaration It will be handled as extern when processed Change the storage class to extern Kanji in pragma ADDRESS e The line of pragma ADDRESS contains kanji code This line will be ignored Donot use kanji code in this declaration Kanji in pragma BITADDRESS e The line of pragma BITADDRESS contains kanji code This line will be ignored Do not use kanji code in this declaration keyword keyword are reserved for future A reversed keyword is used Change it to a different name large type was implicitly cast to small type eu ey y The upper bytes word of the value may be lost by assignment from large type to a smaller type Check the type If the description is correct ignore this warning mismatch prototyped parameter type The argumen
238. lared with it is to be expanded in line The functions specified as inline storage class have codes embedded directly in them at the assembly level B 5 2 Declaration Format of inline Storage Class The inline storage class specifier must be written in a syntactically similar format to that of the static and extern type storage class specifiers when declaring the inline storage class Figure B 53 shows the format used to declare the inline storage class inline type specifier function Figure B 53 Declaration Format of inline Storage Class Figure B 54 shows an example of declaration of a function inline int func int i Prototype declaration of function return i void main void int S s func s Definition of body of function Figure B 54 Example for Declaring inline Storage Class REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 130 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference SECTION program CODE ALIGN _file sample c align ine 7 HH C SRC glb _main _main enter 02H pushm R1 t ine 1Q i C_SRC s func s l mov w 2 FB RO s l ine 3 H C SRC return i Inline storage class have codes mov w RO R1 l embedded directly l add w 0001H RO l line 10 Ht C_SRC s func s fecal movw _ AY 2FB s ine HH C SRC popm R1 exitd E1 END Figure B 55 Compile
239. lay version data Function Displays version data for the command programs executed by the compiler then finishes processing Supplement Use this option to check that the compiler has been installed correctly The M32C series C Compiler package Release Notes list the correct version numbers of the commands executed internally by the compiler If the version numbers in the Release Notes do not match those displayed using this option the package may not have been installed correctly See the M32C series C Compiler package Release Notes for details of how to install the NC308 package Notes 1 Use uppercase V for this option 2 Ifyou specify this option all other options are ignored REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 66 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 4 Options for Debugging Table A 4 shows the command line options for outputting the symbol file for the C source file Table A 4 Options for Debugging Option Function g Outputs debugging information to an assembler source file extension a30 Therefore you can perform C language level debugging genter Always outputs an enter instruction when calling a function Be sure to specify this option when using the debugger s stack trace function gno_reg Suppresses the output of debugging information for register variables g Outputting debugging information Function Outputs debugging inf
240. le A 5 Optimization Options Option Short form Function O 1 5 None Optimization of speed and ROM size OR None Optimization of ROM size OS None Optimization of speed OR_MAX ORM Places priority on ROM size for the optimization performed OS_MAX OSM Places priority for the optimization performed Ocompare_byte_to_word OCBTW Compares consecutive bytes of data at contiguous addresses in words Oconst OC Performs optimization by replacing references to the const qualified external variables with constants Oforward_function_to_inline OFFTI Expands all inline functions in line Oglb_jmp OGI Global jump is optimized Oloop_unroll Joop count OLU Unrolls code as many times as the loop count without revolving the loop statement The loop count can be omitted When omitted this option is applied to a loop count of up to 5 Ono_asmopt ONA Inhibits starting the assembler optimizer aopt308 Ono_bit ONB Suppresses optimization based on grouping of bit manipulations Ono_break_source_debug ONBSD Suppresses optimization that affects source line data Ono_float_const_fold ONFCF Suppresses the constant folding processing of floating point numbers Ono_logical_or_combine ONLOC Suppresses the optimization that puts consecutive OR together Ono_stdlib ONS Inhibits inline padding of standard library functions and modification of library functions Osp_adjust OSA Optimizes removal of stack correction code
241. le No limit REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 177 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications C 2 Standard Language Specifications C 2 1 The chapter discusses the NC308 language specifications with the standard language specifications Syntax This section describes the syntactical token elements In NC308 the following are processed as tokens Key words Identifiers Constants Character literals Operators Punctuators Comment a Key Words NC808 interprets the followings as key words TableC 5 Key Words List _asm _far _near asm auto _Bool break case char const continue default do double else enum extern far float For goto if inline int long near register restrict return short signed sizeof static struct switch union unsigned void volatile while typedef g 2 i b Identifiers Identifiers consist of the following elements The 1st character is a letter or the underscore A to Z a to z or _ The 2nd and subsequent characters are alphanumerics or the underscore A to Z atoz 0 to 9 or _ Identifiers can consist of up to 200 characters However you cannot specify Japanese characters in identifiers c Constants Constants consists of the followings J Integer constants e Floating point constants o Character constants REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 178 M32C Series C Compiler Packa
242. les with the file name extension cm if any will be overwritten Do not use files which bear the file name extension cm along with this compiler You cannot specify two or more command files simultaneously If multiple files are specified the compiler displays an error message Too many command files 2 1 3 Notes on NC308 Command Line Options a Notes on Coding nc308 Command Line Options The nc308 command line options differ according to whether they are written in uppercase or lowercase letters Some options will not work if they are specified in the wrong case b Priority of Options for Controlling Compile driver Priority of Options for Controlling Compile driver E P S c High Priority low gt Therefore if the following two options are specified at the same time for example e Finish processing after creating a relocatable file extension r30 o S Finish processing after creating an assembly language source file extension a30 the S option has priority That is to say the compile driver does not perform any further processing after assembling In this case it only generates an assembly language source file If you want to create a relocatable file simultaneously with an assembly language source file use the option dsource shortcut dS REJ10J2057 0200 Rev 1 00 2010 04 01 1RENESAS 16 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 2 1 4
243. lid 4 No processing occurs if you specify other than a function name 5 No error occurs if you duplicate pragma CYCHANDLER declarations 6 A compile warning occurs if you use any function specified in one of the following declarations in pragma CYCHANDLER pragma INTERRUPT pragma INTHANDLER pragma HANDLER pragma ALMHANDLER pragma TASK Example include lt mrXXX h gt include id h pragma CYCHANDLER cyc void cyc void lt Be sure to declare as type void omitted Figure B 82 Example of pragma CYCHANDLER Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 159 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma INTHANDLER pragma HANDLER Interrupt handler declaration Function Declares an MR308 OS dependent interrupt handler Syntax 1 pragma INTHANDLERAinterrupt handler name 2 pragma HANDLERAinterrupt handler name Description 1 By using the above format to declare an interrupt handler a function written in C NC308 generates the code for the handling shown below to be used at the entry and exit points of the function At the entry point Push i e save the registers onto the current stack At the exit point Returns from the interrupt with the ret_int system call Also returns from the interrupt by the ret_int system call when returning at a return statement partway through the function 2 The following switch can
244. lise l l l l l l l 1 l l l l l l l l l l l l l bss _6E_top l l l l l I l l l l l l l l l l l l l l l l l l Figure 2 24 Listing of sect308 inc in Single Chip Mode 2 REJ10J2057 0200 Rev 1 00 2010 04 01 RENESAS 41 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler Far ROM data area section rom _FE ROMDATA org OFE0000H rom_FE_top section rom _FO ROMDATA rom _FO top section data SEI ROMDATA data_SEl_top section data _SOI ROMDATA data_SOI top section data_6El ROMDATA data_6El_top section data_6OI ROMDATA data_6Ol_top section data_NEI ROMDATA data _NEI_top section data _NOI ROMDATA data_NOI_top section data_FEI ROMDATA data_FEI_top section data_FOI LROMDATA data_FOI_ top section _interrupt ALIGN section program ALIGN section program_S org OFFOOO0H section vector ROMDATA variable vector table org VECTOR_ADR omitted lword dummy_int software int 63 endif MI Figure 2 25 Listing of sect308 inc in Single Chip Mode 3 REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 42 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler if MST__ fixed vector section section svector ROMDATA specialpage vector table org SVECTOR_ADR macro is defined in ncrt0 a30 Format SPECIAL number J 7 3 5 3
245. loc returns NULL without any memory being secured Note No garbage collection is performed Therefore even if there are lots of small unused portions of memory no memory is secured and malloc returns NULL unless there is an unused portion of memory that is larger than the specified size REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 266 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library mblen Multi byte Character Multi oyte Character String Manipulate Functions Function Calculates the length of a multibyte character string Format include lt stdlib h gt int mblen s n Method function Argument const char _far s Pointer to a multibyte character string size_t n Number of searched byte ReturnValue Returns the number of bytes in the character string if s configures a correct multibyte character string Returns 1 if s does not configure a correct multibyte character string Description Returns 0 if s indicates a NULL character mbstowcs Multi byte Character Multi oyte Character String Manipulate Functions Function Converts a multibyte character string into a wide character string Format include lt stdlib h gt size_t mbstowcs wes s n Method function Argument wchar t _far wcs Pointer to an area for storing conversion wide character string const char _far s Pointer to a multibyte character string size_t n Number of wide characters stored ReturnValue Returns
246. lows variables of _Bool variables of unsigned char and signed char type variables of unsigned short and signed short type variables of unsigned int and signed int type variables of unsigned long and signed long type variables of unsigned long long and signed long long type Variables give below are excluded from SBDATA declaration variables positioned in sections worked on by pragma SECTION variables defined by pragma ADDRESS variables defined by pragma ROM If variables declared by use pragma SBDATA have already been present in a program the declaration is given a higher priority in using utl308 and variables to be allocated are picked out of the remainder of the SB area G 4 2 Conditions to establish SPECIAL Page Function declaration The functions to be processed by utl308 are only those external functions that are listed below e Functions which are not declared with static e Functions which are called three times or more Note however that even the above functions may not be processed if they belong to one of the following J functions positioned in sections worked on by pragma SECTION e functions defined by any pragma If variables declared by use pragma SPECIAL have already been present in a program the declaration is given a higher priority in using ult308 and variables to be allocated are picked out of the remainder of the SB area REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 349 M32C Series C Compiler
247. lue Always returns 0 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 246 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library fgetc Input Output Functions Function Reads one character from the stream Format include lt stdio h gt int fgetc stream Method function Argument FILE _far stream Pointer of stream ReturnValue Returns the one input character Returns EOF if an error or the end of the stream is encountered Description Reads one character from the stream Interprets code 0x1A as the end code and ignores any subsequent data fgets Input Output Functions Function Reads one line from the stream Format include lt stdio h gt char _far fgets buffer n stream Method function Argument char _far buffer Pointer of the location to be stored in int n Maximum number of characters FILE _far stream Pointer of stream ReturnValue Returns the pointer of the location to be stored the same pointer as given by the argument if normally input Returns the NULL pointer if an error or the end of the stream is encountered Description Reads character string from the specified stream and stores it in the buffer Input ends at the input of any of the following 1 new line character n 2 m1 characters 3 endofstream Anull character 0 is appended to the end of the input character string The new line character Nn is stored as is Inte
248. m section with initial value 0 if you do not include aninitialization expression Example C language source program pragma ROM i unsigned int i Variable i which satisfies condition 1 void func void staticint i 20 Variable i which satisfies condition 2 remainder omitted Assembly language source program SECTION rom_NE ROMDATA S0 i ARC s name isi Variable i which satisfies condition 2 word 0014H glib E Variable i which satisfies condition 1 byte 00H byte 00H Figure B 62 Example Use of pragma ROM Declaration Note This facility is provided to maintain compatibility with NC77 and NC79 The variable normally must be located in the rom section using the const modifier REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 139 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma SB16DATA SB Relative Addressing Using of 16bit displacement Variable Description Function Function Declares that the data uses SB relative addressing of 16 bits displacement Syntax pragma SBDATA valuable name Description The M32C series allows you to choose instructions that can be executed efficiently by using SB relative addressing Section accessed by SB relative addressing When it has arranged to the far area pragma SB16DATA declares that SB relative addressing of 16 bits displacement can be used for the variable when referencing data This facility helps to gene
249. mat The following types are supported for variable names Variable name Array name integer o Struct name member name not including bit field members int idata int afs struct TAG int i int k s void func void asm MOVW RO idata asm MOVW RO al2 asm MOVW__ RO s i remainder omitted Figure B 27 Description example for specifying REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 116 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference See Figure B 28 for examples of referencing extern and static variables e C source file extenint ext_val lt extern variable void func void static int s val static variable asm mov w 01H ext_val asm mov w 01H s_val e Assembly language source file compile result _func ine 7 C_SRC asm mov w 01H ext_val HHH ASM START mov w 01H _ext_val lt Move to_ext_val line 8 4 C_SRC asm mov w 01H s_val mov w 01H SOs val Move to _S0_e val HHH ASM END line 9 C_SRC rts E1 glo _ext_val section bss NE DATA ___S0 s val 4 C s nameiss val blkb 2 END Figure B 28 Example of Referencing extern and static Variables You can use the format shown in Figure B 29 to use 1 bit bit fields of extern and static variables in asm functions Can not operate bit fields og greater than 2 bits asm op code b FB bit
250. mber of levels of nesting modifier declarators Depends on stack size of YACC Maximum number of levels of nesting declarator arentheses Depends on stack size of YACC Maximum number of levels of nesting operator parentheses Depends on stack size of YACC Maximum number of valid characters per internal identifier No limit or macro name Maximum number of valid characters per external dentifier No limit Maximum number of external identifiers per source file No limit REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 176 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications TableC 4 NC308 Specifications 2 2 Item Specification Maximum number of identifiers with block scope per block No limit Maximum number of macros per source file No limit Maximum number of parameters per function call and per No limit function Maximum number of parameters or macro call parameters 3lmax per macro Maximum number of characters in character string literals No limit after concatenation Maximum size in bytes of object No limit Maximum number of members per structure or union No limit Maximum number of enumerator constants per numerator No limit Maximum number of levels of nesting of structure or union No limit per struct declaration list Maximum number of characters per character string Depends on operating system Maximum number of lines per fi
251. ming a sum of products operation assuming p1 and P2 as the start addresses where multipliers are stored Syntax include lt asmmacro h gt static long rmpa_b long init int count char _far p1 char _far p2 When calculated in 8 bits static long rmpa_w long init int count int _far p1 int _far p2 When calculated in 16 bits static long long rmpa_w long init int count int _far p1 int _far p2 When calculated in 48 bits SHA Function The value of val is returned after arithmetically shifting it as many times as indicated by count Syntax include lt asmmacro h gt static unsigned char sha_b signed char count unsigned char val When calculated in 8 bits static unsigned int sha_w signed char count unsigned int val When calculated in 16 bits static unsigned long sha_l signed char count unsigned long val When calculated in 24 bits REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 171 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference SHL Function The value of val is returned after logically shifting it as many times as indicated by count Syntax include lt asmmacro h gt static unsigned char shl_b signed char count unsigned char val When calculated in 8 bits static unsigned int shl_w signed char count unsigned int val When calculated in 16 bits static unsigned long shl_l signed char count unsigned long val When
252. mmacro h gt static char dsub_b char vall char val2 When calculated in 8 bits static int dsub_w int val1 int val2 When calculated in 16 bits MAX Function Returns the value vall or val2 whichever is found larger by comparison Syntax include lt asmmacro h gt static char max_b char vall char val2 When calculated in 8 bits static int max_w int vall int val2 When calculated in 16 bits MIN Function Returns the value val1 or val2 whichever is found smaller by comparison Syntax include lt asmmacro h gt static char min_b char vall char val2 When calculated in 8 bits static int min_w Gnt vall int val2 When calculated in 16 bits REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 170 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference MOVdir Function transfer to val2 from vall by nibble Syntax include lt asmmacro h gt static unsigned char movll unsigned char val1 unsigned char val2 to low of val2 from high of val1 static unsigned char movlh unsigned char val1 unsigned char val2 to high of val2 from low of val1 static unsigned char movhl unsigned char vall unsigned char val2 to low of val2 from high of val1 static unsigned char movhh unsigned char val1 unsigned char val2 to high of val2 from high of val1 RMPA Function Initial value init Number of times count The result is returned after perfor
253. mmands Command Function Hassert Outputs a warning when a constant expression is false define Defines macros elif Performs conditional compilation else Performs conditional compilation endif Performs conditional compilation error Outputs messages to the standard output device and terminates processing Hf Performs conditional compilation ifdef Performs conditional compilation ifndef Performs conditional compilation include Takes in the specified file line Specifies file s line numbers pragma Instructs processing for NC308 s extended function undef Undefines macros Preprocess Commands Reference The NC308 preprocess commands are described in more detail below They are listed in the order shown in TableC 12 assert Function Format Description Issues a warning if a constant expression results in zero 0 assert constant expression Issues a warning if a constant expression results in zero 0 Compile is continued however Warning cpp308 82 x c line xxJassertion warning REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications define Function Defines macros Format 1 define identifier lexical string opt 2 define identifier identifier list opt lexical string opt Description 1 Defines an identifier as macro 2 Defines an ide
254. more the following switch can be specified during declaration e cl By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Rules 1 Always put the prototype declaration for the assembler function before the pragma PARAMETER declaration If you fail to make the prototype declaration a warning is output and pragma PARAMETER is ignored 2 Follow the following rules in the prototype declaration a Note also that the number of parameters specified in the prototype declaration must match that in the pragma PARAMETER declaration b The following types cannot be declared as parameters for an assembler function in a pragma PARAMETER declaration o structure type and union type e double type long long types The assembler functions shown below cannot be declared e Functions returning structure or union type 3 When a function is specified with pragma PARAMETER it becomes a symbol name that always adds _ to the head Example int asm_func unsigned int unsigned int Prototype declaration for the pragma PARAMETER asm_func RO R1 assembler function void main void int i j i 0x7FFD j 0x007F asm_func i j Calling the assembler function Figure B 78 Example of pragma PARAMETER Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 156 M32C Series C Compiler Package V 5 42 C Compiler B Extended Func
255. mory area to be copied from size_t n Number of bytes to be copied ReturnValue Returns the pointer to the memory area to which the characters have been copied Description Usually the program code described by macro is used for this function In using the REJ10J2057 0200 Rev 2 00 2010 04 01 function in a library please describe it as undef memcpy after description of include lt string h gt Copies n bytes from memory S2 to memory S1 When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library memicmp Memory Handling Functions Function Compares memory areas with alphabets handled as upper case letters Format include lt string h gt int memicmp s1 s2 n Method function Argument char _far s1 Pointer to the first memory area to be compared char _far s2 Pointer to the second memory area to be compared size_t n Number of bytes to be compared ReturnValue Return Value 0 The two memory areas are equal Return Value gt 0 The first memory area s1 is greater than the other Return Value lt 0 The second memory area s2 is greater than the other Description Compares memory areas with alphabets handled as upper case letters When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may sel
256. mp SPECIAL page Functiontroduction Utility utl308 Sp308 Outputs SPECIAL page function declaration Function Outputs SPECIAL page function declaration This option can be specified simultaneously with sb308 sp lt number gt Specifying numbers not be used as SPECIAL Page Function number option Function Specifies numbers not to be used as SPECIAL Page Function numbers Wstdout Function Outputs error and warning messages to the host machine s standard output stdout REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 348 M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 3 Notes 1 In using utl308 sbsym declared in files described in assembler cannot be counted For this reason you need to make adjustment if a sbsym declared in assembler is present so that the results effected after having executed utl308 are put in the SB area 2 In using utl308 SPECIAL Page Function declared in files described in assembler cannot be counted For this reason you need to make adjustment if a SPECIAL Page Function declared in assembler is present so that the results effected after having executed utl308 are put in the SPECIAL Page area G 4 Conditions to establish SBDATA declaration amp SPECIAL Page Function declaration G 4 1 Conditions to establish SBDATA declaration Only global variables are valid in using utl308 Types of variables are as fol
257. mple for writing different call numbers 5 If functions are defined in one file and function calls are defined in another file be sure to write this declaration in both files Example pragma SPECIAL 20 func void func unsigned int unsigned int void main void inti j i Ox7FFD j 0x007F func i j special page subroutine call Figure B 80 Example of pragma SPECIAL Declaration 1 Ifyou are using the supplied startup file ai the contents of tie fee section For details of how to modify the startup file see Chapter 2 2 e Ons o REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 157 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 7 4 Using MR308 Extended Functions NC308 has the following extended functions which support the real time operating system MR308 pragma ALMHANDLER Function Declares an MR308 alarm handler Syntax pragma ALMHANDLERA alarm handler name Description By using the above format to declare an alarm handler a function written in C NC308 generates the code for the alarm handler to be used at the entry and exit points of the function The alarm handler is called from the system clock interrupt by the JSR instruction and returns by the RTS or EXITD instruction Rules 1 You canNOT write alarm handlers that take parameters 2 The return value from the alarm handler must be type void in the declaration 3
258. multibyte character string const wchar_t _far wes Pointer to a wide character string size_t n Number of wide characters stored ReturnValue Returns the number of stored multibyte characters if the character string was converted correctly Returns 1 if the character string was not converted correctly wctomb Multi byte Character Multi pyte Character String Manipulate Functions Function Converts a wide character into a multibyte character Format include lt stdlib h gt int wctomb s wchar Method function Argument char _far s Pointer to an area for storing conversion multibyte character string wchar_t wchar wide character ReturnValue Returns the number of bytes contained in the multibyte characters Returns 1 if there is no corresponding multibyte character Returns 0 if the wide character is 0 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 302 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 2 4 Using the Standard Library a Notes on Regarding Standard Header File When using functions in the standard library always be sure to include the specified standard header file If this header file is not included the integrity of arguments and return values will be lost making the program unable to operate normally b Notes on Regarding Optimization of Standard Library If you specify any of optimization options O 8 to 5 OR OS OR_MAX or OS_MAX the sys
259. mum value that a int type variable 32767 can take on as valueMaximum value that a int type variable can take on as value INT_MIN Minimum value that a int type variable 32768 can take on as value SHRT_MAX Maximum value that a short int type 32767 variable can take on as value SHRT_MIN Minimum value that a short int type 32768 variable can take on as value LONG_MAX Maximum value that a long type variable 2147483647 can take on as value LONG_MIN Minimum value that a long type variable 2147483648 can take on as value LLONG_MAX Maximum value that a signed long 9223372036854775807 long type variable can take on as value LLONG_MIN Minimum value that a signed long 9223372036854775808 longtype variable can take on as value UCHAR _ MAX Maximum value that an unsigned 255 char type variable can take on as value UINT Maximum value that an unsigned int type 65535 variable can take on as value USHRT MAX Maximum value that an unsigned short 65535 int type variable can take on as value ULONG_MAX Maximum value that an unsigned long 4294967295 int type variable can take on as value ULLONG_MAX Maximum value that an unsigned long 18446744073709551615 long inttype variable can take on as value REJ10J2057 0200 Rev 2 00 2010 04 01 222 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library locale h Funct
260. n B 4 2 Format of Default Argument Declaration of Function Figure B 47 shows the format used to declare the default arguments of a function Storage class specifier Type declarator Declarator Dummy argument Default value or variable Figure B 47 Format for declaring the default arguments of a function Figure B 48 shows an example of declaration of a function and Figure B 49 shows a result of compiling of sample program which shows at Figure B 48 int func int i 1 int j 2 Declares the default values of parameters in the arguments to the function func as first argument 1 and second argument 2 void main void func The actual argument consists of the first argument 1 and the second argument 2 func 3 lt The actual argument consists of the first argument 3 and the second argument 2 func 3 5 lt The actual argument consists of the first argument 3 and the second argument 5 Figure B 48 Example for declaring the default arguments of a function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 127 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference HH C SRC glo _main _main ine 5 C_SRC func push w 0002H second argument 2 mov w 0001H RO first argument 1 jsr func add l 02H SP _line 6 HHC_SRC func 3 push w 0002H second argument 2 mov w 0003H RO first argument 3 jsr func add l 02H SP
261. n data_SOI section data_NEI section data_NOI section data_FEI section data_FOI section data_6E1 section data_60O1 section Note also that some sections can only be mapped to specific memory areas in the Micro Processor memory space 1 Sections mapped only to OH OFFFFH near area data_NE section data_NO section data_SE section data_SO section bss_NE section bss_NO section bss_SE section bss_SO section rom_NE section rom_NO section stack section 2 Sections mapped only to OFF0000H OFFFFFFH program_S section fvector section 3 Sections mapped to any area for the M32C series program section data_NEI section data_FE section data_FEI section data_SEI section data_6E section data_6O section bss_FE section bss_6E section rom_FE section 2tENESAS vector section data_NOI section data_FO section data_FOI section data_SOI section data_6EI section data_6OI section bss_FO section bss_6O section rom_FO section M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler If any of the following data sections have a size of 0 they need not be defined data_SE section data_SEI section data_SO section data_SOI section data_NE section data_NEI section data_NO section data_NOI section data_FE section data_FEI section data_FO section data_FOI section data_6E section data_6EI section d
262. n Function Declares defined a function by assembler macro Syntax pragma _ ASMMACRO function name register name Rules 1 Always put the prototype declaration before the pragma _ASMMACRO declaration Assembler macro function be sure to declare static 2 Can declare the function of no parameter Parameter is passed via register Please specify the register matching the parameter type 3 Please append the underscore _ to the head of the definition assembler macro name 4 The following is a return value related calling rules You can t declare structure and union type as the return value char and _Bool types ROL float types R2RO int and short types RO double types R3R2R1RO long types R2RO long long type R3R1R2RO0 5 Ifyou change the register s data save the register to the stack in entry processing of assembler macro function and the saved register restore in exit processing static long mul int int Be sure to declare static Example pragma _ ASMMACRO mul RO R2 pragma ASM _mul macro mul w R2 RO The return value is set to R2R0 register endm pragma ENDASM long I void test_func void mul 2 3 Figure B 85 Example of pragma _ AMMACRO REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 162 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference at acl ma ASM ut ae ma ENDASM Inline assembling
263. n stack section gae WY eusa eae YHS dat NO section L ea 949S L eae gS 2 pare Aowa peuaxg OFE0000H OFFOO00H OFFFDOO vector section OFFFDFFH fvector section Include special page OFFFFFFH data_6El section data_6Ol section data NEI section Bale NOY Puau Figure 2 20 Example Section Mapping 2 b Outline of memory mapping setup file 1 About sect308 inc This program is included from ncrt0 a80 It performs the following process mainly REJ10J2057 0200 Rev 1 00 2010 04 01 36 Maps each section in sequence Sets the starting addresses of the sections Defines the size of the stack and heap sections Sets the interrupt vector table Sets the fixed vector table 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler c Modifying the sect308 inc Figure 2 21 summarizes the steps required to modify the startup programs to match the target system 3 2 2 2 Customizing the Startup Program 3 w oO d Map order each section and set starting addresses n O Q e Set the interrupt vector table gt O f Set the special page vector table Figure 2 21 Example Sequence for Modifying Startup Programs d Mapping and Order Sections and Specifying Starting Address Map and order the sections to memory and specify their starting addresses mapping programs and data to ROM and RAM in the sect308 inc in
264. n Argument long n Long integer ReturnValue Returns the absolute value of a long type integer distance from 0 Idexp Localization Functions Function Calculates the power of a floating point number Format include lt math h gt double ldexp x exp Method function Argument double x Float point number int exp Power of number ReturnValue Returns x exp power of 2 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 261 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library Idiv Integer Arithmetic Functions Function Divides a long type integer and calculates the remainder Format include lt stdlib h gt ldiv_t ldiv number denom Method function Argument long number Dividend long denom Divisor ReturnValue Returns the quotient derived by dividing number by denom and the remainder of the division Description Returns the quotient derived by dividing number by denom and the remainder of the division in the structure ldiv_t l div_t is defined in stdlib h This structure consists of members long quot and long rem localeconv Localization Functions Function Format Method Argument ReturnValue REJ10J2057 0200 Rev 2 00 2010 04 01 Initializes struct lconv include lt locale h gt struct lconv _far localeconv void struct lconv localeconv void NC308 only function No argument used Returns a pointer to the initialized struct lconv
265. n Does not handle the types specified by const as ROM data Supplement The const specified data by default is located in the ROM area Take a look at the example below int const array 10 1 2 3 4 5 6 7 8 9 10 In this case the array array is located as ROM area By specifying this option you can locate the array in the RAM area You do not normally need to use this option fdouble_32 fD32 Function This option specifies that the double type be handled in 32 bit data length as is the float type Supplement 1 For this option to be used a function prototype must always be expressly written Without a prototype declaration the compiler may not be able to generate the correct code 2 When you specify this option the debug information of the type double is processed as the type float So the data of the type double is displayed as the type float on C watch window and global window of Debug tool fenable_register fER Register storage class Function Allocates variables with a specified register storage class to registers Supplement When optimizing register assignments of auto variables it may not always be possible to obtain the optimum solution This option is provided as a means of increasing the efficiency of optimization by instructing register assignments in the program under the above situation When this option is specified the following register specified variables are forcibly ass
266. n WNUF Warning Options Function Displays unused global functions when linking Notes When selecting this option be sure to specify the finfo option at the same time REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 96 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Wno_used_static_function WNUSF Warning Options Function For one of the following reasons a static function name is output that does not require code generation static functions are made inline by use of the Ostatic_to_inline OSTI option The static function is not referenced from anywhere in the file Notes 1 If any function name is written in an array initialize in the manner shown below the compiler will process the function assuming that it will be referenced even though it may not actually be referenced during program execution Example void a 5 void f1 f2 13 f4 f5 for i 0 i lt 3 i afi In the above example although functions f4 and f5 are not referenced the compiler processes these functions assuming that they will be referenced Wno_warning_stdlib WNWS Warning Options Function Specifying this option while Wnon_prototype or Wall is specified inhibits Alarm for standard libraries which do not have prototype declarations Wnon_prototype WNP Warning Options Function Outputs warning messages for functions without prototype declarations or
267. n Programs Note the following when writing your own initialization programs to be added to the startup program 1 If your initialization program changes the U or B flags return these flags to the original state where you exit the initialization program Do not change the contents of the SB register 2 If your initialization program calls a subroutine written in C note the following two points o Call the C subroutine only after clearing them B and D flags e Call the C subroutine only after setting the U flag d Setting the Stack Section Size A stack section has the domain used for user stacks and the domain used for interruption stacks Since stack is surely used please surely secure a domain stack size should set up the greatest size to be used 4 Stack size is calculated to use the stack size calculation utility STK Viewer amp stk 4 The stack is used within the startup program as well Although the initial values are reloaded before calling the main function REJ10J2057 0200 Rev 1 00 2010 04 01 stENESAS 31 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler e Heap Section Size Set the heap to the maximum amount of memory allocated using the memory management functions calloc and malloc in the program Set the heap to 0 if you do not use these memory management functions Make sure that the heap section does not exceed the physical RAM area HEAPSIZE equ Oh else
268. n include file after the I option The string following the D option is not of a character type letter or underscore that can be used in a macro name Illegal macro name definition Specify the macro name correctly and define the macro correctly The command line ends with the D option Specify a macro filename after the D option The string following the U option is not of a character type letter or underscore that can be used in a macro name Define the macro correctly You specified an illegal option on the cpp308 command line Specify only legal options Input file not found Specify the correct input file name Input file cannot be closed Check the input file name Cannot open output file Specify the correct output file name Cannot close output file Check the available space on disk Error writing to output file Check the available space on disk ey s ey ey y eu ey ey 11 cannot open input file 12 cannot close input file 14 cannot open output file 15 cannot close output file 16 cannot write output file Yew ey ew eu ei REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 317 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 318 Table F 4 cpp308 Error Messages 2 3 No Error message Description and countermeasure 17 input filename buffer overflow e The in
269. n storage class inline is called as an ordinary function Always be sure to define an inline function before using it 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 338 Table F 24 ccom308 Waming Messages 5 9 Waming message Description and countermeasure integer constant is out of range The value of the integer constant exceeded the value that can be expressed by unsigned long Use a value that can be expressed by unsigned long to describe the constant interrupt function called The function specified by pragma INTERRUPT is called Be careful not to call an interrupt handling function interrupt function can t return value The interrupt handling function specified by pragma INTERRUPT is using a return value Return values cannot be used in an interrupt function Delete the return value interrupt function has argument The interrupt handling function specified by pragma INTERRUPT is using an argument Arguments cannot be used in an interrupt function Delete the argument invalid pragma EQU The description of pragma EQU contains an error This line will be ignored Write the description correctly invalid pragma SECTION unknown section base name The section name in pragma SECTION contains an error The section names that can be specified are data bss program rom interrupt and bas This line wil
270. nce Horagma SBDATA SB Relative Addressing Using Variable Description Function Function Declares that the data uses SB relative addressing Syntax pragma SBDATA valuable name Description The M82C series allows you to choose instructions that can be executed efficiently by using SB relative addressing pragma SBDATA declares that SB relative addressing can be used for the variable when referencing data This facility helps to generate ROM efficient code Rules 1 The variable declared to be pragma SBDATA is declared by the assembler s pseudo instruction SBSYM 2 If pragma SBDATA is specified for anything other than a variable it is ignored as invalid 3 Ifthe specified variable is a static variable declared in a function the pragma SBDATA declaration is ignored as invalid 4 The variable declared to be pragma SBDATA is placed in a SBDATA attribute section when allocating memory for it 5 As opposed to the same variable pragma SBDATA pragma SB16DATA cannot be specified simultaneously 6 If pragma SBDATA is declared for ROM data the data is not placed in a SBDATA attribute section Example pragma SBDATA sym_data struct sym_data char bit0 1 char bit1 1 char bit2 1 char bit3 1 char bit4 1 char bit5 1 char bit6 1 char bit7 1 sym_data void func void sym_data bit1 0 omitted Figure B 64 Example Use of pragma SBDATA Declaration Note NC308 is premised on an as
271. nce Ono_stdlib ONS Suppression of optimization Function Suppresses inline padding of standard library functions modification of library functions and similar other optimization processing Supplement This option suppresses the following optimization Optimization for replacing the standard library functions such as strepyQ and memcpy with the SMOVF instructions etc Optimization for changing to the library functions that conform to the arguments near and far Notes Specify this option when make a function which name is same as standard library function Osp_adjust OSA Removing stack correction code after calling a function Function Optimizes code generation by combining stack correction codes after function calls Supplement Because the area for arguments to a function normally is deallocated for each function call made processing is performed to correct the stack pointer If this option is specified processing to correct the stack pointer is performed collectively rather than for each function call made Example In the example shown below the stack pointer is corrected each time func1 and then func2 is called so that the stack pointer is corrected twice If this option is specified the stack pointer is corrected only once int func int int int funca int void main void int i 1 int j 2 int k i k func1 i j n func2 k wee ee ee ee
272. nction 1 Furthermore after using some function as an ordinary function if you define that function as an inline function later NC308 becomes an error See Figure B 57 int func int i void main void inline int func int i func 1 return i Error Message Error ccom in c line 9 inline function is called as normal function before gt Figure B 57 Example of inappropriate code of inline function 2 5 Regarding the address of an inline function The inline function itself does not have an address Therefore if the amp operator is used for an inline function the software assumes an error Figure B 58 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 132 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference inline int func int i void main void return i int f int f amp func Error Message Error ccom sample c line 10 can t get inline function s address by amp operator gt amp func Sorry compilation terminated because of these errors in main Figure B 58 Example of inappropriate code of inline function 3 6 Declaration of static data If static data is declared in an inline function the body of the declared static data is allocated in units of files For this reason if an inline function consists of two or more files this result in accessing different areas Therefore if
273. nctions are contained in the standard library C 1 2 Introduction to NC308 Performance This section provides an overview of NC308 performance a Test Environment TableC 1 shows the standard PC environment TableC 1 Standard PC Environment Item Type of PC OS Version PC environment IBM PC AT or compatible Windows XP Type of CPU Pentium IV Memory 512MB min b C Source File Coding Specifications TableC 2 shows the specifications for coding NC308 C source files Note that estimates are provided for items for which actual measurements could not be achieved TableC 2 Specifications for Coding C Source Files Item Specification Number of characters per line of source file 512 bytes characters including the new line code Number of lines in source file 65535 max REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 175 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications c NC308 Specifications TableC 3 to TableC 4 lists the NC308 specifications Note that estimates are provided for items for which actual measurements could not be achieved TableC 3 NC308 Specifications 1 2 ltem Specification Maximum number of files that can be specified in NC308 No limit Maximum length of filename Depends on operating system Maximum number of macros that can be specified in nc308 No limit command line option D Maximum number of directories
274. nctions is specified for one function gt Write it correctly pragma DMAC duplicate e The same pragma DMAC is defined twice gt Write it correctly e pragma DMAC variable must be far pointer to object for variable name ignored The pragma DMAC declared variable must be a far pointer to an object or incomplete type The DMAC declaration was ignored Define pragma DMAC correctly pragma DMAC variable must be unsigned int for variable name ignored ey Variable declared by pragma DMAC needs to be unsigned int type DMAC declaration is ignored Write it correctly pragma DMAC s variable must be pre declared ignored ey Variable declared by pragma DMAC needs a type declaration Write it correctly pragma DMAC register conflict Multiple variables are allocated to the same register Write it correctly pragma DMAC unknown register name used eu ey gt Unknown register is used in pragma DMAC declaration Write it correctly pragma JSRA illegal location ignored gt Do not put pragma JSRA inside function scope Write pragma JSRA outside a function pragma JSRW illegal location ignored Do not put pragma JSRW inside function scope Write pragma JSRA outside a function pragma PARAMETER function s address used e gt e The address of the function specified by pragma PARAMETER is referenced gt Do not reference that address pragm
275. ndard Library strlen Function Calculates the number of characters in a character string Format include lt string h gt size_t strlen s Method function Argument const char _far s Pointer to the character string to be operated on to calculate length ReturnValue Returns the length of the character string Description Determines the length of character string s to NULL strncat String Handling Functions Function Concatenates character strings n characters Format include lt string h gt char _far strncat s1 s2 n Method function Argument char _far s1 Pointer to the character string to be concatenated to const char _far s2 Pointer to the character string to be concatenated from size_t n Number of characters to be concatenated ReturnValue Returns a pointer to the concatenated character string area Description Concatenates character strings s1 and n characters from character string s2 The concatenated string ends with NULL When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 290 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library strncmp String Handling Function Function Compares character strings n characters Format include lt string h gt int strnemp s1 s2 n Method function Argumen
276. nding procedure of it However if an assembler function is declared by using pragma PARAMETER C the codes for saving and recovering the contents of registers are created at the calling side so that it is unnecessary to save and recover them in this assembler function d Passing Parameters to an Assembler Function Use the pragma PARAMETER function if you need to pass parameters to a function written in assembly language The parameters are passed via registers Figure 3 20 shows the format asm_func in the figure is the name of an assembler function unsigned int near asm_func unsigned int unsigned int Prototype declaration of assembler function pragma PARAMETER asm_func RO R1 Figure 3 20 Prototype declaration of assembler function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 58 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique pragma PARAMETER passes arguments to assembler functions via 16 bit generalpurpose registers RO R1 R2 R3 8 bit general purpose registers ROL ROH R1L R1H and address registers AO Al In addition the 16 bit general purpose registers are combined to form 32 bit registers R3R1 R2RO and A1A0 for the parameters to be passed to the Note that an assembler function s prototype must always be declared before the pragma PARAMETER declaration However you cannot declare the following parameter types in a pragma PARAMETER declaration struct or union
277. ne options for specifying as308 and 1n308 options Table 2 10 Assemble and Link Options Option Function as308A lt Option gt Specifies options for the as308 link command If you specify two or more options enclose them in double quotes In308A lt Option gt Specifies options for the In308 assemble command If you specify two or more options enclose them in double quotes REJ10J2057 0200 Rev 1 00 2010 04 22 01 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler 2 2 Preparing the Startup Program For C language programs to be burned into ROM NC308 comes with a sample startup program written in the assembly language to initial set the hardware M16C 80 locate sections and set up interrupt vector address tables etc This startup program needs to be modified to suit the system in which it will be installed The following explains about the startup program and describes how to customize it 2 2 1 Sample of Startup Program The NC3808 startup program consists of the following two files J ncrt0 a30 Write a program which is executed immediately after reset e sect308 inc Included from ncrt0 a30 this file defines section locations memory mapping Figure 2 6 to Figure 2 11 show the ncrt0 a30 source program list P C COMPILER for M16C 80 Copyright C XXXX XXXX XXXX Renesas Electronics Corp and Renesas Solutions Corp All rights reserved
278. ng Outline of gensni 354 H 3 Starting gensni 356 H 3 1 Input format 356 H 3 2 Option References 357 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS M32C Series C Compiler Package V 5 42 C Compiler Preface Preface NC308 is the C compiler for the Renesas M32C Series NC308 converts programs written in C into assembly language source files for the M32C Series You can also specify compiler options for assembling and linking to generate hexadecimal files that can be written to the microcomputer Please be sure to read the precautions written in this manual before using NC308 Microsoft Windows XP and are either registered trademarks or trademarks of Microsoft Corporation in the United States and other countries IBM and AT are registered trademarks of International Business Machines Corporation Intel and Pentium are registered trademarks of Intel Corporation Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated Netscape and Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U S and other countries All other brand and product names are trademarks registered trademarks or service marks of their respective holders Terminology The following terms are used in the NC308 User Manuals Term Meaning NC308 Compiler system included in this compiler nc308 Compile driver and its executable file AS308 Assembler system included in this compiler as308 Relocatabl
279. nspecified characters that o are not found in the other character string strpbrk Searches the specified character in a character string from the O other character string strrchr Searches the specified character from the end of a character string strspn Calculates the length number of specified characters that O are found in the other character string strstr Searches the specified character from a character string strtok Divides some character string from a character string into x tokens Length strlen Calculates the number of characters in a character string Convert strerror Converts an error number into a character string x strxfrm Converts a character string using locale information 1 Several standard functions use global variables that are specific to that function If while that function is called and is being executed an interrupt occurs and that same function is called by the interrupt processing program the global variables used by the function when first called may be overwritten This does not occur to global variables of functions with reentrancy indicated by a O in the table However if the function does not have reentrancy indicated by a X in the table care must be taken if the function is also used by an interrupt processing program REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 229 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library b Character Handling Functions The following li
280. nt By default NC308 folds constants Following is an example before optimization val 1000e250 50 0 after optimization val 20e250 In this case if the application uses the full dynamic range of floating points the results of calculation differ as the order of calculation is changed This option suppresses the constant folding in floating point numbers so that the calculation sequence in the C source file is preserved Ono_logical_or_combine ONLOC Suppression of optimization Function Suppresses the optinization that puts consective ORs together Supplement If one of three options O 8 to 5 or OR or OS ORM OSM is specified when compiling as in the example shown below the compiler optimizes code generation by combining logical ORs Example if a amp 0x01 a amp 0x02 i a amp 0x04 Optimized if a amp 0x07 In this case the variable a is referenced up to three times but after optimization it is referenced only once However if the variable a has any effect on I O references etc the program may become unable to operate correctly due to optimization In such a case specify this option to suppress the optimization to combine logical ORs Note however that if the variable is declared with volatile logical ORs are not combined for optimization REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 78 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Refere
281. ntifier as macro In this format do not insert any space or tab between the first identifier and the left parenthesis The identifier in the following code is replaced by blanks define SYMBOL When a macro is used to define a function you can insert a backslash so that the code can span two or more lines The following four identifiers are reserved words for the compiler ILE ss cite Name of source file _ LINE _ Current source file line No s DANES searen Date compiled mm dd yyyy _ TIME__ Time compiled hh mm ss The following are predefined macros in NC308 M16C80 As for the time of M82 option use M32C80 is defined instead and at the time of M90 option use M32C90 is defined instead NC308 You can use the token string operator and token concatenated operator with tokens as shown below define debug s t printf x s Yd x t d x S x H t When parameters are specified for this macro debug s t as debug 1 2 they are interpreted as follows define debug s t printf x1 d x2 d x1 x2 Macro definitions can be nested to a maximum of 20 levels as shown below define XYZ1 100 define XYZ2 XYZ1 abbreviated define XYZ20 XYZ19 REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 190 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications error Function Suspends compilat
282. nts are passed via a register since function func_proto is prototype declared The third argument is passed via a stack since it is not subject to via register transfer Furthermore since the arguments of the function are passed via register the symbol name of the function s start address is derived from func_proto described in the C language source file by prefixing it with dollar hence func_proto REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 207 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules HHH FUNCTION func_no_proto He FRAME ARG i sze 2 offset8 FRAME ARG size 2 offset 10 t FRAME ARG ___k size 2 _ offseti2 ______ HH ARG Size 6 Auto Size 0 Context Size 8 align ine 12 HHC_SRC glib _func_no_proto 12 _func_no_proto enter 00H ine 13 H C_SRC return i j k mov w 8 FB RO i add w 10 FB RO j add w 12 FB RO k exitd E2 11 This passes all arguments via a stack 12 This is the start address of function func_no_proto Figure D 12 Compile Result of Sample Program sample c 2 In the compile result 2 of the sample program sample c listed inFigure D 10 all arguments are passed via a stack since function func_no_proto is written in K amp R format Furthermore since the arguments of the function are not passed via register the symbol name of the function s start address is derived from func_no_pro
283. nts of sections other than those based on the naming rules described above Table 2 13 Section Names Section name Contents fvector This section stores the contents of the Micro Processor s fixed vector heap This memory area is dynamically allocated during program execution by memory management functions e g malloc This section can be allocated at any desired location of the Micro Processor RAM area program Stores programs program_S Stores programs for which pragma SPECIAL has been specified stack This area is used as a stack Allocate this area at addresses between 0400H to OFFFFH switch_table The section to which the branch table for switch statements is allocated This section is generated only with the fSOS option vector This section stores the contents of the Micro Processor s interrupt vector table The interrupt vector table can be allocated at any desired location of the Micro Processor s entire memory space by intb register relative addressing For more information refer to the Micro Processor User s Manual These sections are mapped to memory according to the settings in the startup program include file sect308 inc You can modify the include file to change the mapping Figure 2 19 shows the how the sections are mapped according to the sample startup program s include file sect308 inc 5 near and far are NC308 modifiers used to clarify the addressing mode near accessi
284. o function etc function returning an array The type of the return value in function declaration is an array type Change the type to pointer to function etc handler function called The function specified by pragma HANDLER is called Be careful not to call a handler identifier variable name is duplicated The variable is defined more than one time Specify variable definition correctly if struct union statement eu eju ey The struct or union type is used in the expression of the if statement The expression must have scalar type if void statement The void type is used in the expression of the if statement The expression must have scalar type illegal storage class for argument inline ignored ey ely An inline function is declared in declaration statement within a function Declare it outside a function illegal storage class for argument nterrupt ignored An interrupt function is declared in declaration statement within a function Declare it outside a function incomplete array access An attempt is made to reference an array of incomplete Define size of array incomplete return type ey ely An attempt is made to reference an return variable of incomplete type Check return variable incomplete struct get by An attempt is made to reference or initialize an array of incomplete structs or unions that do not have defined members
285. o the stream putchar Outputs one character to stdout fputs Outputs one line to the stream puts Outputs one line to stdout fwrite Outputs the specified items of data to the stream perror Outputs an error message to stdout printf Outputs characters with format to stdout fflush Flushes the stream of an output buffer Fprintf Outputs characters with format to the stream sprintf Writes text with format to a character string vfprintf Output to a stream with format vprintf Output to stdout with format vsprintf Output to a buffer with format Return ungetc Sends one character back to the input stream Deter ferror Checks input output errors mination feof Checks EOF End of File REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 225 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library stdlib h ESS Function Declares the prototypes of memory management and terminate functions Function Contents abort Terminates the execution of the program abs Calculates the absolute value of an integer atof Converts a character string into a double type floating point number atoi Converts a character string into an int type integer atol Converts a character string into a long type integer bsearch Performs binary search in an array calloc Allocates a memory area and initializes it to zero 0 div Divides an int type integer and calculates the remainder
286. occurs 13 No recursive calls of an inline function can be made If this is attempted a compilation error occurs REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 74 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Ocompare_byte_to_word OCBTW Function Compares consecutive bytes of data at contiguous addresses in words Notes This option is only valid if you specify option O 1 to 5 OR OR_MAX ORM OS or OS_MAX OSM Oconst OC Optimization Function Optimizes code generation by replacing reference to variables to declared by the const qualifier with constants This is effective even when other than the O4 option is specified Supplement Optimization is performed when all of the following conditions are met 1 Variables not including bit fields and unions 2 Variables for which the const qualifier is specified but are not specified to be volatile 3 Variables that are subject to initialization in the same C language source file 4 Variables that are initialized by constant or const qualified variables REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 79 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Oforward_function_to_inline OFFTI Optimization Function Expands all inline functions in line Supplement Although inline functions require that an inline function be declared before its entity definition can be made use of this
287. of enum tag name An enumeration is defined twice Make sure that enumeration is defined only once redefinition tag of struct tag name A structure is defined twice Make sure that a structure is defined only once redefinition tag of union tag name A union is defined twice Make sure that a union is defined only once reinitialized of variable name ei ely eyy An initialize expression is specified twice for the same variable Specify the initializer only once restrict is duplicate A restrict is defined twice Make sure that a restrict is defined only once REJ10J2057 0200 Rev 2 00 2010 04 01 330 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 17 ccom308Error message 11 13 Error message Description and countermeasure size of incomplete array type e An attempt is made to find sizeof of an array of unknown size This is an invalid size Specify the size of the array An undefined structure or union is used in the operand of the sizeof operator Define the structure or union first The number of elements of an array defined as an operand of the sizeof operator is unknown Define the structure or union first An attempt is made to find the size of void This is an invalid size gt The size of void cannot be found Sorry stack frame memory exhaust A maximum of 128 bytes of parameters can be secured on max 64 or 255 bytes but now nnn bytes the stac
288. oid stdin gt _cnt stdout gt _cnt stdaux gt _cnt stdorn gt _cnt 0 stdin gt _flag _IOREAD stdout gt _flag _lIOWRT stdaux gt _flag _IORW stdom gt _flag _IOWRT stdin gt _mod _ TEXT stdout gt _mod _TEXT stdaux gt _mod _ BIN stdprn gt _mod _ TEXT stdin gt _func_in _sget stdout gt _func_in NULL stdaux gt _func_in _sget stdprn gt _func_in NULL stdin gt _func_out _sput stdout gt _func_out _sput stdaux gt _func_out _sput stdprn gt _func_out _pput ifdef UARTO speed _96 _B8 _PN _S2 else UART1 default speed _96 B8 PN S2 endif init_prn Figure E 5 Source file of init function init c REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 311 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library In systems using the two M16C 80 series UARTs modify the init function as shown below In the previous subsection we set the UARTO functions in the device c source file temporarily as _sget0 _sput0 and speed0 1 Use the standard auxiliary I O stdaux for the UARTO stream 2 Set the flag flag and mode _mod for standard auxiliary I O to match the system 3 Set the level 3 function pointer for standard auxiliary I O 4 Delete the conditional compile commands for the speed function and change to function speedO for UARTO These settings allow both UARTs to be used However functions using the standard I O stream
289. ompares character strings All alphabets are handled as upper case letters strncmp Compares character strings n characters strnicmp Compares character strings n characters All alphabets are handled as upper case letters Search strchr Searches the specified character beginning with the top of the character string strespn Calculates the length number of unspecified characters that are not found in the other character string strpbrk Searches the specified character in a character string from the other character string strrchr Searches the specified character from the end of a character string strspn Calculates the length number of specified characters that are found in the other character string strstr Searches the specified character from a character string strtok Divides some character string from a character string into tokens Length strlen Calculates the number of characters in a character string Convert strerror Converts an error number into a character string strxfrm Converts a character string using locale information Initialize bzero Initializes a memory area by clearing it to zero Copy beopy Copies characters from a memory area to another memcpy Copies characters n bytes from a memory area to another memset Set a memory area by filling with characters Compare mememp Compares memory areas n bytes memicmp Compares memory areas with alphabets handled as uppercase letters Search memchr Searche
290. ompiler H Using gensni or the sni File Creation Tool for Call Walker H 3 2 Option References The startup options of gensni are listed in Table G 1 Table G 1 gensni Command option Option short form function 0 file name None Specify a sni file name If this option is not specified sni file is named after the input file by changing its file extension to sni Jf an extension is specified sni file name the specified extension is changed to sni If no extensions are specified the extension sni is assumed V None Shows the startup message of gensni and terminates processing without performing anything No sni files are generated 0 file Specify a sni file name Function If this option is not specified sni file is named after the input file by changing its file extension to sni Tfno extensions are specified the extension sni is assumed Description Use of this option permits you to change sni file name as necessary The extension can also be changed V Terminate processing after showing the startup message of gensni Function Shows the startup message of gensni and terminates processing without performing anything No sni files are generated REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 357 M32C Series C Compiler Package V 5 42 C Compiler User s Manual Publication Date Apr 1 2010 Rev 2 00 Renesas Electronics Corporat
291. on Example of Assembler Macro Function 167 B 8 3 Commands that Can be Written by Assembler Macro Function 168 Appendix C Overview of C Language Specifications 175 C 1 Performance Specifications 175 C 1 1 Overview of Standard Specifications 175 C 1 2 Introduction to NC308 Performance 175 C 2 Standard Language Specifications 178 C 2 1 Syntax 178 C 2 2 Type 181 C 2 3 Expressions 183 C 2 4 Declaration 184 C 2 5 Statement 187 C 3 Preprocess Commands 189 C 3 1 List of Preprocess Commands Available 189 C 3 2 Preprocess Commands Reference 189 C 3 3 Predefined Macros 197 C 3 4 Usage of predefined Macros 197 Appendix D C Language Specification Rules 198 D 1 Internal Representation of Data 198 D 1 1 Integral Type 198 D 1 2 Floating Type 199 D 1 3 Enumerator Type 200 D 1 4 Pointer Type 200 D 1 5 Array Types 200 D 1 6 Structure types 201 D 1 7 Unions 201 D 1 8 Bitfield Types 202 D 2 Sign Extension Rules 203 D 3 Function Call Rules 204 D 3 1 Rules of Return Value 204 D 3 2 Rules on Argument Transfer 204 D 3 3 Rules for Converting Functions into Assembly Language Symbols 205 D 3 4 Interface between Functions 210 D 4 Securing auto Variable Area 216 D 5 Rules of Escaping of the Register 217 Appendix E Standard Library 218 E 1 Standard Header Files 218 E 1 1 Contents of Standard Header Files 218 E 1 2 Standard Header Files Reference 219 E 2 Standard Function Reference 228 E 2 1 Overview of Standard Library 228 E 2 2 List of Standard Library Functions by
292. on allows you to specify an output destination directory for the output file Syntax nc308A dir directory name Notes The source file information used for debugging is generated starting from the directory from which the compiler was invoked the current directory Therefore if output files were generated in different directories the debugger etc must be notified of the directory from which the compiler was invoked ofile name Output file specification Function Specifies the name s of the file s absolute module file map file etc generated by 1n308 This option can also be used to specify the file name includes the path You must not specify the filename extension Syntax nc308A ofile nameA lt C source file gt REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 65 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 3 Version Information Display Option Table A 3 shows the command line options that display the cross tool version data Table A 3 Options for Displaying Version Data Option Function V Displays the name of the command program and the command line during execution y Displays the startup messages of the compiler programs then finishes processing without compiling V Display command program name Function Compiles the files while displaying the name of the command program that is being executed Notes Use lowercase v for this option Disp
293. on of these circuits software and information in the design of your equipment Renesas Electronics assumes no responsibility for any losses incurred by you or third parties arising from the use of these circuits software or information When exporting the products or technology described in this document you should comply with the applicable export control laws and regulations and follow the procedures required by such laws and regulations You should not use Renesas Electronics products or the technology described in this document for any purpose relating to military applications or use by the military including but not limited to the development of weapons of mass destruction Renesas Electronics products and technology may not be used for or incorporated into any products or systems whose manufacture use or sale is prohibited under any applicable domestic or foreign laws or regulations Renesas Electronics has used reasonable care in preparing the information included in this document but Renesas Electronics does not warrant that such information is error free Renesas Electronics assumes no liability whatsoever for any damages incurred by you resulting from errors in or omissions from the information included herein Renesas Electronics products are classified according to the following three quality grades Standard High Quality and Specific The recommended applications for each Renesas Electronics product depends on the p
294. ons Table A 7 to Table A 8 shows the command line options for controlling nc308 generated assembly code Table A 7 Generated Code Modification Options 1 2 Option Short form Function fansi None Makes fnot_reserve_far_and_near fnot_reserve_asm and fextend_to_int valid fehar_enumerator FCE Handles the enumerator type as an unsigned char type not as an int type feonst_not_ROM fCNR Does not handle the types specified by const as ROM data fdouble_32 fD32 This option specifies that the double type be handled in 32 bit data length as is the float type fenable_register FER Make register storage class available fextend_to_int fETI Performs operation after extending char type data to the int type Extended according to ANSI standards 2 ffar RAM fFRAM Changes the default attribute of RAM data to far finfo None Outputs the information required for Call Walker Map Viewer and utl308 to the absolute module file x30 JSRW None Changes the default instruction for calling functions to JSR W fnear_pointer FNP Specified the default attribute of the pointer type variables to near This option sets the default pointer size to 16 bit fnear_ROM fNROM Change the default attribute of ROM data to near fno_align FNA Does not align the start address of the function fno_even FNE Allocate all data to the odd section with no sepa
295. option allows the entity definition of an inline function to be made before declaring it Notes 1 When specifying inline storage class for a function be sure that inline storage class and this body definition is written in the same file as the function is written 2 The parameter of an in line function cannot be used by structure and union It becomes a compile error 3 The indirect call of an in line function cannot be carried out It becomes a compile error when a indirect call is described 4 The recursive call of an in line function cannot be carried out It becomes a compile error when a recursive call is described Oglb_jmp OGJ Optimization Function Global jump is optimized Oloop_unroll oop count OLU oop count Unrolls a loop Function Unrolls code as many times as the loop count without revolving the loop statement The loop count can be omitted When omitted this option is applied to a loop count of up to 5 Supplement Unrolled code is output for only the for statements where the number of times they are executed is known Specify the upper limit count for which times for is revolved in the target for statement to be unrolled By default this option is applied to the for statements where for is revolved up to five times Notes The ROM size increases for reasons that the for statement is revolved REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 76 M32C Series C Compiler Package V 5
296. or multiple arguments When specifying a default value in a function that has multiple arguments always be sure to write values beginning with the last argument Figure B 52 shows examples of incorrect description void func inti int j 1 int k 2 correct void funca inti int j int k 2 correct void func3 int i 0 int j int k incorrect void funcA int i 0 int j int k 1 incorrect Figure B 52 Examples of Prototype Declaration b When specifying a variable for a default value When specifying a variable for a default value write the prototype declaration of a function after declaring the variable you specify If a variable is specified for the default value of an argument that is not declared before the prototype declaration of a function it is processes as an error REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 129 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 5 inline Function Declaration NC308 allows you to specify the inline storage class in the similar manner as in C By specifying the inline storage class for a function you can expand the function inline This chapter describes specifications of the inline storage class B 5 1 Overview of inline Storage Class The inline storage class specifier declares that the specified function is a function to be expanded inline The inline storage class specifier indicates to a function that the function dec
297. or processing for the task shown below to be used at the exit points of the function At the exit point Ends by the ext_tsk system call Also returns using the ext_tsk system call even when returning at a return statement part way through function Rules 1 Youneed not put the ext_tsk system call to return from the task 2 The return value from the task must be type void in the declaration 3 Only the function definition put after pragma TASK are valid 4 No processing occurs if you specify other than a function name 5 Noerror occurs if you duplicate pragma TASK declarations 6 A compile warning occurs if you use any function specified in one of the following declarations in pragma TASK pragma INTERRUPT pragma INTHANDLER pragma HANDLER pragma ALMHANDLER pragma CYCHANDLER Example include lt mrXXX h gt include id h pragma TASK main pragma TASK tsk1 void main void lt Be sure to declare as type void omitted sta_tsk ID_idle sta_tsk ID_tsk1 ext_tsk lt You need not use ext_tsk void tsk1 void remainder omitted Figure B 84 Example of pragma TASK Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 1RENESAS 161 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 7 5 The Other Extensions NC308 includes the following extended function for embedding assembler description inline pragma __ASMMACRO Assembler macro functio
298. ormally displayed It is aninternal error Contact Renesas Solutions Corp The required parameter was not specified in option Specify the required parameter after You specified a space between the option and its parameter Delete the space between the option and its parameter No output filename was specified after the o option Specify the name of the output file Do not specify the filename extension Invalid suffix xxx e You specified a filename extension not recognized by NC308 other than c i a30 30 x30 Specify the filename with the correct extension Exec format error Ignore option iu ely illegal option ey Invalid argument Invalid option eu ey Invalid option o REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 315 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 2 nc308 Error Messages 2 2 Error message Description and countermeasure No such file or directory e The processing system will not run Check that the directory of the processing system is correctly set in the environment variable Not enough core e Insufficient swap area Increase the swap area Permission denied e The processing system will not run Check access permission to the processing systems Or if access permission is OK check that the directory of the processing system is correctly
299. ormation to an assembler source file extension a30 Notes When debugging your program at the C language level always specify this option Specification of this option does not affect the code generated by the compiler genter Outputting enter instruction Function Always output an enter instruction when calling a function Notes 1 When using the debugger s stack trace function always specify this option Without this option you cannot obtain the correct result 2 When this option is specified the compiler generates code to reconstruct the stack frame using the enter command at entry of the function regardless of whether or not it is necessary Consequently the ROM size and the amount of stack used may increase Suppresses debugging information about register variables Function Suppresses the output of debugging information for register variables Notes Use this option to suppress the output of debugging information about register variables when you do not require that information Suppressing the output of debugging information about the register variables will speed up downloading to the debugger REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 67 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 5 Optimization Options Table A 5 shows the command line options for optimizing program execution speed and ROM capacity Tab
300. orming calculations on integer values 9 Character String Value Convert Functions Functions for converting character strings to numerical values 10 Multi byte Character and Multi byte Character String Manipulate Functions Functions for processing multi byte characters and multi byte character strings 11 Locale Functions Locale related functions REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 228 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 2 2 List of Standard Library Functions by Function a String Handling Functions The following lists String Handling Functions Table E 2 String Handling Functions Type Function Contents Reentrant Copy strepy Copies a character string O strncpy Copies a character string n characters O Concatenate strcat Concatenates character strings O strncat Concatenates character strings n characters o Compare stremp Compares character strings 0 strcoll Compares character strings using locale information o stricmp Compares character strings All alphabets are handled as O upper case letters strncmp Compares character strings n characters O strnicmp Compares character strings n characters All alphabets are o handled as upper case letters Search strchr Searches the specified character beginning with the top of the O character string strespn Calculates the length number of u
301. ort 0 Uses a variable before specifying pragma ADDRESS Figure B 71 Cases where the specification of oragma ADDRESS has no effect REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 148 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma BITADDRESS The bit position specification absolute address allotment function of an input and output variable Function A variable is assigned to the bit position which the specified absolute address specified Syntax pragma BITADDRESSAvariable namedAbit position absolute address Description The absolute address specified in this declaration is expanded as a character string in an assembler file and defined in pseudo instruction BITEQU The format for writing the numerical values therefore depends on the assembler as follows 1 bit position It is the range of 0 65535 Only the decimal digit 2 Address Append B or b to binary numbers Append O or o to octal numbers Write decimal integers only Append H or h to hexadecimal numbers If the number starts with letters Ato F precede it with 0 Rules 1 Only a _Bool type variable can be specified to be a variable name It becomes an error when variables other than _Bool type are specified 2 All storage classes such as extern and static for variables specified in pragma BITADDRESS are invalid 8 Variables specified in pragma BITADDRESS are valid only for variabl
302. ove example is shown in Figure B 6 Figure B 6 shows memory maps for abobe example REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 105 M 32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference near area Figure B 6 Memory Location of Pointer type Variable When near and far is explicitly specified determine the size of the address at which to store the variable and function that is written on the right side A declaration of pointer type variables that handle addresses is shown in Figure B 7 Examplet int far ptr Examplez2 int far ptr2 Figure B 7 Example of Declarning a Pointer Type Variable 1 As explained earlier unless near and far is specified the compiler handles the variable location as near and the variable type as far Therefore Examples 1 and 2 respectively are interpreted as shown in Figure B 8 Examplet int far near ptr1 Example2 int far far ptr2 Figure B 8 Example of Declaring a Pointer Type Variable 2 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 106 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference In Example 1 the variable ptr1 is 4 bytes variable that indicates the int type variable located in the far area The variable itself is located in the near area In Example 2 the variable ptr2 is 4 bytes variable that indicates the int type variable located in the far area The va
303. ovu_w int _far p1 int _far p2 When calculated in 16 bits SOUT Function Strings are transferred in the address incrementing direction from the source address indicated by p1 to the destination address indicated by p2 as many times as indicated by count There is no return value Syntax include lt asmmacro h gt static void sout_b char _far p1 char _far p2 unsigned int count When calculated in 8 bits static void sout_w int _far p1 int _far p2 unsigned int count When calculated in 16 bits SSTR Function Strings are stored using val as the data to store p as the address to from val address which to transfer and count as the number of times to transfer data There is no return value Syntax include lt asmmacro h gt static void sstr_b char val char _far p unsigned int count calculated in 8 bits static void sstr_w int val int _far p unsigned int count calculated in 16 bits REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 173 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference ROLC Function The value of val is returned after rotating it left by 1 bit including the C flag Syntax include lt asmmacro h gt static unsigned char rolc_b unsigned char val1 When calculated in 8 bits static unsigned int role_w unsigned int val1 When calculated in 16 bits RORC Function The value of val is returned after rot
304. ows 1 Delete the conditional compiling commands from the beginning of the device c file 2 Change the UARTO special register name defined in pragma EQU to a variable other than UARTI 3 Reproduce the level 3 functions _sget and _sput for UARTO and change them to different variable names such as _sget0 and _sput0 4 Also reproduce the speed function for UARTO and change the function name to something like speedO This completes modification of device c Next modify the init function init c which makes the initial I O function settings then change the stream settings see below REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 306 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library b Stream Settings The NC308 standard library has five items of stream data stdin stdout stderr stdaux and stdprn as external structures These external structures are defined in the standard header file stdio h and control the mode information of each stream flag indicating whether input or output stream and status information flag indicating error or EOF Table E 15 Stream Information Stream information Name stdin Standard input stdout Standard output stderr Standard error output error is output to stdout stdaux Standard auxiliary I O stdprn Standard printer output The stream corresponding to the NC308 standard library functions shown shaded in Figure E 3 are fixed to standard input stdin and
305. pecified a warning is output 9 External variables with ROM attribute cannot be handled by pragma MONITORIn However if the compile option fconst_not_ ROMIfCNRI is specified these variables can be handled by pragma MONITORI pramga MONITOR1 1 const int i Has no effect 10 pragma MONITORIn is not affected by the specification of compile options M82 REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 145 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference or M90 Horagma MONITORJIn n 1 4 Directive to specify the location of the RAM monitor area Examples pragma MONITOR1 i pragma MONITOR2 c int i char G REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 146 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 7 3_ Using Extended Functions for Target Devices NC308 includes the following extended functions for target devices pragma ADDRESS Specify absolute address of I O variable Function Specifies the absolute address of a variable For near variables the specified address is within the bank Syntax pragma ADDRESSAvariable namedAabsolute address Description The absolute address specified in this declaration is expanded as a character string in an assembler file and defined in pseudo instruction EQU The format for writing the numerical values therefore depends on the assembler as follows Append B or b to binary numbers Append O
306. piler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 337 Table F 23 ccom308 Waming Messages 4 9 Waming message Description and countermeasure far pointer implicitly casted by near pointer The far pointer was converted into the near pointer Check the data types near or far function must be far The function is declared with the near type Write it correctly function function name has no used argument variable name elu ely The variable declared in the argument to the function is not used Check the variables used handler function called The function specified by pragma HANDLER is called Be careful not to call a handler handler function can t return value eu ey U The function specified by pragma HANDLER is using a returned value The function specified by pragma HANDLER cannot use a returned value Delete the return value handler function has argument The function specified by pragma HANDLER is using an argument The function specified by pragma HANDLER cannot use an argument Delete the argument hex character is out of range The hex character in a character constant is excessively long Also some character that is not a hex representation is included after Reduce the length of the hex character identifier member name is duplicated this declare ignored The member name is defined twice or more This declaration will be
307. preference to speed This option can be specified with o and O options Notes When this option is used the source line information may partly be modified in the course of optimization Therefore if this options is specified when your program is running on the debugger your program is a possibility of different actions If you do not want the source line information to be modified use the One_break_source_debug ONBSD option to suppress optimization op Optimization Function Although the ROM size may somewhat increase optimization is performed to obtain the fastest speed possible This option can be specified along with the g option REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 71 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference OR_MAX ORM Optimization Function Places priority on ROM size for the optimization performed Explanation 1 The compile options listed below are enabled e O5 OR 050A Oglb_jmp OGJ Osp_adjust OSA fchar_enumerator fCE fdouble_32 fD32 fno_align fNA fsmall_array fSA e fuse_DIV fUD 2 If this option is used in the integrated development environment or High performance Embeded Workshop be sure to enable Size or speed on the C tab of the Renesas M32C Standard Toolchain and then select ROM size to the minimum Notes 1 The compiler generates in some cases BTSTC or BTSTS bit manipulation instru
308. psemhly language are referred to as assembler functions m i ofarvo REJ10J2057 0200 Rey 2 00 201 0 04 01 ENESAS 111 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 2 2 Specifying FB Offset Value of auto Variable The storage class auto and register variables including arguments written in the C language are referenced and located as being offset from the Frame Base Register FB They may be mapped to registers as a result of optimization The auto variables which are mapped to the stack can be used in the asm function by writing the program as shown in Figure B 18 below asm op code R1 FB variable name Figure B 18 Descroption Format for Specifying FB Offset Only two variable name can be specified by using this description format The following types are supported for variable names Variable name Array name integer o Struct name member name not including bit field members void func void int idata int afs struct TAG int i int k s asm MOVW RO FB idata asm MOVW RO FBT al2 asm MOVW PO FB sii Remainder omitted asm MOV W FB FB s i a 2 Figure B 19 Description example for specifying Figure B 20 shows an example for referencing an auto variable and its compile result REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 112 M32C Series C Compiler Package V 5 42
309. ption correctly It does not normally occur This is an internal error This error may occur pursuant to one of errors that occurred before it If this error occurs even after eliminating all errors that occurred before it please send the content of the error message to Renesas Solutions Corp as you contact switch s condition is void aan switch s condition must integer syntax error ely ei System Error REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 331 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 18 ccom808Error message 12 13 Error message Description and countermeasure too big data length e Anattempt is made to get an address exceeding the 32 bit range Make sure the set values are within the address range of the microcomputer used too big address e Anattempt is made to set an address exceeding the 32 bit range Make sure the set values are within the address range of the microcomputer used too many storage class of typedef Storage class specifiers such as extern typedef static auto register are described more than twice in declaration Do not describe a storage class specifier more than twice type redeclaration of variable name The variable is defined with different types each time Always use the same type when declaring a variable twice typedef initialized An initialize expression is described in the variable declared
310. put filename buffer has overflowed Note that the filename includes the path Reduce the length of the filename and path use the I option to specify the standard directory 18 not enough memory for macro include file not found Insufficient memory for macro name and contents of macro Increase the swap area 21 include file not found Yoel The include file could not be opened The include files are in the current directory and that specified in the I option and environment variable Check these directories 22 illegal file name error Illegal filename Specify a correct filename 23 include file nesting over Nesting of include files exceeds the limit 40 Reduce nesting of include files to a maximum of 40 levels 25 illegal identifier Error in define Code the source file correctly 26 illegal operation ee ee Error in preprocess commands if elseif assert operation expression Rewrite operation expression correctly 27 macro argument error Error in number of macro parameters when expanding macro Check macro definition and reference and correct as necessary 28 input buffer over flow Input line buffer overflow occurred when reading source file s Or buffer overflowed when converting macros Reduce each line in the source file to a maximum of 1023 characters If you anticipate macro conversion modify the code so that no line exceeds 1023
311. qsort base nelen size cmp e1 e2 Method function Argument void _far base Start address of array size_t nelen Element number size_t size Element size int emp Compare function ReturnValue No value is returned Description Sorts elements in an array REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 278 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library rand Integer Arithmetic Functions Function Generates a pseudo random number Format include lt stdlib h gt int rand void Method function Argument No argument used ReturnValue Returns the seed random number series specified in srand The generated random number is a value between 0 and RAND MAX realloc Memory Management Functions Function Changes the size of an allocated memory area Format include lt stdlib h gt void _far realloc cp n bytes Method function Argument void _far cp Pointer to the memory area before change size_t n bytes Size of memory area in bytes to be changed ReturnValue Returns the pointer of the memory area which has had its size changed Returns NULLifa memory area of the specified size could not be secured Description Changes the size of an area already secured using malloc or calloc Specify a previously secured pointer in parameter cp and specify the number of bytes to change in n bytes REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 279 M32C Series C
312. r pseudo instruction GLB Figure 3 18 is an example of referencing the C program s global variable counter from the assembler function asm_func REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 56 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique C program unsigned int counter C program global variable void main void omitted Assembler function glib _ counter lt External declaration of C program s global variable _asm_func omitted mov w _ counter RO lt Reference Figure 3 18 Referencing a C Global Variable d Notes on Coding Interrupt Handing in Assembler Function If you are writing a program function for interrupt processing the following processing must be performed at the entry and exit 1 Save the registers RO R1 R2 R3 AO Al and FB at the entry point 2 Restore the registers RO R1 R2 R3 AO A1 and FB at the exit point 3 Use the REIT instruction to return from the function Figure 3 19 is an example of coding an assembler function for interrupt processing section program glb _func _int_func pushm RO R1 R2 R3 A0 A1 FB Push registers mov b 01H ROL omitted popm RO R1 R2 R3 A0 A1 FB Pull registers reit Return to C program END Figure 3 19 Example Coding of Interrupt Processing Assembler Function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 57 M32C Series C Compiler Package V 5 42 C Compiler 3 Prog
313. r to non volatile pointer The volatile property is lost by assignment from volatile pointer to non volatile pointer Check the statement description If the description is correct ignore this warning assignment in comparison statement You put an assignment expression in a comparison statement You may confuse with Check on it block level extern variable initialize forbid ignored An initializer is written in extern variable declaration in a function Delete the initializer or change the storage class can t get address from register storage class variable The amp operator is written for a variable of the storage class register Do not use the amp operator to describe a variable of the storage class register can t get size of bitfield The bit field is used for the operand of the sizeof operator Write the operand correctly can t get size of function A function name is used for the operand of the sizeof operator Write the operand correctly can t get size of function unit size 1 assumed U The pointer to the function is incremented or decremented Processing will be continued by assuming the increment or decrement value is 1 Do not increment or decrement the pointer to a function char array initialized by wchar_t string The array of type char is initialized with type wchar_t Make sure that the types of initializer are matched case valu
314. r30 absolute module files extension x30 or other files output by as308 or 1n308 are generated silent Compile driver control Function Suppresses the display of copyright notices at startup Upredefined macro Compile driver control Function Undefines predefined macro constants Syntax nc308A U predefined macro lt C source file gt Notes The maximum number of macros that can be undefined may be limited by the maximum number of characters that can be specified on the command line of the operating system of the host machine STDC_ _LINE_ FILE_ DATE_ and _TIME_ cannot be undefined REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 64 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 2 Options Specifying Output Files Table A 2 shows the command line option that specifies the name of the output machine language data file Table A 2 Options for Specifying Output Files Option Function dirdirectory name Specifies the destination directory of the file s absolute module file map file etc generated by 1n308 ofile name Specifies the name s of the file s absolute module file map file etc generated by 1n308 This option can also be used to specify the destination directory This option can also be used to specify the file name includes the path Do not specify the filename extension dirdirectory name Output file specification Function This opti
315. raming Teqnique e Notes on Calling C Functions from Assembler Functions Note the following when calling a function written in C from an assembly language program 1 Cal the C function using a label preceded by the underscore _ or the dollar 2 When calling C language function RO register and register which used for return value are not saved in the C language function Therefor when calling C language function from Assemble language function save RO register and register which used for return value befor calling C language function 3 3 3 Notes on Coding Assembler Functions Note the following when writing assembly language functions subroutines that are called from a C program a Notes on Handling B and U flags When returning from an assembler function to a C language program always make sure that the B and U flags are in the same condition as they were when the function was called b Notes on Handling FB Register If you modified the FB frame base register in an assembler function you may not be able to return normally to the C language program from which the function was called c Notes on Handling General purpose and Address Registers When changing the contents of general purpose registers R1 R2 and R3 except for RO and the address registers AO and A1 in an assembler function it is necessary to save them on the stack at the beginning procedure of the assembler function and recover them from the stack at the e
316. rate ROMefficient code Rules 1 Section accessed by SB relative addressing when using pragma SB16DATA It isnecessary to arrange to a far domain Therefore it is necessary to change specification of the section arrangement by the start up file For details of how to modify the startup file see Chapter 2 2 2 Customizing the Startup Program and Chapter 2 2 3 2 2 3 Customizing for NC308 Memory Mapping in the Operation part of the NC308 User s Manual 2 As opposed to the same variable pragma SBDATA pragma SB16DATA cannot be specified simultaneously 8 If pragma SB16DATA is specified for anything other than a variable it is ignored as invalid 4 If the specified variable is a static variable declared in a function the pragmaSB16DATA declaration is ignored as invalid 5 The variable declared to be pragma SB16DATA is placed in a SBI6DATA attribute section when allocating memory for it 6 If pragma SBI6DATA is declared for ROM data declaration of pragma SB16DATA becomes invalid Example pragma SB16DATA sym data int far sym_data void func void sym_data 1 Figure B 63 Example Use of pragma SB16DATA Declaration Note NC308 is premised on an assumption that the SB register will be initialized after reset and will thereafter be used as a fixed quantity REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 140 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Refere
317. rating odd data from even data when outputting fno_switch_table fNST When this option is specified the code which branches since it compares is generated to a switch statement fnot_address_volatile fNAV Does not regard the variables specified by pragma ADDRESS as those specified by volatile fnot_reserve_asm FNRA Exclude asm from reserved words Only _asm is valid fnot_reserve_far_and_near fNRFAN Exclude far and near from reserved words Only _far and _near are valid fnot_reserve_inline FNRI Exclude far and near from reserved words Only _inline is made a reserved word fsmall_array fSA When referencing a far type array whose total size is unknown when compiling this option calculates subscripts in 16 bits assuming that the array s total size is within 64 Kbytes fswitch_other_section fSOS This option outputs a ROM table for a switch statement to some other section than a program section 2 char type data or signed char type data evaluated under ANSI rules is always extended to inttype data This is because operations on char types c1 c2 2 c3 for example would otherwise result in an overflow and failure to obtain the intended result REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 82 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Table A 8 Generated Code Modification Options 2 2 Option Short form Function fuse_D
318. rd in put output functions By default the M16C 80 is assumed to be the microcomputer that it initializes When using standard input output functions the init function etc may need to be modified depending on the system in which the i l i REJ10J2057 0200 Rev 1 00 2010 04 01 RENESAS 30 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler If you are using only sprintf and sscanf the init function does not need to be called 2 Settings When Not Using Memory Management Functions To use the memory management functions calloc and malloc etc not only is an area allocated in the heap section but the following settings are also made in ncrt0 a30 1 Initialization of external variable char _mnext Initializes the heap_top label which is the starting address of the heap section 2 Initialization of external variable unsigned_msize Initializes the HEAPSIZE expression which sets at 2 2 2 e heap section size Figure 2 14 shows the initialization performed in ncrt0 a30 f HEAP 1 glib __mnext glib __msize mov heap_top amp OFFFFFFH __mnext mov HEAPSIZE amp 0FFFFFFH __msize endif Figure 2 14 Initialization When Using Memory Management Functions ncrt0 a30 If you are not using the memory management functions comment out the whole initialization section This saves the ROM size by stopping unwanted library items from being linked 3 Notes on Writing Initializatio
319. reason NC3808 may require redundant type expansion unless you declare the prototype of a function Prototype declaration of functions helps to suppress such redundant type expansion and also makes it possible to assign arguments to registers All this allows you to accomplish an efficient function call d Using SB Register Efficiently Using the SB register based addressing mode you can reduce the size of your application program ROM size NC308 allows you to declare variables that use the SB register based addressing mode by writing the description shown in Figure 3 9 pragma SBDATA val int val Figure 3 9 Example of variable declaration using SB based addressing mode e Compressing ROM Size Using Compile Option fUSRW When calling a function defined outside the file in NC308 the function is called with the JSR A instruction However if the program is not too large most functions can be called with the JSR W instruction Tn this case ROM size will be reduced by doing as follows First Compile with the fJSRW option and check functions which are indicated as errors at link time Then change declarations for the error functions only into declarations using pragma JSRA function name When you use the OGJ option the JMP instruction at the time of a link is chosen 10J2057 0200 Rev 2 00 2010 04 REJ 51 01 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqn
320. rectly specified by writing a variable name for example Write the initial value of the enumerator correctly invalid function argument y An argument which is not included in the argument list is declared in argument definition in function definition Declare arguments which are included in the argument list invalid function s argument declaration e The argument of the function is erroneously declared gt Write it correctly invalid function declare e The function definition contains an error Check the line in error or the immediately preceding function definition invalid initializer e The initialization expression contains an error This error includes excessive parentheses many initialize expressions a static variable in the function initialized by an auto variable or a variable initialized by another variable Write the initialization expression correctly invalid initializer of variable name ey The initialization expression contains an error This error includes a bitfield initialize expression described with variables for example Write the initialization expression correctly invalid initializer on array The initialization expression contains an error Check to see if the number of initialize expressions in the parentheses matches the number of array elements and the number of structure members invalid initializer on char array The initialization expression contains an error
321. red ignored declared For functions specified in a pragma pragmaname write prototype declaration in advance pragma pragma name s function must e A function specified in the pragma pragma name is not be prototyped ignored prototype declared For functions specified in a pragma pragmaname write prototype declaration in advance pragma pragma name s function e The type of return value for a function specified in the return type invalid ignored pragma pragma name is invalid gt Make sure the type of return value is any type other than struct union or double pragma pragmasname unknown e The switch specified in the pragma pragma name is switch ignored invalid gt Write it correctly pragma pragma name variable e The variable specified in pragma pragma name is initialized initialization ignored initialized The specification of pragma pragma name will be nullified gt Delete either pragma pragma name or the initialize expression pragma ASM line too long then cut e The line in which pragma ASM is written exceeds the allowable number of characters 1 024 bytes gt Write it within 1 024 bytes REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 334 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 335 Table F 21 ccom308 Waming Messages 2 9 Waming message Description and countermeasure pragma directive conflict e pragma of different fu
322. rguments and auto variables are effective as it processes the program For this reason if arguments or auto variables are referenced directly in the asm function management of such effective interval is destroyed and the compiler cannot output codes correctly Therefore to reference arguments or auto variables in the asm function you are writing always be sure to use the b features of the asm function void func int i int j asm mov w 2 FB 4FB Fisi Figure B 37 Example cannot be referred to correctly In the above case because the compiler determines that i and j are not used within the function func it does not output codes necessary to construct the frame in which to reference the arguments For this reason the arguments cannot be referenced correctly 4 About branching within the asm function The compiler analyzes program flow in the intervals in which registers and variables respectively are effective as it processes the program Do not write statements for branching including conditional branching in the asm function that may affect the program flow REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 122 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference b About Register e Do not destroy registers within the asm function If registers are going to be destroyed use push and pop instructions to save and restore the registers e NC808 is premised on condition
323. riable itself is located in the far area Memory mappings for Examples 1 and 2 are shown in Figure B 9 int far ptr1 int far ptr2 4 bytes _ptr2 4 bytes near area far area far area 2 bytes ptr2 2 bytes Figure B 9 Memory Location of Pointer type Variable B 1 4 Format of Function Declaration A function s near and far allocation attributes are always far If you specify the near attribute in function declaration the system outputs a warning message function must be far with your near declaration ignored B 1 5 near and far Control by nc308 Command Line Options NC308 handles functions as belonging to the far attribute and variables data as belonging to the near attribute if you do not specify the near and far attributes NC308 s command line options allow you to modify the default attributes of functions and variables data These are listed in the table below Table B 3 Command Line Options Command Line Options Function fnear ROM CfNROM Assumes near as the default attribute of ROM data ffar RAM fFRAM Assumes far as the default attribute of RAM data REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 107 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 1 6 Function of Type conversion from near to far The program in Figure B 10 performs a type conversion from near to far int func int far int far f_ptr int near n_ptr void ma
324. riables are located in the near area by default Use this option when you want the RAM data to be located in other areas than the near area 64 Kbytes area finfo Modify generated code Function Outputs the information required for the Call Walker Map Viewer and utl308 Supplement When using STK Viewer Map Viewer or utl308 the absolute module file x30 output by this option is needed Notes 1 No check is made for the use of global variables in the asm function For this reason use of the asm function even in utl308 is ignored 2 finfo includes g 3 This option doesn t influence the generated code of the compiler REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 85 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fUSRW Modify generated code Function Changes the default instruction for calling functions to JSR W Supplement When calling a function that has been defined external to the source file the JSR A command is used by default This option allows it to be changed to the JSR W command Change to the JSR W command helps to compress the generated code size This option is useful when the program is relatively small not exceeding 32 Kbytes in size or ROM compression is desired Notes Conversely if a function is called that is located 32 Kbytes or more forward or backward from the calling position the JSR W command causes an error when linking This error c
325. ring prototype declaration Le when writing a new format Consequently all arguments are passed via stack when description of K amp R format is entered description of old format Note also that if a description format where prototype declaration is entered for the function new format and a description of the K amp R format old format coexist in given statement the system may fail to pass arguments to the function correctly for reasons of language specifications of the C language Therefore A ommend REJ10J2057 0200 Rev 2 00 2010 04 01 lt ENESAS 204 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules 2 Passing arguments via stack All arguments that do not satisfy the register transfer requirements are passed via stack The Table D 6 summarize the methods used to pass arguments Table D 6 Rules on Passing Arguments to Function NC308 Type of Argument First Argument Second Argument Third and Following Arguments char type ROL register Stack Stack _Bool type int type RO register Stack Stack near pointer type Other types Stack Stack Stack D 3 3 Rules for Converting Functions into Assembly Language Symbols The function names in which functions are defined in a C language source file are used as the start labels of functions in an assembler source file The start label of a function in an assembler source file consists of the function name in t
326. roduct s quality grade as indicated below You must check the quality grade of each Renesas Electronics product before using it in a particular application You may not use any Renesas Electronics product for any application categorized as Specific without the prior written consent of Renesas Electronics Further you may not use any Renesas Electronics product for any application for which it is not intended without the prior written consent of Renesas Electronics Renesas Electronics shall not be in any way liable for any damages or losses incurred by you or third parties arising from the use of any Renesas Electronics product for an application categorized as Specific or for which the product is not intended where you have failed to obtain the prior written consent of Renesas Electronics The quality grade of each Renesas Electronics product is Standard unless otherwise expressly specified in a Renesas Electronics data sheets or data books etc Standard Computers office equipment communications equipment test and measurement equipment audio and visual equipment home electronic appliances machine tools personal electronic equipment and industrial robots High Quality Transportation equipment automobiles trains ships etc traffic control systems anti disaster systems anti crime systems safety equipment and medical equipment not specifically designed for life support Specific Aircraft aerospace
327. rogram that follows You can also describe the following if defined identifier if defined identifier else is used in a pair with ifdef Do not specify any tokens between else and the line feed You can however insert a comment elifis used in a pair with if ifdef or ifndef endif indicates the end of the range controlled by ifdef Always be sure to enter endif when using command ifdef Combinations of ifdef else endif can be nested There is no set limit to the number of levels of nesting but it depends on the amount of available memory Cannot use the sizeof operator cast operator or variables in a constant expression REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 192 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications ifndef elif else endif Function Performs conditional compilation Examines the macro defined or not Format ifndef identifier elif constant expression eles Hendif Description Jf an identifier isn t defined ifndef processes the program that follows You can also describe the followings if defined identifier if defined identifier else is used in a pair with ifndef Do not specify any tokens between else and the line feed You can however insert a comment elifis used in a pair with if ifdef or ifndef endif indicates the end of the range cont
328. rolled by ifndef Always be sure to enter endif when using command ifndef Combinations of ifndef else endif can be nested There is no set limit to the number of levels of nesting but it depends on the amount of available memory Cannot use the sizeof operator cast operator or variables in a constant expression REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 193 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications include Function Takes in the specified file Format G include lt file name gt 2 include file name 8 include identifier Description 1 Takes in lt file name gt from the directory specified by nc308 s command line option I Searches lt file name gt from the directory specified by environment variable INC308 if it s not found 2 Takes in file name from the current directory Searches file name from the following directory in sequence if it s not found 1 The directory specified by nc308 s startup option I 2 The directory specified by environment variable INC308 3 Ifthe macro expanded identifier is lt file name gt or file name this command takes in that file from the directory according to rules of search 1 or 2 The maximum number of levels of nesting is 40 An include error results if the specified file does not exist line Function Changes the line number in the file Format line integer file name Description
329. ror message Contents of error and corrective action ignore option You specified an option that cannot be in used utl308 Specify a proper option Illegal file extension XXX Extension of input file is illegal Specify a proper file No input x30 file specified No map file specify map file cannot open x30 file file name Map file not found Specify the correct input map file input file cannot be closed Specify the correct input filename Output file cannot be close Specify the correct output filename The extended memory is insufficient Increase the extended memory The filename specified with o already exist Check the output file name The file can be overwritten by specifying fover_write simultaneously with the options cannot close file file name cannot open output file filename not enough memory since filename file exist it makes a standard output Yew eUe ey eye ey ee G 6 2 Warning Messages Table G 8 lists the sbutl utility warning messages and their countermeasures Table G 3 __ sbutl Warning Messages Waming Message Contents of warning and corrective action confllict declare of variable e The variable shown here is declared in multiple files with different storage classes types etc Check how this variable is declared The function shown here is declared in multiple files with different storage classes types etc Check how this function is decl
330. rprets code 0x1A as the end code and ignores any subsequent data REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 247 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library floor Function Calculates an integer borrow value Format include lt math h gt double floor x Method function Argument double x arbitrary real number ReturnValue The real value is truncated to form an integer which is returned as a double type fmod Function Calculates the remainder Format include lt math h gt double fmod x y Method function Argument double x dividend double y divisor ReturnValue Returns a remainder that derives when dividend x is divided by divisor y fprintf Input Output Functions Function Outputs characters with format to the stream Format include lt stdio h gt int fprintf stream format argument Method function Argument FILE _far stream Pointer of stream const char _far format Pointer of the format specifying character string ReturnValue Returns the number of characters output Returns EOF if a hardware error occurs Description Argument is converted to a character string according to format and output to the stream Interprets code 0x1A as the end code and ignores any subsequent data Format is specified in the same way as in printf REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 248 M32C Series C Compiler Package V 5 42 C Compiler E Standard Libr
331. s x Method function Argument double x arbitrary real number ReturnValue Returns the cosine of given real number x handled in units of radian cosh Function Calculates hyperbolic cosine Format include lt math h gt double cosh x Method function Argument double x arbitrary real number ReturnValue Returns the hyperbolic cosine of given real number x REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 242 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library div Function Divides an int type integer and calculates the remainder Format include lt stdlib h gt div_t div number denom Method function Argument int number Dividend int denom Divisor ReturnValue Returns the quotient derived by dividing number by denom and the remainder of the division Description Returns the quotient derived by dividing number by denom and the remainder of the division in structure div_t div tis defined in stdlib h This structure consists of members int quot and int rem REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 243 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library exp Function Calculates exponential function Format include lt math h gt double exp x Method function Argument double x arbitrary real number ReturnValue Returns the calculation result of an exponential function of given real number x REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS
332. s a character from a memory area time h Function Declares the functions necessary to indicate the current calendar time and defines the type REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 2 Standard Function Reference Describes the features and detailed specifications of the standard function library of the compiler E 2 1 Overview of Standard Library NC308 has 119 Standard Library items Each function can be classified into one of the following 11 categories according to its function 1 String Handling Functions Functions to copy and compare character strings etc 2 Character Handling Functions Functions to judge letters and decimal characters etc and to covert uppercase to lowercase and vice versa 3 I O Functions Functions to input and output characters and character strings These include functions for formatted I O and character string manipulation 4 Memory Management Functions Functions for dynamically securing and releasing memory areas 5 Memory Manipulation Functions Functions to copy set and compare memory areas 6 Execution Control Functions Functions to execute and terminate programs and for jumping from the currently executing function to another function 7 Mathematical Functions These functions require time e Therefore pay attention to the use of the watchdog timer 8 Integer Arithmetic Functions Functions for perf
333. s called as an ordinary function Always be sure to define an inline function before using it inline function s address used An attempt is made to reference the address of an inline function Do not use the address of an inline function inline function s body is not declared previously Uey The body of an inline function is not defined Using an inline function define the function body prior to the function call inline function functionname is e The recursive call of an in line function cannot be carried recursion out gt Using an inline function No recursive interrupt function called e The function specified by pragma INTERRUPT is called Be careful not to call an interrupt handling function invalid environment variable e The variable name specified in the environment variable environment variable name NCKIN NCKOUT is specified by other than SJIS and EUC Check the environment variables used invalid function default argument Yel The default argument to the function is incorrect This error occurs when the prototype declaration of the function with default arguments and those in the function definition section do not match Make sure they match invalid push An attempt is made to push void type in function argument etc The type void cannot be pushed invalid operand The operation contains an error Check each expression Also note that the expressions on
334. se letter isprint Checks whether the character is printable including a blank ispunct Checks whether the character is a punctuation character isspace Checks whether the character is a blank tab or new line isupper Checks whether the character is an upper case letter isxdigit Checks whether the character is a hexadecimal character tolower Converts the character from an upper case to a lower case toupper Converts the character from a lower case to an upper case errno h Function Defines error number REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 219 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library float h Function Defines the limits of internal representation of floating point values The following lists the macros that define the limits of floating point values In NC308 long double types are processed as double types Therefore the limits applying to double types also apply to long double types Macro name Contents Defined value DBL_DIG Maximum number of digits of double type 15 decimal precision DBL_EPSILON Minimum positive value where 2 2204460492503131e 16 1 0 DBL_EPSILON is found not to be 1 0 DBL MANT DIG Maximum number of digits in the mantissa part when a double type floating point value is matched to the radix in its representation 53 DBL MAX Maximum value that a double type variable can take on as value 1 7976931348623157e 308 DBL MAX 10 _EXP
335. sembler 22 Facility to declare functions calling with JSR A instruction 23 Facility to declare functions calling with JSR W instruction 24 Facility to output PAGE 25 Facility to declare Assembler macro function 26 Facility to specify the location of the RAM monitor area You can only specify the above 26 processing functions with pragma If you specify a character string or identifier other than the above after pragma it will be ignored Py default no warning is output if you specify an unsupported pragma function Warnings are only output if you specify the nc308 command line option Wunknown_pragma WUP REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 196 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications undef Function Nullifies an identifier that is defined as macro Format undef identifier Description Nullifies an identifier that is defined as macro The following four identifiers are compiler reserved words Because these identifiers must be permanently valid do not undefine them with undef _ a E E ET Name of source file UNE risiano Current source file line No DATE sssini Date compiled mm dd yyyy MME e s Time compiled hh mm ss C 3 3 Predefined Macros The following macros are predefined in NC308 M16C80 As for the time of M82 option use M32C80 is defined instead and as for the time of M90 option use M32C90 is de
336. set in the environment variable can t open command file e Can not open the command file specified by Specify the correct input file too many options e This error message is not normally displayed It is an internal error gt Compile options cannot be specified exceeding 99 characters Result too large e This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp Too many open files REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 316 M32C Series C Compiler Package V 5 42 C Compiler F Error Messages F 3 cpp308 Error Messages Table F3 to Table F5 list the error messages output by the cpp308 preprocessor and their countermeasures Table F 3 cpp308 Error Messages 1 3 NO Error message Description and countermeasure 1 illegal command option Input filename specified twice Specify the input filename once only The same name was specified for both input and output files Specify different names for input and output files Output filename specified twice Specify the output filename once only The command line ends with the o option Specify the name of the output file after the o option The I option specifying the include file path exceeds the limit Specify the I option 8 times or less The command line ends with the I option Specify the name of a
337. sing of assembler functions 1 Restore the registers that have been saved during entry processing of functions 2 If you modified the B and U flags within the function restore the flag register from the stack 3 Write the RTS instruction Do not change the contents of the SB and FB registers in the assembler function If the contents of the SB and FB registers are changed save them to the stack at the entry to the function then restore their values from the stack at the exit of the function Figure 3 16 is an example of how to code an assembler function In this example the section name is program which is the same as the section name output by NC308 section program 1 glb _asm_func 2 _asm_func 3 pushc FLG 4 pushm R3 R1 5 mov l SYM1 R3R1 popm R3 R1 6 popc FLG 7 rts 8 END Figure 3 16 Example Coding of Assembler Function 5 Do not change the contents of B and U ao in the assembler Kimen REJ10J2057 0200 Rev 2 00 2010 04 01 A RENESAS 55 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique b Returning Return Values from Assembler Functions When returning values from an assembler function to a C language program registers can be used through which to return the values for the integer pointer and floating point types Table 3 2 lists the rules on calls regarding return values Figure 3 17 shows an example of how to write an assembl
338. size 2 offset 10 H REGISTERARG x size 2 REGISTER RO HHH ARG Size 4 Auto Size 2 Context Size 8 align ine 13 C_ SRC glb func func enter 02H 7 mov w RO 2 FB x x ine 16 HHHC_SRC SUM X Y Z mov w 2 FB RO x add w 8 FB RO y add w 10 FB RO z mov w RO 2 FB sum _line 17 HHC_SRC return sum mov w 2 FB RO sum lt 8 exitd 9 E2 END Figure D 16 Assembly language sample program 2 Figure D 16 to D 18 below show stack and register transitions in each processing in Figure D 15 Processing in 1 2 entry processing of function main is shown in Figure D 16 Processing 3 4 5 6 7 processing to call function func and construct stack frames used in function func is shown in Figure D 17 Processing 8 gt 9 10 11 processing to return from function func to function main is shown in Figure D 18 REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 212 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules lt SP Variable i Variable j Variable k lt FB OLD FB Stack usage state for Stack usage state of 2 start of 1 main lt sP Figure D 17 Entry processing of function main REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 213 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules lt Sp Argument y j Argument Z k
339. sons that the for statement is revolved 3 The assembler code to description of substance of the static function which became inline function treatment is always generated 4 About a function it is compulsorily In treating as an inline function it is in a function Please make an inline declaration 5 The enum type may not be referenced correctly in some debugger 6 A function prototype must always be expressly written Without a prototype declaration the compiler may not be able to generate the correct code 7 The debug information of the type double is processed as the type float So the data of the type double is displayed as the type float on C watch window and global window of Debug tool 8 When far type pointers are used to indirectly access memory dynamically allocated using the malloc function etc or ROM data mapped to the far area be sure that the data is not accessed spanning a 64K bytes boundary 9 If the divide operation results in an overflow the compiler may operate differently than stipulated in ANSI 10 When specifying an inline storage class for a function be sure that inline storage class and this body definition are written in the same file where the function is written 11 No structures or unions can be used as the parameter of an inline function If this is attempted a compilation error occurs 12 No indirect calls of an inline function can be made If this is attempted a compilation error
340. specifying as308 and 1n308 options Table A 11 Assemble and Link Options Option Function as308A lt Option gt Specifies options for the as308 link command If you specify two or more options enclose them in double quotes In308A lt Option gt Specifies options for the In308 assemble command If you specify two or more options enclose them in double quotes as308 Option Assemble link option Function Specifies as308 assemble command options If you specify two or more options enclose them in double quotes Syntax nc308A as308A option LAoption2 A lt C source file gt Notes Do not specify the as308 options C M O mode60p T V or X In308 Option Assemble link option Function Specifies options for the ln308 link command You can specify a maximum of four options If you specify two or more options enclose them in double quotes Syntax nc308A 1n308A option 1Aoption2 A lt C source file name gt Notes Do not specify the In308 options G O ORDER L T V or file REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 100 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 3 Notes on Command Line Options A 3 1 Coding Command Line Options The NC308 command line options differ according to whether they are written in uppercase or lowercase letters Some options will not work if they are specified in the wrong case
341. ssed as the type float So the data of the type double is displayed as the type float on C watch window and global window of Debug tool 7 When far type pointers are used to indirectly access memory dynamically allocated using the malloc function etc or ROM data mapped to the far area be sure that the data is not accessed spanning a 64K bytes boundary 8 If the divide operation results in an overflow the compiler may operate REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 72 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference differently than stipulated in ANSI REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 73 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference OS MAX OSM Optimization Function Places priority on speed for the optimization performed Explanation 1 The compile options listed below are enabled 04 OS Oforward_function_to_inline OFFTD Oglb_jmp OGJ Oloop_unroll 10 OLU 10 Ostatic_to_inline OSTI Osp_adjust OSA fehar_enumerator fCE fdouble_32 fD32 fsmall_array fSA J fuse _DIV fUD 2 If this option is used in the integrated development environment or High performance Embeded Workshop be sure to enable Size or speed on the C tab of the Renesas M32C Standard Toolchain and then select ROM size to the minimum Notes 1 Please make sure to specify link option JOPT 2 The ROM size increases for rea
342. ssion gt gt expression Relational expressions expression expression lt expression expression gt expression expression lt expression expression gt expression Equivalence expression expression expression expression expression Bitwise AND expression amp expression Bitwise XOR expression expression Bitwise OR expression expression Logical AND expression amp amp expression Logical OR expression expression Conditional expression expression expression expression REJ10J2057 0200 Rev 2 00 2010 04 01 183 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications TableC 11 Types of Expressions and Their Elements 2 2 Type of expression Elements of expression Assign expression monadic expression expression monadic expression expression monadic expression expression monadic expression expression monadic expression expression monadic expression lt lt expression monadic expression gt gt expression monadic expression amp expression monadic expression expression monadic expression expression assignment expression Comma operator expression monadic expression C 2 4 Declaration There are two types of declaration o Variable Declaration e Function Declaration a Variable Declaration Use the format shown in Figure
343. stores it in the buffer This is repeated by the number of times specified in count Ifthe end of the stream is encountered before the data specified in count has been input this function returns the number of data items read up to the end of the stream Interprets code 0x1A as the end code and ignores any subsequent data free Memory Management Function Function Frees the allocated memory area Format include lt stdlib h gt void free cp Method function Argument void _far cp Pointer to the memory area to be freed ReturnValue No value is returned Description Frees memory areas previously allocated with malloc or calloc REJ10J2057 0200 Rev 2 00 2010 04 01 Noprocessing is performed if you specify NULL in the parameter 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler E Standard Library frexp Mathematical Functions Function Divides floating point number into mantissa and exponent parts Format include lt math h gt double frexp x prexp Method function Argument double x float point number int _far prexp Pointer to an area for storing a 2 based exponent ReturnValue Returns the floating point number x mantissa part fscanf Input Output Function Function Reads characters with format from the stream Format include lt stdio h gt int fscanf stream format argument Method function Argument FILE _far stream Pointer of stream const char _far format Pointer of
344. sts character handling functions Table E 3 Character Handling Functions Function Contents Reentrant isalnum Checks whether the character is an alphabet or numeral O isalpha Checks whether the character is an alphabet O iscntrl Checks whether the character is a control character O isdigit Checks whether the character is a numeral O isgraph Checks whether the character is printable except a blank O islower Checks whether the character is a lower case letter O isprint Checks whether the character is printable including a blank o ispunct Checks whether the character is a punctuation character o isspace Checks whether the character is a blank tab or new line o isupper Checks whether the character is an upper case letter 0 isxdigit Checks whether the character is a hexadecimal character o tolower Converts the character from an upper case to a lowercase fe toupper Converts the character from a lower case to an uppercase O REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 230 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library c Input Output Functions The following lists Input Output functions Table E 4 Input Output Functions Type Function Contents Reentrant Initialize init Initializes M16C series s input outputs x clearerror Initializes clears error status specifiers
345. sumption that the SB register will be initialized after reset and will thereafter be used as a fixed quantity REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 141 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference i ses ma SECTION Change section name Function Changes the names of sections generated by NC308 Syntax pragma SECTION section name new section nam Description Specifying the program section data section and rom section in a pragma SECTION declaration changes the section names of all subsequent functions Specifying a bss section in a pragma SECTION declaration changes the names of all data sections defined in that file If you need to add or change section names after using this function to change section names change initialization etc in the startup program for the respective sections The program data rom and bss sections can have their names changed a number of times in one and the same file All other sections cannot have their names changed twice or more Example C source program pragma SECTION program prol lt Changes name of program section to pro1 void func void remainder omitted Assembly language source program 4 FUNCTION func section prol lt Maps to pro1 section _file smp c line 9 glb _func _func Change name of data section from data to data1 pragma SECTION data datai int i lt Maps to data1_NE section
346. t const char _far s1 Pointer to the first character string to be compared const char _far s2 Pointer to the second character string to be compared size_t n Number of characters to be compared ReturnValue ReturnValue 0 The two character strings are equal ReturnValue gt 0 The first character string s1 is greater than the other ReturnValue lt 0 The second character string s2 is greater than the other Description Compares each byte of n characters of two character strings ending with NULL When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strncpy String Handling Function Function Copies a character string n characters Format include lt string h gt char _far strncpy s1 s2 n Method function Argument char _far s1 Pointer to the character string to be copied to const char _far s2 Pointer to the character string to be copied from size_t n Number of characters to be copied ReturnValue Returns a pointer to the character string at the destination of copy Description Copies n characters from character string s2 to area s1 If character string REJ10J2057 0200 Rev 2 00 2010 04 01 s2 contains more characters than specified in n they are not copied and O0 is not appended Conversely if s2 contains fewer characters than specified in n O s are appended to the end of the copied charact
347. t express character t horizontal tab T express character v vertical tab express character d Character Literals Character literals are written in double quote marks as in character string The extended notation shown in TableC 7 for character constants can also be used for character literals e Operators NC308 can interpret the operators shown in TableC 8 TableC 8 Operators List monadic operator logical operator amp amp binary operator conditional operator comma operator address operator amp pointer operator bitwise operator lt lt assignment operators gt gt amp re amp relational operators gt F lt A gt lt lt lt gt gt sizeof operator sizeof l REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS 180 M32C Series C Compiler Package V 5 42 C Compiler C Overview of C Language Specifications f Punctuators NC308 interprets the followings as punctuators e e e e od 5 g Comment Comments are enclosed between and They cannot be nested Comments are enclosed between and the end of line C 2 2 Type a Data Type NC308 supports the following data type character type integral type structure union enumerator type void floating type b Qualified Type N
348. t specifying this option is generated the compiler assembler and linkage editor do not output any warning or error message REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 87 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference fnot_address volatile fNAV Modify generated code Function Does not handle the global variables specified by pragma ADDRESS or the static variables declared outside a function as those that are specified by volatile Supplement If I O variables are optimized in the same way as for variables in RAM the compiler may not operate as expected This can be avoided by specifying volatile for the I O variables Normally pragma ADDRESS or pragma EQU operates on I O variables so that even though volatile may not actually be specified the compiler processes them assuming volatile is specified This option suppresses such processing Notes You do not normally need to use this option fnot_reserve_asm fNRA Modify generated code Function Removes asm from the list of reserved words Supplement _asm that has the same function is handled as a reserved word fnot_reserve_far_and_near FNRFAN Modify generated code Function Removes far and near from list of reserved words Supplement _far and _near that has the same function is handled as a reserved word fnot_reserve_inline fNRI Modify generated code Function Does not handle inline as a reserved word
349. t field type is written with the amp operator Do not use the amp operator to write the bit field type can t get inline function s address by amp operator The amp operator is written in an inline function Do not use the amp operator in an inline function can t get size of bitfield The bit field type is written with the sizeof operator Do not use the sizeof operator to write the bitfield type can t get void value ey ee ee An attempt is made to get void type data as in cases where the right side of an assignment expression is the void type Check the data type can t output to filename Yel The file cannot be wrote Check the rest of disk capacity or access privileges of the file can t open filename The file cannot be opened Check the permission of the file REJ10J2057 0200 Rev 2 00 2010 04 01 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages Table F 9 ccom308 Error Messages 3 13 Error message Description and countermeasure cannot refer to the range outside of the stack frame A location outside the stack frame area is referenced Reference the correct location can t set argument The type of an actual argument does not match prototype declaration The argument cannot be set in a register argument Correct mismatch of the type case value is duplicated Uey The value of case is used more than one time
350. t significant 16 long bits returned by storing in R2 register far pointer double Values are stored in 16 bits beginning with the high order bits sequentially in long double order of registers R3 R2 R1 and RO as they are returned long long Values are stored in 16 bits beginning with the high order bits sequentially in order of registers R3 R1 R2 and RO as they are returned Structure Immediately before the function call save the far address for the area for storing Union the return value to the stack Before execution returns from the called function that function writes the return value to the area indicated by the far address saved to the stack D 3 2 Rules on Argument Transfer NC308 uses registers or stack to pass arguments to a function 1 Passing arguments via register When the conditions below are met the system uses the corresponding Registers Used listed in Table D 5 to pass arguments Function is prototype declared and the type of argument is known when calling the function o Variable argument is not used in prototype declaration o For the type of the argument of a function the Argument and Type of Argument in Table D 5 are matched Table D 5 Rules on Argument Transfer via Register NC308 Argument First Argument Registers Used First argument char type Bool type ROL register int type RO register near pointer type 1 NC308 uses a viarregister transfer only when ente
351. t the type of microcomputer used For details refer to the user s manual included with your microcomputer 1 When setting up the interrupt vector table in sect308 inc For programs that use interrupt processing change the interrupt vector table for the vector section in sect308 inc Figure 2 27 shows an example interrupt vector table variable vector section section vector ROMDATA variable vector table org VECTOR_ADR lword dummy_int BRK software int 0 omitted word dummy_int DMAO software int 8 word dummy_int DMA1 software int 9 word dummy_int DMA2 software int 10 omitted Jword dummy_int uart1 trance software int 19 word dummy_int uart1 receive software int 20 word dummy_int TIMER BO software int 21 omitted word dummy_int INT5 software int 26 word dummy_int INT4 software int 27 omitted word dummy_int uart2 trance NACK software int 33 word dummy_int uart2 receive ACK software int 34 omitted Iword dummy_int software int 63 dummy_int is a dummy interrupt processing function Figure 2 27 Interrupt Vector Address Table REJ10J2057 0200 Rev 1 00 2010 04 01 RENESAS 44 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler The contents of the interrupt vectors varies according to the machine in the M16C 80 series See the User Manual for your machine for details Change the interrupt vector address table as follows 1 Ext
352. t type is not the type declared in prototype declaration Check the argument type 2tENESAS M32C Series C Compiler Package V 5 42 C Compiler F Error Messages REJ10J2057 0200 Rev 2 00 2010 04 01 339 Table F 25 ccom308 Waming Messages 6 9 Waming message Description and countermeasure meaningless statements deleted in e Meaningless statements were deleted during optimize phase optimization Delete meaningless statements meaningless statement The tail of a statement is You may confuse with Check on it mismatch function pointer assignment ey ey The address of a function having a register argument is substituted for a pointer to a function that does not have a register argument i e a nonprototyped function Change the declaration of a pointer variable for function to a prototype declaration multi character character constant A character constant consisting of two characters or more is used Use a wide character L xx when two or more characters are required near far is conflict beyond over typedef The type defined by specifying near far is again defined by specifying near far when referencing it Write the type specifier correctly No hex digit The hex constant contains some character that cannot be used in hex notation Use numerals 0 to 9 and alphabets A to F and a to f to describe hex constants No initialized of variable name It is probable that th
353. tem performs optimization for the standard functions This optimization can be suppressed by specifying Ono_stdlib Such suppression of optimization is necessary when you use a user function that bear the same name as one of the standard library functions 1 Inline padding of functions Regarding functions strcpy and memcpy the system performs inline padding of functions if the conditions inTable E 13 are met Table E 13 Optimization Conditions for Standard Library Functions Function Name Optimization Condition Description Example strcpy First argument far pointer strepy str sample Second argumentistring constant memcpy First argument far pointer memcpy str sample 6 Second argument far pointer memcpy str fp 6 Third argument constant REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 303 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 3 Modifying Standard Library The NC3808 package includes a sophisticated function library which includes functions such as the scanf and printf T O functions These functions are normally called high level I O functions These high level I O functions are combinations of hardware dependent lowlevel I O functions In M16C 80 series application programs the I O functions may need to be modified according to the target system s hardware This is accomplished by modifying the source file for the standard library This chapter describes how to modif
354. ter string into an unsigned long type integer Format include lt string h gt unsigned long strtoul s endptyr base Method function Argument const char _far s Pointer to the converted character string char _far _far endptr Pointer to the remaining character strings that have not been converted int base Base of values to be read in 0 to 36 Reads the format of integral constant if the base of value is zero ReturnValue ReturnValue OL Does not constitute a number ReturnValue OL Returns the configured number in long type Description When you specify options O8 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization strxfrm Character String Value Convert Functions Function Converts a character string using locale information Format include lt string h gt size_t strxfrm s1 s2 n Method function Argument char _far s1 Pointer to an area for storing a conversion result character string const char _far s2 Pointer to the character string to be converted size_t n Number of bytes converted ReturnValue Returns the number of characters converted Description When you specify options O 3 to 5 OR OS OR_MAX or OS_MAX the system may selects another functions with good code efficiency by optimization REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 296 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library
355. th the end code 0 terminated normally Use this option when you are using the make utility etc and want to stop compile processing when a warning occurs Wundefined_macro WUM Warning Options Function Warns you that undefined macros are used in if REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 98 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Wuninitialize_variable WUV Warning Options Function Outputs a warning for uninitialized auto variables This option is effective even when Wall is specified Supplement If an auto variable is initialized in conditional jump by for example a if or a for statement in the user application the compiler assumes it is not initialized Therefore when this option is used the compiler outputs a warning for it Wunknown_pragma WUP Warning Options Function Outputs warning messages for non supported pragma Supplement By default no alarm is generated even when an unsupported unknown pragma is used When you are using only the NC series compilers use of this option helps to find misspellings in pragma Notes When you are using only the NC series compilers Renesas recommends that this option be always used when compiling REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 99 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference A 2 9 Assemble and Link Options Table A 11 shows the command line options for
356. that can be specified in 256max nc308 command line option I Maximum number of parameters that can be specified in No limit nc308 command line option as308 Maximum number of parameters that can be specified in No limit nc308 command line option n808 Maximum nesting levels of compound statements iteration No limit control structures and selection control structures Maximum nesting levels in conditional compiling No limit Number of pointers modifying declared basic types arrays No limit and function declarators Number of function definitions No limit Number of identifiers with block scope in one block No limit Maximum number of macro identifiers that can be No limit simultaneously defined in one source file Maximum number of macro name replacements No limit Number of logical source lines in input program No limit Maximum number of levels of nesting include files 40max Maximum number of case names in one switch statement No limit with no nesting of switch statement Total number of operators and operands that can be defined No limit in if and elif Size of stack frame that can be secured per functionGn 64 Kbytes max bytes Number of variables that can be defined in pragma No limit ADDRESS Maximum number of levels of nesting parentheses No limit Number of initial values that can be defined when defining No limit variables with initialization expressions Maximum nu
357. that the SB register is used in fixed mode after being initialized by the startup program If you modified the SB register write a statement to restore it at the end of consecutive asm functions as shown in Figure B 38 asm SB 0 asm LDC 0H SB lt SB changed asm MOV W RO _port SB abbreviated asm SB __SB_ asm LDC _SB_ SB lt SB returned to original state Figure B 38 Restoring Modified Static Base SB register e Do not modified the FB register by the asm functions because which use for the stack flame pointer c Notes on Labels The assembler source files generated by NC308 include internal labels in the format shown inFigure B 39 Therefore you should avoid using labels in an asm function that might result in duplicate names Labels consisting of one uppercase letter and one or more numerals Examples A1 C9830 Labels consisting of two or more characters preceded by the underscore _ Examples _ LABEL ___ START Figure B 39 Label Format Prohibited in asm Function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 123 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 3 Description of Japanese Characters NC308 allows you to include Japanese characters in your C source programs This chapter describes how to do so B 3 1 Overview of Japanese Characters In contrast to the letters in the alphabet and other characters represent
358. the debugger s stack trace function gno_reg Suppresses the output of debugging information for register variables REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 18 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler e Optimization Options Table 2 5 shows the command line options for optimizing program execution speed and ROM REJ10J2057 0200 Rev 1 00 2010 04 01 19 capacity Table 2 5 Optimization Option Option Short form Function O 1 5 None Optimization of speed and ROM size OR None Optimization of ROM size OS None Optimization of speed OR_MAX ORM Places priority on ROM size for the optimization performed OS_MAX OSM Places priority on speed for the optimization performed Ocompare_byte_to_word OCBTW Compares consecutive bytes of data at contiguous addresses in words Oconst OC Performs optimization by replacing references to the const qualified external variables with constants Oforward_function_to_inline OFFTI Expands all inline functions in line Oglb_jmp OGI Global jump is optimized Oloop_unroll Joop count OLU Unrolls code as many times as the loop count without revolving the loop statement The loop count can be omitted When omitted this option is applied to a loop count of up to 5 Ono_asmopt ONA Inhibits starting the assembler optimizer aopt308 Ono_bit O
359. the executable files generated by the compiler are mapped to memory by the operating system such as UNIX However with crossenvironment compilers such as NC308 the user must determine the memory mapping With NC308 storage class variables variables with initial values variables without initial values character string data interrupt processing programs and interrupt vector address tables etc are mapped to Micoro Processor series memory as independent sections according to their function The names of sections consist of a base name and attribute as shown below Section Base Name Attribute Figure 2 18 Section Names Table 2 11 shows Section Base Name and Table 2 12 shows Attributes Table 2 11 Section Base Names Section base name Content data Stores data with initial values bss Stores data without initial values rom Stores character strings and data specified in pragma ROM or with the const modifier REJ10J2057 0200 Rev 1 00 2010 04 01 7tENESAS 33 M32C Series C Compiler Package V 5 42 C Compiler 2 Basic Method for Using the Compiler Table 2 12 Section Naming Rules Attribute Meaning Target section base name I Section containing initial values of data data N F S 6 N near attribute data bss rom F far attribute S SBDATA attribute data bss 6 SB16DATA attribute data bss E O E Even data size data bss rom O Odd data size Table 2 13 shows the conte
360. the function specified with the pragma program name function name are the long long type or the double type The long long type and double type cannot be used in the functions specified with the pragma program name function name Use other types pragma PRAGMA name amp function prototype mismatched The function specified by pragma PRAGMAname does not match the contents of argument in prototype declaration Make sure it is matched to the argument in prototype declaration pragma PRAGMA name s argument is struct or union function The struct or union type is specified in the prototype declaration for the function specified by pragma PRAGMA name Specify the int or short type 2 byte pointer type or enumeration type in the prototype declaration pragma PRAGMA name must be declared before use A function specified in the pragma PRAGMAname declaration is defined after call for that function Declare a function before calling it pragma BITADDRESS variable is not _Bool type The variable spcified by pragma BITADDRESS is not _Bool type Use the _Bool type to declare the variable pragma INTCALL function s argument on stack When the body of functions declared in pragma INTCALL are written in C the parameters are passed via the stack When the body of functions declared in pragma INTCALL are written in C specify the parameters are being passed via the stack pragma PARAMETER function
361. tifier Same function as define dsource Generates an assembly language source file extension a30 Short form dS with a C language source list output as a comment Not deleted even after assembling dsource_in_list Short form dSL In addition to the dsource dS function generates an assembly language list file lst E Invokes only preprocess commands and outputs result to standard output Idirectory Specifies the directory containing the file s specified in include You can specify up to 256 directories P Invokes only preprocess commands and creates a file extension i S Creates an assembly language source file extension a30 and ends processing silent Suppresses the copyright message display at startup U predefined macro Undefines the specified predefined macro C Compile driver control Function Creates a relocatable module file extension r30 and finishes processing Notes If this option is specified no absolute module file extension x30 or other file output by ln308 is created 1 If you do not specify command line options c E P or S nc308 finishes at and output files up to the absolute load module file REJ10J2057 0200 Rev 2 00 2010 04 01 61 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference Ddentifier Compile driver control Function The function is the same as the preprocess command d
362. tion Assembler macro functions can be written in a C language program in the same format as C language functions as shown below include lt asmmacro h gt Includes the assembler macro function definition file a 0 char b 20 void func void rmpa_b 0 19 a b asm Macro Function rmpa command Figure B 90 Description Example of Assembler Macro Function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 167 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference B 8 3 Commands that Can be Written by Assembler Macro Function The following shows the assembler commands that can be written using assembler macro functions and their functionality and format as assembler macro functions ABS Function absolute Syntax include lt asmmacro h gt static signed char abs_b signed char val When calculated in 8 bits static signed int abs_w signed int val When calculated in 16 bits DADC Function Returns the result of decimal addition with carry on vall plus val2 Syntax include lt asmmacro h gt static char dadc_b char val1 char val2 When calculated in 8 bits static int dade_w int vall int val2 When calculated in 16 bits DADD Function Returns the result of decimal addition on vall plus val2 Syntax include lt asmmacro h gt static char dadd_b char val1 char val2 When calculated in 8 bits static int dadc_wGnt val1 int
363. tion_name Example pragma SECTION bss nonval_data pragma STRUCT 1 Inhibits the packing of structures with the specified tag Syntax pragma STRUCT structure_tag unpack Example pragma STRUCT TAG1 unpack 2 Arranges members of structures with the specified tag and maps even sized members first Syntax pragma STRUCT structure_tag arrange Example pragma STRUCT TAG arrange pragma MONITORIn Declares that the specified external variable be located in a section used exclusively for the RAM monitor area Syntax pragma MONITORIn external variable name n 1 4 Example pragma MONITOR i pragma MONITOR2 c int i char G 1 In the previous versions words following pragma For example ADDRESS INTERRUPT ASM etc specifying a directive function abbreviate as subcommand needed to be described in uppercase Inthis version subcommand are case independence in which uppercase and lowercase are dered tol ival REJ10J2057 0200 Rev 2 00 2010 04 01 2ENESAS 135 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference b Using Extended Functions for Target Devices Table B 5 Extended Functions for Use with Target Devices 1 Extended function Description pragma ADDRESS Specifies the absolute address of a variable For near variables this specifies the address within the bank Syntax pragma ADDRESS variable name absolute address Example pragma ADDRESS port0 2H pragma BITADDRE
364. tions Reference Horagma SPECIAL Declare a special page subroutine call function Function Declares a special page subroutine call JSRS instruction function Syntax 1 pragma SPECIALAI C A numberA function name 2 pragma SPECIALA C Afunction name A Mumber Description 1 Functions declared using pragma SPECIAL are mapped to addresses created by adding OF0000H to the address set in the special page vector tables and are therefore subject to special page subroutine calls 2 You may specify either C in this declaration By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function 3 You can specify a call number at the time of declaration When the call number is specified the special vector table is automatically generated Rules 1 Functions declared using pragma SPECIAL are mapped to the program_S section Be sure to map the program_S section between OF0000H and OFFFFFH 2 Calls are numbered between 18 and 255 in decimal only 3 As a label SPECIAL calling number is output to the starting address of functions declared using pragma SPECIAL Set this label in the special page subroutine table in the startup file 1 4 If different call numbers are written in the function the call number declared later is effective pragma SPECIAL func vect 20 pragma SPECIAL func vect 30 Call number 30 is effective Figure B 79 Exa
365. tiontroduction Utility utl308 C language source file nc308 cpp308 ccom308 Compiler aopt308 Assembly language Assembler as308 Relocatable object file linker In308 Compile driver nc308 command option Preprosesser Assembler optimizer utl308 SBDATA definition file SPECIAL Page Function definition file SPECIAL Page Vector definition file Software in nc308 package C output file of nc308 Figure G 1 NC308 Processing Flow REJ10J2057 0200 Rev 2 00 2010 04 01 344 2ENESAS M32C Series C Compiler Package V 5 42 C Compiler G The SBDATA declaration amp SPECIAL page Functiontroduction Utility utl308 G 2 Starting utl308 G 2 1 utl308 Command Line Format For starting utl308 you have to specify the information and parameter that required utl808Acommand line option A lt absolute file name gt Prompt lt gt Mandatory item Optional item A Space Delimit multiple command line options with spaces Figure G 2 utl308 Command Line Format Before utl3808 can be used the following startup options of the compiler must both be specified in order to generate an absolute module file extension x30 J finfo option to output an inspector information e g option to output debugging information The following utl308 options are also specified o o option to output of information SBDATA declaration or SPECIAL page Function declaration By
366. to described in the C language source file by prefixing it with _ underbar hence _func_no_proto REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 208 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules HHH FUNCTION main HHH FRAME AUTO sum size 2 offset 2 HH ARG Size 0 Auto Size 2 Context Size 8 align ine 17 C_SRC glb _main _main enter 02H ine 20 C_SRC sum func_proto 1 2 3 l mov w 0001H RO l jsr func_proto l l L add l 04H SP Movw__ _RO 2 FB _ _sum_ _line HHHC SRO sum func_no_proto 1 23 j pushw 0003H 14 push w 0002H push w 0001H l jsr _func_no_proto l add l 06H SP L Movw__ _R0 2 FB _sum___ _line 22 HH C_SRC exitd E3 END Figure D 13 Compile Result of Sample Program sample c 3 Figure D 13 part 13 calls func_proto and part 14 calls func_no_proto REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 209 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 3 4 Interface between Functions Figure D 16 to D 18 show the stack frame structuring and release processing for the program shown in Figure D 14 Figure D 15 shows the assembly language program that is produced when the program shown in Figure D 14 is compiled int func int int int void main void int i 0x1234 lt Argument to func int
367. to a function cannot be used 3 Two or more pragma DMAC cannot be declared to the same register 4 The amp address operator function call operator subscript operator and gt indirection operator cannot be specified to the variable specified by pragma DMAC 5 The variable specified by pragma DMAC is processed as that to which volatile specification is carried out even if there is no volatile specification Example void _far dma0 pragma DMAC dmad DMAO void func void unsigned char buff 1 0 dma0 buff Figure B 73 pragma DMAC Declaration REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 150 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference Horagma INTCALL Declare a function called by the INT instruction Function Declares a function called by a software interrupt by the int instruction Syntax 1 pragma INTCALLAI CJAINT No Aassembler functionname register name registername 2 pragma INTCALLAI C JAINT No AC function name Description This extended function declares the assembler function called by a software interrupt with the INT number When calling an assembler function its parameters are passed via registers e c By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Rules Declaring assembler functions 1 Before a pragma IN
368. troduction to NC308 1 2 NC308 Processing Flow Figure 1 1 illustrates the NC308 processing flow C language source file Compile driver Preprocessor Compiler Assembler Optimizer Assembly language SBDATA definition amp source file SPECIAL Page Stack information Function definiton Utility to use Mapviewer Assembler analysis utility utility utility gensni utl308 genmap cc Vv gt Stack analysis tool MAP Viewer Relocatable file Call Walker Map viewer SBDATA SPECIAL Page Function definition file CL Y Motorola S format file or Imc308 B Intel HEX format file Software in NC308 package _ File processed by NC308 definition file Figure 1 1 NC308 Processing Flow REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 2 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 1 2 1 nc308 nc308 is the executable file of the compile driver By specifying options nc308 can perform the series of operations from compiling to linking You can also specify for the as308 relocatable macro assembler and four for the In308 linkage editor by including the as308 and In308 command line options when you start nc308 1 2 2 cpp308 cpp308 is the executable file for the preprocessor cpp308 processes macros starting with define include etc and performs conditional compiling Gif telse Hendif etc 1 23 ccoms0sg ccom308 is the executable file of the
369. trol registers However the compiler does not recognize the type of any register so should BTSTC or BTSTS instructions be generated for interrupt control registers the assembled program will be different from the one you intend to develop When the O5 optimizing options is used in the program shown below a BTSTC instruction is generated at compilation which prevents an interrupt request bit from being processed correctly resulting in the assembled program performing improper operations C sauce which must not use an optimization option at the time of compile pragma ADDRESS TAOIC 006Ch M16C 80 MCU s Timer AO interrupt control register struct char ILVL 3 char IR 1 An interrupt request bit char dmy 4 TAOIC void wait_until_IR_is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 Please compile after taking the following measures if the manipulation instructions is generated to bit operation of SFR area Make sure that no BTSTC and BTSTS instructions are generated after these side steppings Optimization options other than 05 are used An instruction is directly described in a program using an ASM function REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 70 M32C Series C Compiler Package V 5 42 C Compiler A Command Option Reference VU Optimization Function Optimizes ROM size in
370. val2 When calculated in 16 bits REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 168 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference DIV Function Returns the quotient of a division where the dividend val2 is divided by the divisor val1 with the sign included Syntax include lt asmmacro h gt static signed char div_b signed int val1 signed int val2 calculated in 8 bits with signed static signed int div_w signed int val1 signed long val2 calculated in 16 bits with signed DIVU Function Returns the quotient of a division where the dividend val2 is divided by the divisor val1 with the sign not included Syntax include lt asmmacro h gt unsigned char divu_b unsigned char val1 unsigned int val2 calculated in 8 bits with unsigned unsigned int divu_w unsigned int val1 unsigned long val2 calculated in 16 bits with unsigned DSBB Function Returns the result of decimal subtraction with borrow on val2 minus vall Syntax include lt asmmacro h gt static char dsbb_b char val1 char val2 When calculated in 8 bits static int dsbb_w Gnt vall int val2 When calculated in 16 bits REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 169 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference DSUB Function Returns the result of decimal subtraction with no borrow on val2 minus vall Syntax include lt as
371. valid do not overlap each other the system allocates only one area which is then shared between multiple variables void func void int i j K for i 0 i lt 0 i process scope of i abbreviated for OxFF j lt 0 s f process scope of j abbreviated for k 0 K lt 0 k process scope of k Figure D 20 Example of C Program Tn this example the effective ranges of three auto variables i j and k do not overlap so that a two byte area offset 1 from FB is shared Figure D 21 shows an assembly language source file generated by compiling the program in Figure D 20 44 FUNCTION func HHH FRAME AUTO k size 2 offset 2 1 Ht FRAME AUTO j size 2 offset 2 2 HHH FRAME AUTO i size 2 offset 2 3 section program _file test1 c ine 3 glb _func _func enter 02H remainder omitted As shown by 1 2 and 3 the three auto variables share the FB offset 2 area Figure D 21 Example of Assembly Language Source Program REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 216 M32C Series C Compiler Package V 5 42 C Compiler D C Language Specification Rules D 5 Rules of Escaping of the Register The rules of Escaping of the register when call C function as follows 1 The rules of Escaping of the register when call C function as follows J Register RO Register which use to return value 2 Register which should escaping in the entranc
372. version and of whether optimizing options are used or not When you describe like the following examples as C language description to a SFR area in this compiler may generate the assembler code which carries out operation which is not assumed since the interrupt request bit is not normal pragma ADDRESS TAOIC 006Ch M16C 80 MCU s Timer AO interrupt control register struct char ILVL 3 char IR 1 An interrupt request bit char dmy 4 TAOIC void wait_until_IR_is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 Figure 1 2 C language description to SFR area REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 5 M32C Series C Compiler Package V 5 42 C Compiler 1 Introduction to NC308 1 4 Example Program Development Figure 1 3 shows the flow for the example program development using NC308 The program is described below Items 1 to 4 correspond to the same numbers in Figure 1 3 1 The C source program AA c is compiled using nc308 then assembled using as308 to create the re locatable object file AA r30 2 The startup program ncrt0 a30 and the include file sect308 inc which contains information on the sections are matched to the system by altering the section mapping section size and interrupt vector table settings 3 The modified startup program is assembled to create the relocatable object file ncrt0
373. version are stored as double o h The results of d i o u and x conversion are stored as short int and unsigned short int e If I or h are specified in other than d i 0 u or x conversion they are ignored e L The results of e E f g and G conversion are stored as float REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 282 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library setimp Execution Control Functions Function Saves the environment before a function call Format include lt setjmp h gt int setjmp env Method function Argument jmp_buf env Pointer to the area where environment is saved ReturnValue Returns the numeric value given by the argument of longjmp Description Saves the environment to the area specified in env setlocale Localization Functions Function Sets and searches the locale information of a program Format include lt locale h gt char _far setlocale category locale Method function Argument int category Locale information search section information const char _far locale Pointer to a locale information character string ReturnValue Returns a pointer to a locale information character string Returns NULLif information cannot be set or searched sin Function Calculates sine Format include lt math h gt double sin x Method function Argument double x arbitrary real number ReturnValue Returns the sine of given real number x
374. void func void pragma SECTION data data2 int j Maps to data2 _NE section remainder omitted void sub void remainder omitted Figure B 65 Example Use of pragma SECTION Declaration Supplement When modifying the name of a section note that the section s location attribute e g _NE or _NED is added after the section name REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 142 M32C Series C Compiler Package V 5 42 C Compiler B Extended Functions Reference i ses ma SECTION Change section name Note In NC308WA V3 10 or earlier the data and rom sections as with the bss section could only have their names altered in file units For this reason the programs created with NC308WA V3 10 or earlier require paying attention to the position where pragma SECTION is written String data is output with the rom section name that is last declared pragma STRUCT Control structure mapping Function 1 Inhibits packing of structures 2 Arranges structure members Syntax 1 pragma STRUCT structure_tag unpack 2 pragma STRUCT structure tag arrange Description In NC808 structures are packed For example the members of the structure in Figure and B 66 are arranged in the order declared without any padding Examples struct s Member Type Size Mapped int i name location char c offset int j i int 16 bits 0 8 bits int 16 bits 3 Figure B 66 Example Mapping of Structure Members
375. y character other than those between the circumflex and are legal input characters Storing stops when one of the specified characters is input The target parameter must be a pointer to a character array of sufficient size to store the character string including the null character 0 which is automatically added e n Stores the number of characters already read in format conversion The target parameter must be a pointer to an integer e e E f g G Convert to floating point format If you specify modifier I the target parameter must be a pointer to a double type The default is a pointer to a float type REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 281 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library scant Input Output Functions Description 2 prevents data storage Specifying the asterisk prevents the storage of converted data in the parameter 3 Maximum field width e Specify the maximum number of input characters as a positive decimal integer In any one format conversion the number of characters read will not exceed this number e If before the specified number of characters has been read a space character a character that is true in function isspace or a character other than in the specified format is input reading stops at that character 4 I Lorh e I The results of d i 0 u and x conversion are stored as long int and unsigned long int The results of e E f g and G con
376. y size does not exceed 64 Kbytes explicitly state the size in extern declaration of far type array as shown in Figure 3 8 or add the compile option fsmall_array fSA 2 before compiling This helps to increase the code efficiency of the program extern int far array Size is unknown so subscripts are calculated as 32 bit values extern int far array 10 Size is within 64KB so access is more efficient Figure 3 8 Example extern Declaration of far Array 1 If there is no sign specifier for char type or bitfield structure members they are processed as unsigned 2 When the compile option fsmall_array fSA is specified the compiler assumes an array of an unknown size to be within 64 Kbytes as it REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 50 M32C Series C Compiler Package V 5 42 C Compiler 3 Programing Teqnique c Using Prototype declaration Efficiently NC308 allows you to accomplish an efficient function call by declaring the prototype of a function This means that unless a function is declared of its prototype in NC308 arguments of that function are placed on the stack following the rules listed in Table 3 1 when calling the function Table 3 1 Rules for Using Stack for Parameters Data type s Rules for pushing onto stack char Expanded into the int type when stacked signed char float Expanded into the double type when stacked otherwise Not expanded when stacked For this
377. y the NC308 standard library to match the target system The entry vedrsion does not come with source files for the standard function library Therefore the standard function library cannot be customized for the entry version E 3 1 Structure of V O Functions As shown in Figure E 1 the I O functions work by calling lower level functions level 2 level 3 from the level 1 function For example fgets calls level 2 fgetc and fgetc calls a level 3 function Only the lowest level 3 functions are hardware dependent I O port dependent in the Micro Processor If your application program uses an I O function you may need to modify the source files for the level 3 functions to match the system Input function Output function Figure E 1 Calling Relationship of I O Functions REJ10J2057 0200 Rev 2 00 2010 04 01 stENESAS 304 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library E 3 2 Sequence of Modifying I O Functions Figure E 2 outlines how to modify the I O functions to match the target system a Modify the level 3 I O function s Set the stream C Compile the modified source program s Figure E 2 Example Sequence of Modifying I O Functions a Modifying Level 3 I O Function The level 3 I O functions perform 1 byte I O via the M16C 80 series I O ports The level 3 I O functions include _sget and _sput which perform I O via the serial communications circuits UART and _pput wh
378. y value other than 0 if an alphabet Returns 0 if not an alphabet Description Determines the type of character in the parameter iscntrl Character Handling Functions Function Checks whether the character is a control character 0x00 Ox1f 0x7 Format include lt ctype h gt int isentrl c Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a numeral Returns 0 if not a control character Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 RENESAS 256 M32C Series C Compiler Package V 5 42 C Compiler E Standard Library isdigit Character Handling Functions Function Checks whether the character is a numeral 0 to 9 Format include lt ctype h gt int isdigit c Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if a numeral Returns 0 if not a numeral Description Determines the type of character in the parameter isgraph Function Checks whether the character is printable except a blank 0x21 to Ox7e Format include lt ctype h gt int isgraph c Method macro Argument int Character to be checked ReturnValue Returns any value other than 0 if printable Returns 0 if not printable Description Determines the type of character in the parameter REJ10J2057 0200 Rev 2 00 2010 04 01 7tENESAS 257 M32C Series

Download Pdf Manuals

image

Related Search

Related Contents

Diapositiva 1 - Centro Nacional de Registros  2 医療機器の脳線出力について、 医療上その 有用性が捌線の照射に  PROGRAMME DE FORMATION  User manual  ROBINSON LOUNGE CHAIR  Engine Oil Stop Leak / Anti Fuite Huile Moteur  Hampton Bay 52 Ceiling Fan 171-348 User's Manual  TruVision IP Cam Open-Standards User Manual  Mobilités et avancements, mode d`emploi  User Manual - Neurovision Medical Products  

Copyright © All rights reserved.
Failed to retrieve file