Home

M3T-NC30 V.5.10 User`s Manual

image

Contents

1. arbitrary real number ReturnValue The real value is truncated to form an integer which is returned as a double type fmod Mathematical Functions Function Calculates the remainder Format include lt math h gt double fmod x y Method function Argument double x dividend double y 3 divisor ReturnValue Returns a remainder that derives when dividend x is divided by divisor y Appendix E 30 fprintf Appendix E Standard Library Function Format Method Argument ReturnValue Description fputc Input Output Functions Outputs characters with format to the stream include lt stdio h gt int fprintf stream format argument function FILE far stream Pointer of stream const char far format Pointer of the format specifying character string Returns the number of characters output Returns EOF if a hardware error occurs 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 Function Format Method Argument ReturnValue Description Input Output Functions Outputs one character to the stream include lt stdio h gt int foutc c stream function DO eas Character to be output FILE _far stream Pointer of the stream
2. 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 int func _proto int ant 1 2 func proto int i int J Int k return i t 4 k func no proto i 1 J K return 1 7 kj main void int sum ConG procol pal 15 Tune No ProTON fia 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 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 1 However function names are not output for the functions that are specified by pragma INTCALL Appendix D 8 Appendix D C Language Specification Rules FUNCTION func_proto FRAME AUTO FRAME AUTO FRAME ARG REGISTER ARG REGISTER ARG size F AR
3. Figure 1 8 Example Preprocessed C Source File 2 smp i Let s look at the contents of the preprocessed C source file Items 1 to 4 correspond to 1 to 4 in Figures 1 7 and 1 8 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 satis fied and the printf function is output NC30 MANUAL 9 Chapter 1 Introduction to NC30 1 5 3 Assembly Language Source Files The assembly language source file is a file that can be processed by AS30 as a result of the compiler ccom30 converting the preprocess result C source file The output files are assembly language source files with the extension a30 Figures 1 9 and 1 10 are examples of the output files When the nc30 command line option dsource dS is specified the assembly language source files contain the contents of the C source file as comments _ LANG C X XX XX M16C 60 C Compiler OUTPUT ccom30 Version X XX XX COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Compile Start Time Thu April 10 18 40 11 1995 1996 1997 1998 1999 2000 2001 2002 2003 COMMAND_LINE ccom30 smp i o smp a30 dS Normal Optimize ROM size Optimize Speed Optimize Default ROM is Default RAM is
4. LANG C X XX XX REV X M16C 60 C Compiler OUTPUT ccom30 Version X XX XX COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION gt ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RE SERVED ret Compile Start Time Thu April 10 teee0s 1d 1995 1996 1997 1998 1999 2000 2001 Z O7 7 20 03 COMMAND LINE ccom30 smp i o smp a30 dS Normal Optimize OFF ROM size Optimize OFF Speed Optimize OFF Default ROM is far Default RAM is near GLB SB __ SB SB __ FB 0 HH H FUNCTION func HH FUNCTION main HH FRAME AUTO i size 2 offset 4 HH FRAME AUTO S size 2 offset 2 HH ARG Size 0 Auto Size 4 Context Size 5 SECTION program CODE align file smp c align _ line 7 HHC SRC glib main _main enter 04H _ line 9 HH C_SRC s func s mov w 2 FB RO S _line 2 HHHC SRC mov w RO 4 FB _ line 3 H C SRC return i mov w RO R1 add w 0001H RO P line 9 HH C_SRC s func s mov w R1 2 FB S _ line 10 H H HC SRC exitd E1 END lt Inline storage class have codes embedded directly Compile End Time Wed Nov 14 12 16 23 20xx Figure B 54 Compile Result of sample program smp a30 Appendix B 29 Appendix B Extended Functions Reference B 5 3 Restrictions on inline Storage Class When specifying the inline storage class pay attention to the following
5. Write it with a function name A function specified in the pragma pragma name is not declared For functions specified in a pragma pragma name write prototype declaration in advance A function specified in the pragma pragma name is not prototype declared For functions specified in a pragma pragma name write prototype declaration in advance The type of return value for a function specified in the pragma pragma name is invalid gt Make sure the type of return value is any type other than stOsct union or double The switch specified in the pragma pragma name is invalid Write it correctly Appendix F 23 Appendix F Error Messages Table F 22 ccom30 Warning Messages 2 10 Warning message oragma ADDRESS variable initialized ADDRESS ignored pragma ASM line too long then cut pragma directive conflict pragma DP n DATA format error ignored NC79 only pragma JSRA illegal location ignored NC30 NC308 only pragma JSRW illegal location ignored NC30 NC308 only pragma PARAMETER function s address used pragma control for function dupli cate ignored NC30 NC308 only auto Is illegal storage class register is illegal storage class argument is define by typedef typedef ignored assign far pointer to near pointer bank value ignored assignment from const pointer to non const pointer assignment from volatile pointer to non vola
6. gt Delete typedef The bank address will be nullified when substitut ing the far pointer for the near pointer Check the data types near or far The const property is lost by assignment from const pointer to non const pointer Check the statement description If the descrip tion is correct ignore this warning The volatile property is lost by assignment from volatile pointer to non volatile pointer Check the statement description If the descrip tion is correct ignore this warning Appendix F 24 Appendix F Error Messages Table F 23 ccom30 Warning Messages 3 10 Warning message assignment in comparison state ment block level extern variable initialize forbid ignored can t get address from register storage class variable can t get size of bitfield can t get size of function can t get size of function unit size 1 assumed char array initialized by wchar_t string case value is out of range character buffer overflow character constant too long constant variable assignment cyclic or alarm handler always Bank 0 NC77 NC79 only cyclic or alarm handler always load DT NC77 NC79 only Description and countermeasure You put an assignment expression in a compari son statement You may confuse with Check on it An initializer is written in extern variable declara tion in a function Delete the initializer or change the storage class The
7. data pointer gt bitmap Assembly language source program mov w _pointer AO mov w _pointer 2 A1 bclr 3 A1 Change the bank bset 2 A1 lde w A1A0 2 FB Figure B 70 Example Use of pragma EXT4MPTR Declaration Before using this feature check to see if the microcomputer and the system hardware support 4M byte extension space mode Appendix B 42 Appendix B Extended Functions Reference B 7 3 Using Extended Functions for Target Devices NC30 includes the following extended functions for target devices pragma ADDRESS pragma EQU Function Specifies the absolute address of a variable For near variables the specified address is within the bank Syntax pragma ADDRESSAvariable name 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 EQU The format for writing the numeri cal values therefore depends on the assembler as follows 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 A to F precede it with 0 Rules 1 All storage classes such as extern and static for variables specified in pragma AD DRESS are invalid 2 Variables specified in pragma ADDRESS are valid only for variables defined outside the function 3 pragma ADDRESS is v
8. Appendix B 27 Appendix B Extended Functions Reference B 5 inline Function Declaration NC30 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 declared 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 52 shows the format used to declare the inline storage class inlineAtype specifierAfunction Figure B 52 Declaration Format of inline Storage Class Figure B 53 shows an example of declaration of a function int S Inline int func int i lt Prototype declaration of function return i void main Definition of body of function s func s Figure B 53 Example for Declaring inline Storage Class Appendix B 28 Appendix B Extended Functions Reference
9. Returns the output character if output normally Returns EOF if an error occurs Outputs one character to the stream Appendix E 31 Appendix E Standard Library fputs 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 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 stores it in the buffer This is repeated by the number of times specified in count f the 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 s
10. 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 cannot close file file name input file cannot be closed gt Specify the correct input file name cannot open output file file name Output file cannot be close Specify the correct output file name not enough memory The extended memory is insufficient Increase the extended memory since file name file exist it makes The file name specified with o already exist a standard output Check the output file name The file can be overwritten by specifying fover_write simultaneously with the options Appendix G 14 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 G 6 2 Warning Messages Table G 3 lists the sbutl utility warning messages and their countermeasures Table G 3 sbutl Warning Messages Warning Message Contents of warning and corrective action confllict declare of variable name The variable shown here is declared in multiple files with different storage classes types etc Check how this variable is declared confllict declare of function name The function shown here is declared in multiple files with different storage classes types etc Check how this functi
11. go OP Oe i ee ae ae co o N g 10 11 12 13 13 14 15 ld 16 17 18 Description 1 oS Oe OY ae ee N 10 11 12 13 14 15 16 17 18 pragma ROMAvariable name pragma SBDAT AAvariable name pragma SECTIONApredetermined section nameAaltered section name pragma STRUCTAtag name of structureAunpack pragma STRUCTAtag name of structureAarrange pragma EXT4MPTRAname of pointer pragma ADDRESSAvariable nameAabsolute address pragma EQUAvariable name absolute address pragma INTCALLAint No Aassembler function name register name register name pragma INTCALLAint No AC language function name pragma INTERRUPTAI B E Ainterrupt handling function name pragma INTFAinterrupt handling function name pragma PARAMETERAassembler function name register name register name pragma SPECIALAspecial No Afunction name pragma ALMHANDLERaAalarm handler function name pragma CYCHANDLERAcyclic handler function name pragma INTHANDLERAinterrupt handler function name pragma HANDLERAinterrupt handler function name pragma TASKAtask start function name pragma ASM pragma ENDASM pragma JSRAAfunction name pragma JARWAfunction name pragma PAGE Facility to arrange in the rom section Facility to describe variables using SB relative addressing Facility to alter the section base name Facility to control the array of structures Facility to declare pointer for access 4M byte ROM area Facility to specif
12. make lt RET gt Figure E 8 Method of Updating Library Using Modified Source Programs Appendix E 94 Appendix F Error Messages Appendix F Error Messages This appendix describes the error messages and warning messages output by NC30 and their countermeasures F 1 Message Format If during processing NC30 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 nc30 error message Figure F 1 Format of Error Messages from the nc30 Compile Driver Error cpp30 error No filename line No error message Error ccom filename line No error message Fatal ccom filename line No error message 1 Figure F 2 Format of Command Error Messages Warning cpp30 warning No filename line No warning message warning ccom filename line No warning message Figure F 3 Format of Command Warning Messages The following pages list the error messages and their countermeasures cop30 messages are listed according to their Nos The messages output by other programs are listed alpha betically symbols followed by letters 1 Fatal error message This error message is not normally output Please contact nearest Renesas office with details of the message if displayed Appendix F 1 Bee Appendix F Error Messages nc30 Error Messages Tables F 1 and F 2 list the nc30 compile dri
13. Appendix B Extended Functions Reference b Using Extended Functions for Target Devices Table B 4 Extended Functions for Use with Target Devices Extended function Description pragma ADDRESS Specifies the absolute address of a variable For near variables pragma EQU this specifies the address within the bank Syntax pragma ADDRESSAvariable nameAabsolute address Example pragma ADDRESS port0O 2H X oragma EQU can also be used for maintaining compatibility with C77 pragma INTCALL Declares a function written in assembler called in a software in terrupt int instruction syntax pragma INTCALL AINT No Afunction name register name Example pragma INTCALL 25 func RO R1 Syntax pragma INTCALL INT No function name Example pragma INTCALL 25 func k 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 pragma INTF This declaration causes code to perform a procedure for the in terrupt 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 sav ing it to a stack when calling the function Syntax pragma INTERRUPTA B E Aiterrupt handling function name Example pragma INTERRUPT int_func Example pragma INTERRUPT B int_func Example pragma INTERRUPT E int_func X pr
14. FB FUNCTION main FRAME AUTO offset 2 section program _ file smp c _ line 6 i C_SRC sgl _main enter _ line 8 t C_SRC Figure 1 9 Example Assembly Language Source File smp a30 1 2 NC30 MANUAL 10 Chapter 1 Introduction to NC30 mov W 0000H 2 FB flag _ line 11 C_SRC princet ilag d n flag e2 push w 2 FB flag push w T0 gt gt 16 push w ___TO amp OFFFFH Tee _printf add b 06H SP line 13 i C SRC exitd omitted GL _sscanf gb _scanf GLb _fscanf glb _sprintf glb _fprintf glb _printf omitted SECTION rom_FO ROMDATA TOX byte 66H A e byte 6cH Soesi byte 61H va byte 67H gt g byte 20H noan byte 3dH byte 20H ae byte 25H T3 omitted END Compile End Time Thu May 5 18 40 11 2000 Figure 1 10 Example Assembly Language Source File smp a30 2 2 Let s look at the contents of the assembly language source files Items 1 to 2 corre spond to 1 to 2 in Figure 1 9 and 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 nc30 command line option dsource dS is specified shows the contents of the C source file s as comments NC30 MANUAL 11 2 1 2 1 1 Basic Method for Using the Compiler Chapter 2 Basic Method for Using the Compiler Chapter 2 This chapter desc
15. Function Format Method Argument Input Output Functions Reads characters with format from stdin include lt stdio h gt include lt ctype h gt int scanf format argument function 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 I L or h Jconversion specification character Example format 5ld ReturnValue Returns the number of data entries stored in each argument Description Returns EOF if EOF is input from stdin as data 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 Appendix E 60 Appendix E Standard Library Specifying format in scanf form 1 Conversion specification symbol d Converts a signed decimal The target parameter must be a pointer to an integer i Converts signed decimal octal and hexadecimal input Octals start with 0 Hexadecimals start with Ox or OX The target parameter must be a pointer to an integer u Converts an un
16. 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 Appendix E 28 Appendix E Standard Library 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 ME e 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 EE A TAT new line character n AE n 1 characters EEIE EE end of stream A null character 0 is appended to the end of the input character string The new line character n is stored as is Interprets code 0x1A as the end code and ignores any subsequent data Appendix E 29 Appendix E Standard Library floor Mathematical Functions Function Calculates an integer borrow value Format include lt math h gt double floor x Method function Argument double x
17. 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 1 If the variables need to be forcibly mapped to registers using the register qualifier specify the option fenable_register fER when compiling Appendix B 14 Appendix 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 format The following types are supported for variable names Variable name Array name integer Struct name member name not including bit field members int idata int a 3 struct TAG int i int k S void func asm MOV W RO idata asm MOV W RO a 2 asm MOV W_ RO s i Remainder omitted Figure B 27 Description example for specifying FB offset See Figure B 28 for examples of referencing extern and static variables Appendix B 15 Appendix B Extended Functions Reference C source file extern int ext_ val extern variable func static int s_val
18. Wnesting_comment Outputs a warning for a comment including Wccom_max_warnings WCMW This option allows you to specify an upper limit for the Warning Count number of warnings output by ccoms0 Wall None Displays message for all detectable warnings however not including alarms output by Wlarge_to_small and Wno_used_argument Wmake_tagfile WMT Outputs error messages to the tag file of source file by source file Wuninitialize_variable WUV Outputs a warning about auto variables that have not been initialized Wlarge_to_small WLTS_ Outputs a warning about the tacit transfer of variables in pe descending sequence of size 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 Wno_used_argument Outputs a warning for unused argument of functions i Assemble and Link Options Table 2 9 shows the command line options for specifying as30 and In30 options Table 2 9 Assemble and Link Options Option Function as30A lt option gt Specifies options for the as30 link command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified IN80A lt option gt Specifies options for the In30 assemble command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified NC30 MANUA
19. 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 NC30 MANUAL 55 i222 Chapter 3 Programming Technique 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 lan guage specifications For example the code shown in Figure 3 9 does not initialize the variable which must therefore be initialized to 0 by clearing the bss area during the startup routine static int i Figure 3 9 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 N_BZERO bss_SE_top bss_SE N_BZERO bss_SO_top bss_SO N_BZERO bss_NE_top bss_NE N_BZERO bss_NO_top bss_NO omitted BZERO bss_FE_top bss_FE BZERO bss _FO top bss_FO Figure 3 10 Commenting Out Routine to Clear bss Area 1 The external variables in RAM which do not have initial values are referred to as bss NC30 MANUAL 56 Chapter 3 Programming Technique 3 3 Linking Assembly Language Prog
20. cessed Notes If oragma 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 fover write fFOW Outputs SBDATA declaration or SPECIAL function declaration to a file Function Does not check whether the output file specified by already exists If such file exists it is overwritten This option must be specified along with the option Appendix G 9 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 G 3 Notes In using utl30 sosym declared in files described in assembler cannot be counted For this reason you need to make adjustment if a sosym declared in assembler is present so that the results effected after having executed utl30 are put in the SB area In using utl30 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 utl30 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 utl30 Types of variables are as follows 1variables of Boo
21. dsource function generates an assembly language list file Ist Appendix A 7 Appendix 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 ofilename Specifies the name s of the file s absolute module file map file etc generated by In30 This option can also be used to specify the destina tion directory This option can also be used to specify the file name includes the path Do not specify the filename extension dir Specifies the destination directory of the file s absolute module file map file etc generated by In30 0 filename Function Specifies the name s of the file s absolute module file map file etc gener ated by In30 This option can also be used to specify the file name includes the path You must NOT specify the filename extension Syntax nc30A o filenameA lt C source file gt Execution nc30 o test sample ncrt0 a30 sample c example M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncrt0 a30 sample c cd test ls total 65 drwxr x 2 toolusr 512 Aug 17 16 13 drwxrwxrwx 11 toolusr 3584 Aug 17 16 14 EW 1 toolusr 44040 Aug 17 16 14 sample x30 In this
22. fied fconst_not ROM f CNR Does not handle the types specified by const as ROM data 1 char type data or signed char type data evaluated under ANSI rules is always extended to int type data This is because operations on char types c1 c2 2 c3 for example would other wise result in an overflow and failure to obtain the intended result NC30 MANUAL 17 Chapter 2 Basic Method for Using the Compiler Table 2 6 2 2 Generated Code Modification Options Option Short form Description fnot_address volatile fNAV Does not regard the variables specified by pragma ADDRESS pragma EQU as those specified by volatile fsmall_array fSA When referencing a far type array this option cal culates subscripts in 16 bits if the total size of the array is within 64K bytes In the entry version this option cannot be speci fied fenable_register Make register storage class available fno_align fNA Does not align the start address of the function In the entry version this option cannot be speci fied FUSRW None Changes the default instruction for calling func tions to JSR W fbit fB Outputs a 1 bit manipulate instruction to all vari ables arranged in the near area fno_carry fNC Suppresses carry flag addition when data is indi ae rectly accessed using far type pointers fauto_128 Limits the usable stack frame to 128 byte fuse_DIV fUD This option changes generated code for divide operation In the entry version thi
23. invalid operands invalid operands invalid operands invalid operands invalid operands invalid lt lt operands invalid lt operands invalid operands invalid operands invalid operands invalid gt operands invalid gt gt operands Description and countermeasure The expression on the left side of is nota function gt Write a function or a pointer to the function in the left side expression of if multiplication the operation contains an error If is the pointer operator the right side expres sion is not pointer type gt 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 The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operator contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The lt lt operation contai
24. section Switch_table ROMDATA Switch_table_top section ODE Section org must be set internal ROM area p l SeCction Figure 2 28 program interrupt program_s Listing of sect30 inc in Single Chip Mode 2 3 NC30 MANUAL 44 Chapter 2 Basic Method for Using the Compiler section vector org VECTOR_ADR if M62TYPE lworqd lword lword lword lword omitted lword lword dummy_ dummy_ dummy _ dummy _ dummy_ in in in in in a LC a UC A UC a UL a CL dummy_int dummy_int variable vector table BRK vector 0 vector 1 vector 2 vector 3 int3 for user vector 4 vector 62 vector 63 macro is defined in ncrt0 a30 Format SPECIAL number SPECIAL 255 SPECIAL 254 omitted SPECIAL 19 SPECIAL 18 org Offfdch UDI lword OVER_FLOW lword BRKI lword ADDRESS_MATCH lword SINGLE STEP lword WDT lword DBC lword NMI lword RESET lword dummy_ dummy_ dummy_ dummy_ dummy_ dummy_ dummy_ dummy_ Stace in in in in in in in in LC LC UC LC 4 LC a CL Be UL UC BE TT Panay eee ae Te NS AE FD Ue Gea PRO RN ROE Te MENS AC Tag E TORO Pe OR RINE OE age NE PORE NL AST TNS TN NS Ne Pa ae Me I PR Re aaa TN IR PN Sage CIN IR 7 y C Compiler for M16C 60 20 XXXX XXXX XXXX COPYRIGH
25. A2 A3 A4 BO Bl B2 for user for user for user for user user vector user vector user vector user vector for user vector 29 lt UARTO lt UARTO lt UARTI i am n D Wa KH a oe es ee ee CITE tt ty x ct D BKB D w send interrupt receive interrupt send interrupt receive interrupt terrupt AO Al A2 A3 A4 BO Bl B2 d terrup 4 terrup 4 terrup 4 terrup terrupt terrupt terrupt terrupt CL 4 UL LC 4 UL CL 4 LU UL 4 UL UC p e dummy_int p dummy_int d d External interrupt External interrupt INTL INT2 lword lword for user vector 30 for user vector 31 e e e e e e e e e e e e dummy_int is a dummy interrupt processing function Figure 2 30 Interrupt Vector Address Table sect30 inc The contents of the interrupt vectors varies according to the machine in the M16C 60 series See the User Manual for your machine for details Change the interrupt vector address table as follows 1 Externally declare the interrupt processing function in the GLB as30 pseudo in struction The labels of functions created by NC30 are preceded by the underscore _ Therefore the names of interrupt processing functions declared here should also be preceded by the underscore 2 Replace the name
26. Appendix C Overview of C Language Specifications 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 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 se quences Hexadecimal values are indicated by preceding the value with x Octal values are indicated by preceding the value with Table C 8 Extended Notation List Notation Escape sequence single quote i uotation mark ackslash uestion mark a b ackspace f orm feed n ine feed r return t horizontal tab v vertical tab d Character Literals Character literals are written in double quote marks as in character string The ex tended notation shown in Table C 8 for character constants can also be used for character literals Appendix C 6 Notation Trigraph sequence constant octal xconstant hexadecimal 7X 7 7 dd lt m gt r express express express express express express express express express character character character A character character character character Character character Appendix C Overview of
27. Argument double x arbitrary real number ReturnValue Returns the hyperbolic sine of given real number x Appendix E 64 Appendix E Standard Library sprintf Input Output Functions Function Writes text with format to a character string Format 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 Mathematical Functions Function Calculates the square root of a numeric value Format include lt math h gt double sart x Method function Argument double x arbitrary real number ReturnValue Returns the square root of given real number x Appendix E 65 Appendix E Standard Library srand Integer Arithmetic Functions Function mparts seed to a pseudo random number generating routine Format include lt stdlib h gt void srand seed Method 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 sscanft Input Output Functi
28. CENESAS NC30 V 5 20 C Compiler for R8C Tiny M16C 60 30 20 10 Series User s Manual Rev 1 00 Sep 1 2003 Renesas Technology REJ10J0225 0100Z www renesas com Microsoft MS DOS Windows and Windows NT are registered trademarks of Microsoft Corporation in the U S and other countries Sun Java and all Java based trademarks and logos are trademarks or registered trademarks of Sun Microsystems Inc in the U S or other countries and are used under license Linux is a trademark of Linus Torvalds Turbolinux and its logo are trademarks of Turbolinux Inc IBM and AT are registered trademarks of International Business Machines Corporation Intel and Pentium are registered trademarks of Intel Corporation Adobe Acrobat and Acrobat Reader are trademarks of Adobe Systems Incorporated All other brand and product names are trademarks registered trademarks or service marks of their respective holders Keep safety first in your circuit designs Renesas Technology Corporation and Renesas Solutions Corporation put the maximum effort into making semiconductor products better and more reliable but there is always the possibility that trouble may occur with them Trouble with semiconductors may lead to personal injury fire or property damage Remember to give due consideration to safety when making your circuit designs with appropriate measures such as i placement of substitutive auxiliary circuits ii use of
29. MS Windows 95 98 NT version The memory area is insufficient Increase the memory or the swap area Appendix F 18 Appendix F Error Messages Table F 18 ccom30 Error Messages 11 14 Error message not have long char not have long float not have long short not static initializer for variable name not struct or union type redeclare of variable name redeclare of enumerator redefine function function name redefinition tag of enum tag name redefinition tag of struct tag name redefinition tag of union tag name reinitialized of variable name restrict is duplicate size of incomplete array type size of incomplete type size of void Description and countermeasure Type specifiers long and char are simultaneously used Write the type specifier correctly Type specifiers long and float are simultaneously used Write the type specifier correctly Type specifiers long and short are simulta neously used Write the type specifier correctly The initialize expression of static variable con tains an error This is because the initialize ex pression is a function call for example Write the initialize expression correctly 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 An variable name has been declared twice Change the name for either of the
30. 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 Appendix E 36 Appendix E Standard Library 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 c Method macro Argument _intc a 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 isalpha Character Handling Functions Function Checks whether the character is an alphabet A Z a z Format include lt ctype h gt int isalpha c Method macro Argument intc PE EE Character to be checked ReturnValue Returns any value other than 0 if an alphabet Returns 0 if not an alphabet Description Determines the type of character in the parameter Appendix E 37 Appendix E Standard Library iscntrl Character Handling Functions Function Checks whether the character is a control character 0x00 0x1f 0x7f Format include lt ctype h gt int iscntrl c Method macro Argument int C ee Character to be checked ReturnValue Returns any valu
31. Only _inline is made a reserved word In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fextend_to_int FETI Performs operation after extending char type data to the i int type Extended according to ANSI standards In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fchar_enumerator fCE Handles the enumerator type as an unsigned SS char type not as an int type fno_even fNE Allocate all data to the odd section with no sepa i rating odd data from even data when outputting ffar RAM Changes the default attribute of RAM data to far fnear_ROM FNROM Changes the default attribute of ROM data to near In the entry version this option cannot be speci fied fconst_not ROM f CNR Does not handle the types specified by const as ROM data 1 char type data or signed char type data evaluated under ANSI rules is always extended to int type 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 Appendix A 25 Appendix A Command Option Reference Table A 6 2 2 Generated Code Modification Options Option fnot_address_ volatile fsmall_array fenable_register fno_align USRW fbit fno_carry fauto_128 fuse_
32. The part between and is optional Details of the format are shown below Format flag minimum field width precision modifier 1 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 Appendix E 53 Appendix E Standard Library Specifying format in printf format 1 Conversion specification symbol d i Converts the integer in the parameter to a signed decimal u Converts the integer in the parameter to an unsigned decimal o Converts the integer in the parameter to an unsigned octal x Converts the integer in the parameter to an unsigned hexadecimal Lowercase abcdef are equivalent to OAH to OFH xX 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 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
33. 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 The bit field is used for the operand of the sizeof operator Write the operand correctly A function name is used for the operand of the sizeof operator Write the operand correctly 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 lhe array of type char is initialized with type wchar t Make sure that the types of initializer are matched lhe value of case exceeds the switch parameter range Specify correctly The size of the string exceeded 512 characters Do not use more than 511 characters for a string There are too many characters in a character constant characters enclosed with single quotes Write it correctly In this assign statement substitution is made for a variable specified by the const qualifier Check the declaration part to be substituted for Function specified in oragma CYCHANDLER or ALMHANDLER are always compiled in bank 0 addresses below 10000H None There is no need to pragma LOADDT a function specified in pragma CYCHANDLER or ALMHANDLER Delete pragma LOADDT Appendix F 25 Appendix F Error Messages Table F 24 ccom
34. and the type of argument is known when calling the function Variable argument is not used in prototype declaration For the type of the argument of a function the Argument and Type of Argument in Table D 5 and D 6 are matched Table D 5 Rules on Argument Transfer via Register NC30 Argument First Argument Registers Used First argument char type _Bool type RiL register int type R1 register near pointer type Second argument int type R2 register near pointer type Table D 6 Rules on Argument Transfer via Register NC308 Argument First Argument Registers Used First argument char type _Bool type RiL register int type R1 register near pointer type 2 Passing arguments via stack All arguments that do not satisfy the register transfer requirements are passed via stack The table D 7 and D 8 summarize the methods used to pass arguments Table D 7 Rules on Passing Arguments to Function NC30 Type of Argument First Argument Second Argument Third and Following Arguments char type R1L register Stack Stack _Bool type int type R1 register R2 register Stack near pointer type Other types Stack Stack Stack Table D 8 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 1 NC30 uses a
35. data _NEI section data_FEI section bss FE section program data FO section rom FO section data SOI section data NOI section data FOI section bss FO section vector If any of the following data sections have a size of 0 they need not be defined data SE data SEI section data _SO data_SOIl section data_NE data_NEI section data_NO data_NOI section data_FE data_FEI section data_FO data_FOl section bss SE section bss_SO section bss NE section bss NO section bss FE section bss FO section rom NE section rom_NO section rom FE section rom_FO section NC30 MANUAL 42 Chapter 2 Basic Method for Using the Compiler 2 Example Section Mapping in Single Chip Mode Figures 2 27 2 28 and 2 29 are examples of the sect30 inc include file which is used for mapping sections to memory in single chip mode ERT Bee Bee Pe Pee Ry I ne ae a EE OG Ae EG Me gs BP RRES IP a ge ae ERNE a ae AE OG EARRA AE ERM Gee on Oe eae ae ERNER GP In Hey RAER RER A C Compiler for M16C 60 20 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Written by X XXXXXXXX sect30 inc section definition This program is applicable when using the basic I O library Id sect30 inc v 1 14 2003 03 27 10 57 43 XXXXXXXX Exp aana a a eee a a a a a o a a a a a o a a a oa a aa a a a a SBDATA area sectio
36. gt Define complete structs or unions first An attempt is made to initialize an array of incom plete structs or unions that do not have defined members gt Define complete structs or unions first Appendix F 12 Appendix F Error Messages Table F 12 ccom30 Error Messages 5 14 Error message incomplete struct return function call incomplete struct union s mem ber access incomplete struct union tag name s member access inline function s address used inline function s body is not de clared previously inline function function name is recursion interrupt function called invalid function default argument invalid push invalid operand invalid operands invalid amp amp operands invalid amp operands invalid amp operands Description and countermeasure 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 An attempt is made to reference members of an incomplete struct or union that do not have de fined members Define a complete struct or union first An attempt is made to reference members of an incomplete struct or union that do not have de fined members Define a complete struct or union first An attempt is made to reference the address of an inline function Do not use the address of an inline function T
37. return values NC30 MANUAL 63 Chapter 3 Programming Technique 3 4 Other 3 4 1 Precautions on Transporting between NC Series Compilers NC30 basically is compatible with Mitsubishi C compilers NCxxx at the language speci fication 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 transport ing 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 far Fined NO7S far NOT near far NC30 MANUAL 64 Appendix A Command Option Reference Appendix A Command Option Reference This appendix describes how to start the compile driver nc30 and the command line op tions The description of the command line options includes those for the as30 assembler and In30 linkage editor which can be started from ncs0 A 1 nc30 Command Format nce3s0Al command line option A assembly language source file name A relocatable object file name A lt C source file name gt Prompt Mandatory item Optional item Space Figure A 1 nc30 Command Line Format nc30 osample as30 I In30 ms ncrt0 a30 samp
38. statement Define the variable An undefined variable name is used Define the variable An undefined variable name is used Define the variable An array cannot be declared as void Processing will be continued assuming it has type int Write the type specifier correctly Appendix F 21 Appendix F Error Messages Table F 21 ccom30 Error Messages 13 13 Error message void value can t return while struct union statement while void statement multiple pragma EXT4MPTR s pointer ignored zero size array member function name is resursion then inline is ignored Description and countermeasure The value converted to void by cast is used as the return from a function Write correctly struct or union is used in the expression of a while statement Use scalar type void is used in the expression of a while state ment Use scalar type A pointer variable decleared by pragma EXT4MPTR is duplecate Declare the variable only one time the array which size is zero Declare the array size The structure members include an array whose size Is zero Arrays whose size is zero cannot be members of a structure The inline declared function name is called re cursively The inline declaration will be ignored Correct the statement not to call such a function name recursively Appendix F 22 Appendix F Error Messages F 6 ccom30 Warn
39. unsigned char val2 to low of val2 from high of vali unsigned char movhh unsigned char vali unsigned char val2 to high of val2 from high of val1 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 unsigned char rolc_b unsigned char val1 When calculated in 8 bits unsigned int rolc_w unsigned int val1 When calculated in 16 bits RORC Function The value of val is returned after rotating it right by 1 bit including the C flag Syntax include lt asmmacro h gt unsigned char rorc_b unsigned char val When calculated in 8 bits unsigned int rorc_w unsigned int val When calculated in 16 bits Appendix B 62 Appendix B Extended Functions Reference ROT eee Function The value of val is returned after rotating it as many times as indicated by count Syntax include lt asmmcaro h gt unsigned char rot_b signed char count unsigned char val When calculated in 8 bits unsigned int rot_w signed char count unsigned int val When calculated in 16 bits SHA ee Function The value of val is returned after arithmetically shifting it as many times as indicated by count Syntax include lt asmmacro h gt unsigned char sha_b signed char count unsigned char val When calculated in 8 bits unsigned int sha_w signed char count unsigned int val When calculated in 16 bit
40. 0 char j i 16 bits 2 C 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 defining the structure members pragma STRUCT TAG unpack struct TAG int char Figure B 69 Example of pragma STRUCT Declaration Appendix B 41 Appendix B Extended Functions Reference pragma EXT4MPTR Function Syntax Description Example Note denition a data allocated on 4 Mbyte extension space ROM area A functional extension which shows a variable is a pointer accessing 4 Mbyte ex panded space ROM pragma EXT4MPTRA pointer_name his feature is provided for extension mode 2 4M byte extension mode which is available with some products in the M16C 62 group Declare a pointer variable for accessing a 4M byte space When so declared the compiler generates code for switching banks as necessary to access a 4M byte space This bank switching code is generated one for each function in the place where the pointer is used first In successive operations therefore the banks are set only once When using multiple pointer variables use the fchange_bank_always fCBA op tion which sets the banks each time the program accesses the 4M byte space C source program struct tag int bitmap char code pointer pragma EXT4MPTR pointer main Maps to pro1 section register int data
41. 00001H RO CMP W 00001H RO HHH ASM END remainder omitted Figure B 20 Example for Referencing an auto Variables You can also use the format shown in Figure B 21 so that auto variables in an asm function use a 1 bit 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 Bit Position Appendix B 12 Appendix B Extended Functions Reference Figure B 23 shows examples of referencing auto area bit fields and the results of compil ing C source file void func void struct TAG char bit0 1 char bit1 1 char bit2 1 char bit3 1 S asm bset b FB s bit1 Assembly language source file compile result FUNCTION func FRAME AUTO s size 1 offset 1 ARG Size 0 Auto Size 1 Context Size 5 section program _ file bit c _ line 3 glob _ func _func enter 01H _ line 11 HHHH ASM START bset 1 1 FB s HHHH ASM END _ line 12 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 reference
42. 4 Example nc30 Command Line NC30 MANUAL 6 1 5 1 5 1 Chapter 1 Introduction to NC30 NC30 Output Files This chapter introduces the preprocess result C source program output when the sample program smp c is compiled using NC30 and the assembly language source program Introduction to Output Files With the specified command line options the nc30 compile driver outputs the files shown in Figure 1 5 Below we show the contents of the files output when the C source file smp c shown in Figure 1 6 is compiled assembled and linked See the AS30 User Manual for the relocatable object files extension r30 print files extension Ist and map files extension map output by as30 and In30 C language source file Preprosesser C source file from preprocesser nc380 command option Compiler nc30 command OPON Assembly language source file Assembler nc30 command option Relocatable object file Linker Absolute module file C D output file of nc30 Figure 1 5 Relationship of nc30 Command Line Options and Output Files NC30 MANUAL 7 Chapter 1 Introduction to NC30 include lt stdio h gt define CLR 0 define PRN 1 void main int flag flag CLR ifdef PRN printf flag d n flag endif Figure 1 6 Example C Source File smp c 1 5 2 Preprocessed C Source Files The cpp30 processes preprocess commands starting with Such operations include header file content
43. Converts the character from a lower case to an upper case 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 a 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 Appendix E 80 Appendix E Standard Library vfprintt 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 to a 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 gt int vprintf format ap Method function Argument const char far form
44. Ct Perormance SOS CMC AOI cache ceca Sosa iaa a aa aa ia 1 C 1 1 Overview of Standard Specifications 2 0 0 cceecccccecceeeeeeeeeeeeseeeeeeeeeeesseeeeseeeeeseeeeeeeseeaaes 1 C 1 2 Introduction to NC30 Performance cccccccccssesseeeceeeeeeececeeeseeeeeeeeeeesseseeeeseeeeeeeeeeeeasaaas 2 Se PSE VIPOUING a ET ETE E EEE T AO E E AT E 2 bp C Soiree File Coding SUS Gi Ga WONG cies ncecsccacessesarassadernctansate anecasescetesceanseetbentaneneauneede 2 opm NGO Bon f 10875111 9 9 oem eae ne en ee en oO enn ge oC E ee ee eon ee eee 3 C 2 Standard Language Specifications sess csasmecseesalandeveidaswtsceardditbecaseianeraweivievaedaieuteeeses 4 C Na E E E E E E EN 4 E A o ONENE EIIE EAE AENEA OARA AE E E E A TEE E 4 D En E A ee eee nt or 4 o E NERE A AE A E IE EI E I I TA E N AEE A ET 5 Ole See eee EE e e E E E E A A O E E EET 6 e OE a N E E N 7 Mi a a i E E EEE E E E E E R teeseecaeess 7 De a N ean E eemne e ener ier Renton nee Seren ener nee ee 7 sarge ce sana eo nase eg neon ss apne senescent sma deeetogieceoecente 8 2 i Fe a o ee een ne eee ie E ance aI nr ORE ean IE Se te eRe a enews ete eee 8 w 0211 a 9 eee ge eee EE ene etcetera een eee ene 8 c Data Type and Size ccccccccccesecececccesseeeeeeccceesneeeecccoseneeeescccaseeseeescassensensaeceeseeeensees 8 G28 EXpresSionS acccsencdnesteccctesptiusdnudsicenvasdesadandhunsdiedsancdacspdaaninicassecedebeadstandcacesiscsdeconseasanaddiaecdes 9 Cod TO i regen ce eee ce
45. DATA bss_FO_top section rom_FE ROMDATA OLS OFQOOOOH rom_FE_top section rom_FO ROMDATA rom_FO_top Initial data of data section section data_SEI ROMDATA data_SEI_top section data_SOI ROMDATA data SOL top section data_NEI ROMDATA data_NEI_top section data_NOI ROMDATA data_NOI_top section data_FEI ROMDATA data_FEI_top sect Lon data_FOI ROMDATA data POL top BSCE VOR Switch_table ROMDATA Switch_table_top section program section interrupt org must be set internal ROM area Figure 2 11 Startup Program List 6 sect30 inc 2 8 NC30 MANUAL 25 Chapter 2 Basic Method for Using the Compiler section program_S section vector variable vector table org VECTOR_ADR if M62TYPE NC30 MANUAL 26 lword dummy_int BRK vector 0 lworqd dummy_int vector 1 lword dummy_int vector 2 lword dummy_int vector 3 Lword dummy_int ints for user vector 4 lword dummy_int timerB5 for user vector 5 lword dummy_int timerB4 for user vector 6 lword dummy_int timerB3 for user vector 7 lword dummy_int si o4 int5 for user vector 8 lword dummy_int si o3 int4 for user vector 9 lword dummy_int Bus collision detection for user v10 lword dummy_int DMAO for user vector 11 lword dummy_int DMA1 for user vector 12 lword dummy_int Key input interrupt for user vect 13 lword dummy_int A D f
46. FB line 17 C_SRC return sum mov W 2 FB gO exitd END Figure D 16 Assembly language sample program 2 2 Figures 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 gt 4 gt 5 gt 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 Variable j Variable k OLD FB lt SP Stack usage state for Stack usage state of 2 start of 1 main Figure D 17 Entry processing of function main Appendix D 12 Appendix D C Language Specification Rules Variable sum Argument x i argument x i Argument z k Argument y j Argument y FB of Function ee Return address Return address Argument z k Argument z k Variable Variable Variable Variable j Variable Variable j Variable Variable k Variable k Variable k Variable k Old FB Old FB Old FB__ Old FB Stack useage state of 3 Stack useage state of 4 5 Stack useage state of 6 Stack useage state of 6 When PUSH instruction When JSR instruction When ENTER instruction completed completed completed Figure D 18 Calling Function func and Entry Processing RO Variable sum Return value of func Argume
47. FRAME AUTO j size 2 offset 2 HHH FRAME AUTO i size 2 offset 2 section program __ file test1 c _ line 3 glob _ 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 Appendix D 14 E 1 altel E 1 2 Appendix E Standard Library Standard Librar Standard Header Files When using the NC30 standard library you must include the header file that defines that function This appendix details the functions and specifications of the standard NC30 header files Contents of Standard Header Files NC30 includes the 15 standard header files shown in Table E 1 Table E 1 assert h ctype h errno h float h limits h locale h math h setjmp h signal h stdarg h stddef h stdio h Stdlib h string h time h List of Standard Header Files Header File Name Contents Outputs the program s diagnostic information Declares character determination function as macro Defines an error number Defines various limit values concerning the internal representation of floating points Defines various limit values concerning the internal processing of compiler Defines declares macros and functions that manipulate program localization Declares arithmetic logic functions for internal processing Defines the structures used in branch functions Defines declares necessary for
48. O OR or OS the system may selects another functions with good code efficiency by optimization strpbrk 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 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 NULL if 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 OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 73 Appendix 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 NEC eanes Character to be searched for ReturnValue Returns the position of character c that is last encountered in character string 1G Returns NULL when character string s does not contain character c Description Searches for th
49. OS 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 In the entry version this option cannot be specified Appendix A 18 Appendix A Command Option Reference Oconst OC Function Performs optimization by replacing references to the const qualified external variables with constants This option is effective also at the time of the specifi cation more than O4 option In the entry version this option cannot be specified supplement Optimization is performed when the following conditions are satisfied simulta neously 1 Extern variables excluding structures unions and arrays 2 Extern variables declared using the const qualifier 3 Extern variables initialized in the same C source file The following example shows code that can be optimized Code example int const i 10 func int k i i is replaced with 10 Ono _bit ONB Function Suppresses optimization based on grouping of bit manipulations In the entry version this option cannot be specified supplement When you specify O or OR or OS optimization is based on grouping ma nipulations 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 f
50. Precautions to be observed when using a command file a00nnnn0annnnaannnnannnnnnnnnnnanni 14 2 1 3 Notes on NC30 Command Line Options ccccccccccccssesseeeceeeeeeeeeeeaeeeeeeeeeeeeeseeseaaees 14 a Notes on Coding nc30 Command Line Options oc cccccisncersasedesserccesnotsendesevsasiveraenseensi 14 b Priority of Options for Controlling Compile driver cccececcceeceeeeeeseeeesseeeeeeeeeeeeeeaas 14 214 NCO Command Line PIONS seccescctsessclaccatecedeceuscc les ross inen eT seii eVo EEEn ESE 15 a Options for Controlling Compile Driver scivccanesscsvvvessiaveriarconcrsintveionedtunneenavonssenwiinebubees 15 6 Opions Speciying QUWI FIOS sissien 15 c Version and command line Information Display Option cccccccceessseeeeeeeeaeeeeeeeees 15 de Opilons Tor B 6 Bye 6 6 sciri arian ness tenner torn eke ter ne eae Aaa 16 e Upiimization ODUONS gee RS ater fa eo eo en PROT 16 f Generated Code Modification Options 2 0 0 0 ceeceeseececeeeeeeeeeeeeeseeeeeeeeeessaeeaeeseeeeeeeess 17 g Library Specifying Option ccccsiesensdcesecctaccdenrsochiesasaencsdtescesskneeseoneresbaknesadeenteoanacensdackecexexes 18 h Warning wo oesc ik otacsenecsencndetieesuncadenceentnctacannszacincbecatabacoasncencesesacensczcuaiceashorascoanaes 19 i Assemble and Link Options sve ccitatitcevecscvedeseennocvie cecivcnnnibdiecceiventeardesinpsesdeneddesevecieactoaxtenencen 19 2 2 Preparing the Startup Program saci ocee2d bacesse
51. Renesas Solutions Corporation assume no responsibility for any damage liability or other loss rising from these inaccuracies or errors Please also pay attention to information published by Renesas Technology Corporation and Renesas Solutions Corporation by various means including the Renesas home page http www renesas com When using any or all of the information contained in these materials including product data diagrams charts programs and algorithms please be sure to evaluate all information as a total system before making a final decision on the applicability of the information and products Renesas Technology Corporation and Renesas Solutions Corporation assume no responsibility for any damage liability or other loss resulting from the information contained herein Renesas Technology semiconductors 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 Technology Corporation Renesas Solutions Corporation or an authorized Renesas Technology product distributor when considering the use of a product contained herein for any specific purposes such as apparatus or systems for transportation vehicular medical aerospace nuclear or undersea repeater use The prior written approval of Renesas Technology Corporation and Renesas Solutions Corporation is necessary to reprint or reproduce in whole or in part these materials f
52. 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 16 shows an example of how to write an assembler function to return a value Table 3 2 Calling Rules for Return Values Return value type Rules _Bool type ROL register char type int type RO register near pointer type float type The 16 low order bits are stored in the RO register and the 16 high long type order bits are stored in the R2 register as the value is returned far pointer type double type The value is stored in 16 bits each beginning with the MSB in order of long double type registers R3 R2 R1 and RO as it is returned long long type The value is stored in 16 bits each beginning with the MSB in order of registers R3 R1 R2 and RO as it is returned Compound type Immediately before calling the function the far address indicating the area for storing the return value is pushed to the stack Before the return to the calling program the called function writes the return value to the area indicated by the far address pushed to the stack SECTION program GLB _ asm func _asm func 01000H R2 32 bit data 0A00H RO D B U Figure 3 16 Example of Coding Assembler Function to Return long type Return Value c Re
53. Windows95 version personal computer version Note In this Compiler for MS Windows version personal computer version errors from as30 and In30 invoked by the compile driver are output to the standard output regardless of this option Werror file lt file name gt WEF Function Outputs error messages to the specified file Syntax nc30A Werror_fileA lt output error message file name gt Supplement 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 Output example test c12 Error ccom unknown variable Appendix A 42 Appendix A Command Option Reference Wstop_at_warning WSAW Function When a warning occurs the compiler s end code is set to 10 as it is returned supplement If a warning occurs when compiling the compilation by default is terminated with the end code 1 terminated normally Use this option when you are using the make utility etc and want to stop com pile processing when a warning occurs Wnesting comment WNC Function Generates a warning when comments include Supplement By using this option it is possible to detect nesting of comments Appendix A 43 Appendix A Command Option Reference Wccom_max_warnings Warning Count WCMW Function This option allo
54. Wunknown_pragma WUP option is specified wchar_t array initialized by char The initialize expression of the wchar_t type is string initialized by a character string of the char type Make sure that the types of the initialize expres sion are matched zero divide in constant folding The divisor in the divide operator or remainder calculation operator is 0 gt Use any value other than 0 for the divisor zero divide ignored The divisor in the divide operator or remainder calculation operator is 0 gt Use any value other than 0 for the divisor zero width for bitfield The bit field width is 0 Write a bit field equal to or greater than 1 Appendix F 32 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 Appendix G The SBDATA declaration amp SPECIAL page Function declaration Utility utl30 How to startup the SBDATA declaration amp SPECIAL page function declaration utility utl30 and how the startup options works are described here This utility is not included in the entry version G 1 Introduction of utl30 G 1 1 Introduction of utl30 processes The SBDATA declaration amp SPECIAL page Function declaration Utility utl30 precesses the absolute module file hanving the extension x30 The utl30 generates a file that contains SBDATA declarations located in the SB area beginning with the most frequently used one i pragma SBDATA and a file that contains SPECIAL page
55. an integer constant 0 1 or 2 Error in MX flag value in asm statement Specify an interger constant 0 1 or 2 Error in X flag value in asm statement Specify an integer constant 0 1 or 2 The expression of the return statement does not match the type of the function gt 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 An invalid storage class is used in function decla ration It will be handled as extern when pro cessed Change the storage class to extern The line of pragma ADDRESS contains kanji code This line will be ignored Do not use kanji code in this declaration A reversed keyword is used Change it to a different name 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 ig nore this warning The argument type is not the type declared in prototype declaration Check the argument type Meaningless statements were deleted during op timization Delete meaningless statements The tail of a statement is gt You may confuse with Check on it The address of a function having a register argu ment is substituted for a pointer to a function that does not have a register argument i e a non prototyped function Change the declaration of a pointer variable for
56. array type or pointer type gt Use an array or pointer type to write the left side expression of The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The unary operator or postfix operator con tains an error For the unary operator check the right side ex pression For the postfix operator check the left side expression The unary operation or postfix operation con tains an error gt For the unary operator check the right side ex pression For the postfix operator check the left side expression The left side expression of gt is not struct or union gt The left side expression of gt must have struct or union The ternary operator is erroneously written Check the ternary operator The INT No in pragma OS Extended function is invalid Specify correctly The INT No in pragma INTCALL is invalid Specify correctly The No in pragma SPECIAL is invalid Specify correctly The cast operation contains an error The void type cannot be cast to any other type it can neither be cast fr
57. assert Outputs a warning when a constant expression is false pragma Instructs processing for NC30 s extended function if Performs conditional compilation ifdet Performs conditional compilation ifndet Performs conditional compilation elif Performs conditional compilation else Performs conditional compilation endif Performs conditional compilation C 3 2 Preprocess Commands Reference The NC30 preprocess commands are described in more detail below They are listed in the order shown in Table C 13 Appendix C 16 Appendix C Overview of C Language Specifications define Sas Function Defines macros Format 1 defineAindentifierAlexical string opt 2 defineAidentifier identifier list opt Alexical string opt Description 1 Defines an identifier as macro 2 Defines an identifier 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 Name of source file Current source file line No Date compiled mm dd yyyy Time compiled hh mm ss The following are predefined macros in NC30 M16C NC30 You can use the token string operator and token concatenated operator with
58. called within main extern int i void main void int sS s Tunc s func Notle The assembler code to description of substance of the static function which became inline function treatment is always generated About a function it is compulsorily In treating as an inline function it is in a function Please make an inline declaration Appendix A 24 A 2 6 Appendix A Command Option Reference Generated Code Modification Options Table 2 6 shows the command line options for controlling nc30 generated assembly code Table A 6 1 2 Generated Code Modification Options Option Short form Description fansi None Makes fnot_reserve_far_and_near fnot_reserve_asm and fextend_to_int valid In the entry version this option is always en abled i e assumed to be specified Therefore it cannot be enabled or disabled by specification fnot_reserve_asm fNRA Exclude asm from reserved words Only _asm is valid In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fnot_reserve far_and_near fNRFAN Exclude far and near from reserved words Only _far and _near are valid In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fnot_reserve_inline fNRI Exclude far and near from reserved words
59. 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 _mbase 2 Initialization of external variable char _mnext Initializes the heap_top label which is the starting address of the heap section 3 Initialization of external variable unsigned_msize Initializes the HEAPSIZE expression which sets at 2 2 2 e heap section size Figure 2 16 shows the initialization performed in ncrt0 a30 heap_top amp OFFFFH _ mbase heap_top gt gt 16 _ mbase 2 heap_top amp 0FFFFH _ mnext heap_top gt gt 16 __mnext 2 HEAPSIZE amp OFFFFH __msize HEAPSIZE gt gt 16 __ msizet 2 Figure 2 16 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 Initialization 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 origi nal 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 1 Call the C subroutine only after
60. can be specified in another command file e Multiple command lines can be written in a command file e New line characters in a command file are replaced with space characters e 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 In30 whose file name extension is cm are automatically generated in order for specifying files when linking Therefore existing files with the file name exten sion 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 simulta neously If multiple files are specified the compiler displays an error message Too many command files 2 1 3 Notes on NC30 Command Line Options a Notes on Coding nc30 Command Line Options The nc30 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 There are the following priorities in the option about control of a compile driver lt High Priority Therefore if the following two options are specified
61. ceessseccceeceessseceeceseeesceeeeseeeeaeceeeeeeeeeeeeeeeeas 1 E 1 2 Standard Header Files Reference cccccccccesseecceeeceeseeceeeeeeeeeeceeesseeeseceesesseaeseeeesseaanes 1 E 2 Standard Function Reference ccs scion scarcinsvaiainssunsevandinoavecseendinsenduantsadaiavedinoevaaactenvadives 10 E 2 1 Overview of Standard Library assececectaccdccnesdecdacesestoossedeecdiescedacssdbiadesceosGersdedesescnsecdecoetee 10 E 2 2 List of Standard Library Functions by Function sicsccccccnescesssccoiesenssccscesdesasencendsenecssdeseeees 11 a PG Handing FUNCIONS esiencrscncecenanccubenieoanienthnnaneevooloapeddeseneumerdnceachidalescieee tins cacendeaes 11 D Characier Handing FUNCIONS asn2seeiieencseerceeaceescenaceccspeecmnoscaeten cate oecetceonetoateceseusteee 12 C MM I AN creea REEE aai o EERS 13 d Memory Management Functions iss sicaiecescnccsccecwonccneesedsiocdanedadeousixedeesaastodnceddeouperedsesoees 13 e Memory Handling Functions cccccccccccsssceeccessecccsesseeeseuseeeeseeeeeseeaseeeeseuseeesnenseesens 14 f Execution Control Functions wciscascsinssisaisncsnsousesaetousessarsssnsennsddn nbeaniesantoiosassndsnaiticnassaneiues 14 0 Mathemaucal FG IS icrstscc via entcinaeexpcrmays veces pidan enanada R ER ENEE EEE R 15 n Integer Arithmetic FUNCIONS nesececcceceevgcctrsead nercterceranieastecennbiersneresoetamersaraeeenieardoctouees 15 i Character String Value Convert FUNCTIONS ccccccceceesseesseeeceeeeeeeees
62. clearing them B and D flags 2 Call the C subroutine only after setting the U flag NC30 MANUAL 34 Chapter 2 Basic Method for Using the Compiler d Setting the Stack Section Size A stack section has the domain used for user stacks and the domain used for interrup tion stacks Since stack is surely used please surely secure a domain stack size should set up the greatest size to be used Stack size is calculated to use the stack size calculation utility STK Viewer amp stk e Heap Section Size Set the heap to the maximum amount of memory allocated using the memory manage ment 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 Figure 2 21 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 22 in ncrt0 a30 The INTB Register is initialized by the top address of the interrupt vector table VECTER_ADR equ Offd00h Figure 2 22 Example of Setting Top Address of Interrupt Vector Table ncrt0 a30 The sample startup program has had values set for the tables listed below OFFDOOH OFFDFFH Interrupt vector table OFFEOOH lt OFFFFFH Special page vector table and fixed vector table Normally these set values do not need to be modified 1 The stack is used within the startup prog
63. conditional compile commands as follows To use UARTO 0 ccc ce cece ececececececececscecenes define UARTO 1 Specify these commands at the beginning of device c or specify following option when compiling OlO use UAR TG ceeescetecccoeevesteseaiacemetaqerees DUARTO To use both UARTs modify the file as follows 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 UART1 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 Appendix E 87 Appendix E Standard Library b Stream Settings The NC30 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
64. count signed int p1 signed int p2 When calculated in 16 bits DIV Function devide val1 by val2 Syntax include lt asmmacro h gt signed char div_b signed int val1 signed char val2 calculated in 8 bits with signed signed int div_w signed int val1 signed int val2 calculated in 16 bits with signed unsigned char divu_b unsigned int val1 unsigned char val2 calculated in 8 bits with unsigned unsigned int divu_w unsigned long val1 unsigned int val2 calculated in 16 bits with unsigned signed char divx_b signed int val1 signed char val2 calculated in 8 bits with signed signed int divx_w signed long val1 signed int val2 calculated in 16 bits with signed Appendix B 60 MOD OOOO Appendix B Extended Functions Reference Function devide vali by val2 and get mod Syntax include lt asmmacro h gt signed char mod_b signed int val1 signed char val2 When calculated in 8 bits signed int mod_b signed long vali signed int val2 calculated in 16 bits unsigned char modu_b unsigned int val1 unsigned char val2 calculated in 8 bits unsigned int modu_w unsigned long vali unsigned int val2 calculated in 16 bits SMOVB EE Function Syntax 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 address decrementing direction There i
65. creates a file extension i and stops processing Execution nc30 P sample c example i M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c Sls sample rw r r J tool sr 2835 Aug 17 11 28 sample c SIWT 1 toolusr 2322 Aug 17 11 30 samp less Notes 1 When this option is specified no assembly source file extensions a30 relocatable object files extension r30 absolute module files extension X30 or other files output by ccom30 as30 or In30 are generated 2 The file extension i generated by this option does not include the line com mand generated by the preprocessor To get a result that includes line try again with the E option Compile driver control Function Creates assembly language source files extension a30 and ext and stops processing Execution nc30 S sample c example 3 M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXXK XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c ls sample ZEW Pnn i toolusr 2059 Aug 17 11 30 sample a30 rw r r 1 toolusr 2835 Aug 17 11 28 sample c Notes When this option is specified no relocatable object files extension r30 abso lute module files extension x30 or other files output by as30 or In30 are gener ated Appendix A 5
66. data types 2 If possible do not use gt or for 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 array size does not exceed 64 Kbytes explicitly state the size in extern declaration of far type array as shown in Figure 3 7 or add the fsmall_ array fSA 2 option before compiling This helps to increase the code efficiency of the program extern int far array lt 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 7 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 fsmall_array fSA option is specified the compiler assumes an array of an un known size to be within 64 Kbytes as it generates code In the entry version this option cannot be specified NC30 MANUAL 53 Chapter 3 Programming Technique c Array Subscripts Array subscripts are type extended during operations a
67. debug ONBSD Suppresses optimization that affects source line data Ono_float_const_fold ONFCF Suppresses the constant folding processing of float ing point numbers Ono_ sidlib 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 Ostack_frame_align Aligns the stack frame on an every boundary Oloop_unroll loop count OLU Unrolls code as many times as the loop count with out 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_logical or combine ONLOC Suppresses the optimization that puts consecutive ORs together Ono_asmpot Inhibits starting the assembler optimizer aopt30 Ostatic_to_inline OSTI A static function is treated as an inline function NC30 MANUAL 16 Chapter 2 Basic Method for Using the Compiler f Generated Code Modification Options Table 2 6 shows the command line options for controlling nc30 generated assembly code Table 2 6 1 2 Generated Code Modification Options Option Short form Description fansi None Makes fnot_reserve far_and_near fnot_reserve_asm and fextend_to_ int valid In the entry version this option is always en abled i e assumed to be specified Therefore i
68. 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 sp30 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 SPE CIAL page area Output the warning and error messages to the honst machines standard output device Does not use the specified number s as SPE CIAL Page Function numbers Use this option simultaneously with the sb30 option The variables and functions specified by oragma SECTION are also included among those to be processed Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 Sb30 eis SBDATA declaration Function Outputs SBDATA declaration This option can be specified simultaneously with sp30 Execution ut130 sb30 ncrt0 x30 o sample example M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Sp30 Outputs SPECIAL page function declaration Function Outputs SPECIAL page function declaration This option can be specified simultaneously with sb30 Execution utl30 sp30 ncert0 x30 o sample example M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORP
69. esc ese see oe dase tcmede baceson eeecvans c6etesaciesaeseeearatontssseesaeaceninesseace 11 a Varable Declaration eee ee eee nee E Pe AEN Ea a aiai 11 D Function DoclaraliOM sesinsccnsnsoiniiniireideitaiiniai iiiaae iiiad 12 Ca aa a E E E E 13 a Labelled Statement acai c chi cecesicec eacetannceactensinasdvbidvapeduuedtsnarecaatberencacabideesacatizeacaeetetleas 13 D Compound AEE sE EE 14 Expr ssion Nul Statemeni ola wee da ste sa enrgdcce se ce nk ka r k EE R RE E ANNE ari ai 14 d Selecion ENEM sociai es E Eana 14 e Hernon Salome N eaaa a a a 14 k SUN E N a ER E AR EEN eles 15 Ox Assembly Language Statement ice ccescecledentestiacescsecerecdeeenscbeebiatedoaeveieeetaecteetaeddtitee 15 o Preprocess Commands ccc ee pen seecssaes cece sass teense need a aaa aaa ai 16 C 3 1 List of Preprocess Commands Available cccccccccccsseseeeeeeeeeeeeeseeeesseeeeeeeeeeeeneaas 16 C 3 2 Preprocess Commands Reference cccccccccsssessseeceeecceeeeseeeeeeeseceeeeeessessaeaeseeeeeeeeeeees 16 C 3 3 Predelined Macros og aerate ates cienenselecoieoestdanseceiatentcaeetusasuadesieet sede peideaalezecncsemeseed siacimecencees 26 G 3A Usage of predefined Macros saccassecicsscsacacscadessearsadelasaesnscivseasdessstivnstuattedelalaeecssnuneastensaes 26 D 1 D 2 D 3 Internal Representation Of Data ccccccceccccseseeceeeeeeseeeceneeseeceeeeesseeesseeeeeseeeeesaaeeeeas 1 Me NSA TE Oe saicespedece tee sents E itieiced aha E E tee Ser
70. extended functions for embedded system Performance Specifications Overview of Standard Specifications NC30 is a cross C compiler targeting the M16C 60 20 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 M16C 60 20 series and extended functions for embedded system Extended functions for embedded system near far modifiers and asm function etc Floating point library and host machine dependent functions are contained in the stan dard library Appendix C 1 Appendix C Overview of C Language Specifications C 1 2 Introduction to NC30 Performance This section provides an overview of NC30 performance a Test Environment Table C 1 shows the standard EWS environment assumed when testing performance TableC 2 shows the standard PC environment TableC 1 Standard EWS Environment Item UNIX Version EWS environment SPARCstation SunOS V 4 1 3 JLE1 1 3 Nihongo Solaris 2 5 HP 9000 700 Series HP UX V 10 20 Available swap area 100MB min TableC 2 Standard PC Environment ltem OS Version PC environment IBM PC AT or compatible Windows ME Windows 2000 Type of CPU Intel Pentium II Memory 128MB min TableC 3 Standard Linux Environment ltem Type of PC OS Version PC environment IBM PC AT or compatible Turbo Linux 7 0 Type of CPU Intel Pentium II Memory 128MB min b C Source File Coding Specifications Table C 4
71. following types cannot be declared as parameters for an assembler function in a pragma PARAMETER declaration structure type and union type double type long long types c The assembler functions shown below cannot be declared Functions returning structure or union type 3 An error occurs when you write the function entity specified in oragma PARAMETER in C language Example int asm_func unsigned int unsigned int Prototype declaration for pragma PARAMETER asm_func R0 R1 the assembler function void main 1 Ji Ox7FFD 0x00 7F gt asm_func i j lt Calling the assembler function Figure B 75 Example of pragma PARAMETER Declaration Appendix B 47 Appendix B Extended Functions Reference pragma SPECIAL Declare a special page subroutine call function Function Declares a special page subroutine call JSRS instruction function Syntax pragma SPECIALAI C AnumberAfunction name Description Functions declared using pragma SPECIAL are mapped to addresses created by adding OFOOOOH to the address set in the special page vector tables and are therefore subject to special page subroutine calls C NC308 ONLY 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 Functions declared using pragma SPECIAL are mapped to the program_S section Be sure to map the program_S section between OFOOOOH
72. from ncrt0 a30 It performs the following process mainly Maps each section in sequence Sets the starting addresses of the sections Defines the size of the stack and heap sections Seis the interrupt vector table Sets the fixed vector table c Modifying the sect30 inc Figure 2 21 summarizes the steps required to modify the startup programs to match the target system 2 2 2 Customizing the Startup Program 5 O gt O K Map order each section and set starting addresses v Set the interrupt vector table v Set the special page vector table ul0E 2 S Figure 2 21 Example Sequence for Modifying Startup Programs NC30 MANUAL 40 Chapter 2 Basic Method for Using the Compiler 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 sect30 inc include file of the startup program The sections are mapped to memory in the order they are defined in sect30 inc Use the as30 pseudo instruction ORG to specify their starting addresses Figure 2 22 is an ex ample of these settings section program ORG OFFEOOOH Specifies the starting address of the program section Figure 2 22 Example Setting of Section Starting Address sect30 inc If no starting address is specified for a section that section is mapped immediately after the
73. func _func enter 02H line 10 H HC SRC asm mov w 1 e_val HHHH ASM START mov w 1 e val Reference to external variable _ line 11 H HC SRC asm mov w mov w 2 2 FB f_val Reference to auto variable _ line 12 H C SRC asm mov w mov w 3 RO r_val Reference to register variable _ line 13 H HC SRC asm mov w mov w 4 SO s val Reference to static variable H C SRC asm mov w f_val r_val mov w_ FB RO f_val r_val HHH ASM END Figure B 33 Example for Referencing Variables of Each Storage Class 1 Whether it is arranged at which storage class should actually compile and please check it 2 It does not restrict being assigned to a register even if it specifies a register qualified Appendix B 18 Appendix B Extended Functions Reference B 2 6 Selectively suppressing optimization In Figure B 34 the dummy asm function is used to selectively suppress a part of optimi zation pragma ADDRESS port 02H struct port char bit0 1 char bit1 1 char bit2 1 char bit3 1 char bit4 1 char bit5 1 char char port Optimization results in any steps to set the two port bits separately being combined as one step Lune port Optimization or b 03H _ port port port bito0 Optimization is suppressed bset 00H _ port bset O1H _port asm Optimization port bit1 Fi
74. in the integer pointer of the parameter The parameter is not converted c Converts a double type parameter to the exponent format The format is d dddddde dd E Same as e except that E is used in place of e for the exponent 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 G Same as g except that E is used in place of e for the exponent 1 Inthe standard library included with your product the character string pointer is a far pointer All printf functions handle s with a far pointer Note that scanf functions use a near pointer by default Appendix E 54 Appendix E Standard Library Specifying format in printf form 2 Flags Left aligns the result of conversion in the minimum field width The default is right alignment 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 Adds 0 to the beginning of o conversion Adds 0x or 0X 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
75. include information on type sizes There fore if this option is specified the enum type may not be referenced correctly in some debugger Appendix A 29 Appendix A Command Option Reference fno_ even NE 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 cC 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 ffar_RAM fFRAM Function Change the default attribute of RAM data to far Supplement The RAM data variables are located in the near area by default Use this op tion when you want the RAM data to be located in other areas than the near area 64 Kbyte area Appendix A 30 Appendix A Command Option Reference fnear ROM fNROM Function Change the default attribute of RAM data to far In the entry version this option ca
76. into the same RAM 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 func tions regardless of the compiler s version and of whether optimizing op tions are used or not When you describe like the following examples as C language descrip tion to a SFR area in this compiler may generate the assembler code which carries out operation which is not assumed since the interrupt re quest bit is not normal NC308 MANUAL 3 Chapter 1 Introduction to NC30 Example C language description to SFR area pragma ADDRESS TAOIC 0055h M16C 60 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 NC30 MANUAL 4 Chapter 1 Introductio
77. is called Be careful not to call a handler 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 The function specified by pragma HANDLER is using an argument The function specified by pragma HANDLER cannot use an argument Delete the argument The hex character in a character constant is ex cessively long Also some character that is not a hex representation is included after gt Reduce the length of the hex character The member name is defined twice or more This declaration will be ignored Make sure that member names are declared only once The variable name is defined twice or more This declaration will be ignored Make sure that variable names are declared only once The auto variable which is the same as the name declared as an argument is used Use any name not in use for arguments Appendix F 26 Appendix F Error Messages Table F 25 ccom30 Warning Messages 5 10 Warning message illegal storage class for argument extern ignored incompatible pointer types incomplete return type incomplete struct member init elements overflow ignored inline function is called as normal function before change to static function integer constant is out of range interrupt function called interrupt function can t return value interrupt function h
78. library functions 1 Inline padding of functions Regarding functions strcpy and memcpy the system performs inline padding of func tions if the conditions in Table E 13 are met Table E 13 Optimization Conditions for Standard Library Functions Function Name Optimization Condition Description Example strcpy First argument far pointer strcpy str Ssample Second argument string constant memcpy First argument far pointer memcpy str sample 6 Second argument far pointer memcpy str fp 6 Third argument constant 2 Selection of high speed library NC30 only Some standard library functions have a pointer in argument NC30 normally handles such pointers as the far pointer For this reason NC30 does not generate efficient code if the argument is a near pointer Therefore if the argument is a near pointer the system performs optimization to choose a library function provided for use as near The table below lists the functions that are subject to such optimization Table E 14 Library Functions Subject to Optimization bcopy strcat strnicmp strstr bzero strchr strlen strspn memchr sircmp strncat strtod memcmp strcoll strncmp strtok memcpy strcpy strncpy strtol memicmp strcspn strnicmp strtoul memmove strerror strobrk strxfrm memset stricmp strrchr Appendix E 84 are E 3 1 Appendix E Standard Library Modifying Standard Library The NC30 package includes a sophisticated function library which inc
79. lt Pull registers reit END lt Return to C program Figure 3 18 Example Coding of Interrupt Processing Assembler Function NC30 MANUAL 61 Chapter 3 Programming Technique e Notes on Calling C Functions from Assembler Functions Note the following when calling a function written in C from an assembly language pro gram 1 Call the C function using a label preceded by the underscore _ or the dollar 2 Make sure the registers used in the assembler functions are saved before calling any C language function and that they are restored after returning from the C language function NC30 MANUAL 62 Chapter 3 Programming Technique 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 Therefore do not modify the FB value in assembler functions If it is yet necessary to modify the FB register for reason of system design save it to the stack at the beginning of a function and restore it when returning to the functio
80. lt Static variable asm mov w_ 01H ext_val asm mov w_ 01H s_val Assembly language source file compile result glob _ func _ func _line 8 HHC SRC asm mov w 01H ext_val HHH ASM START mov w 01H _ext_val lt Move to _ext_val line 9 H C_SRC asm mov w 01H s_val mov w 01H SO s val lt Move to SO s val HHHH ASM END _ line 12 HH C SRC rts SECTION bss NE DATA SO s val H C s name is s_val blkb 2 glob _ext_val _ext_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 bit field name Figure B 29 Format for Specifying Symbol Names You can specify one variable name using this format See Figure B 30 for an example Appendix B 16 Appendix B Extended Functions Reference struct TAG char bit0 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 FUNCTION func ARG Size 0 Auto Size 0 Context Size 3 section program file kk c line 10 H HHC SRC glob _ func _func _ line 11 C_ SRC asm bset b s bit1 HHHH ASM START bset 1 S
81. macro identifier of macro UNIX Increase the swap area MS Windows Increase the swap area 21 include file not found 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 gt Specify a correct filename 23 include file nesting over Nesting of include files exceeds the limit 8 Reduce nesting of include files to a maximum of 8 levels 25 illegal identifier Error in define Code the source file correctly 26 illegal operation Error in preprocess commands if elseif as sert operation expression Rewrite operation expression correctly 2 macro argument error Error in number of macro parameters when ex panding 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 con verting macros Reduce each line in the source file to a maximum of 1023 characters If you anticipate macro con version modify the code so that no line exceeds 1023 characters after conversion 29 EOF in comment End of file encountered in a comment Correct the source file Appendix F 5 Appendix F Error Messages Table F 5 cpp30 Error Messages 3 4 No Error message Description a
82. may selects functions with good code efficiency by optimization strcspn 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 strcspn 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 consisting of characters other than those in s2 from area s1 and searches the characters from the beginning of s1 You cannot search for 0 Appendix E 69 Appendix 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 NU
83. nonflammable material or iii prevention against any malfunction or mishap Notes regarding these materials These materials are intended as a reference to assist our customers in the selection of the Renesas Technology product best suited to the customer s application they do not convey any license under any intellectual property rights or any other rights belonging to Renesas Technology Corporation Renesas Solutions Corporation or a third party Renesas Technology Corporation and Renesas Solutions Corporation assume no responsibility for any damage or infringement of any third party s rights originating in the use of any product data diagrams charts programs algorithms or circuit application examples contained in these materials All information contained in these materials including product data diagrams charts programs and algorithms represents information on products at the time of publication of these materials and are subject to change by Renesas Technology Corporation and Renesas Solutions Corporation without notice due to product improvements or other reasons It is therefore recommended that customers contact Renesas Technology Corporation Renesas Solutions Corporation or an authorized Renesas Technology product distributor for the latest product information before purchasing a product listed herein The information described here may contain technical inaccuracies or typographical errors Renesas Technology Corporation and
84. not be concerned with it d The Other Extensions Table B 6 Using Inline Assembler Description Function Extended feature Description pragma ASM Specifies an area in which statements are written in assembly pragma ENDASM language Syntax pragma ASM pragma ENDASM Example pragma ASM mov w RO 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 Appendix B 35 Appendix B Extended Functions Reference B 2 Using Memory Mapping Extended Functions NC30 includes the following memory mapping extended functions pragma BIT 1 bit Manipulate Instruction using Variable Declaration Function Function Declares an external variable that exists in an area where a one bit manipulate instruc tion can be used in 16 bit absolute addressing mode Syntax pragma BITAvariable_name Description The M16C 60 series allows you to use a one bit manipulate instruction for external vari ables located in an area of addresses 00000H to 01FFFH in a ROM efficient 16 bit absolute addressing mode The variable declared by pragma BIT is assumed to be present in an area where a one bit
85. of levels of nesting but it depends on the amount of available memory You cannot use the sizeof operator cast operator or variables in a constant expression Appendix C 24 Appendix C Overview of C Language Specifications Hifndef elif else endif a Function Format Description Performs conditional compilation Examines the macro defined or not ifndefAidentifier jeiaconstani expression iie endii if an identifier isn t defined ifndef processes the program that follows You can also describe the followings ifA definedA identifier ifA definedA 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 elif is used in a pair with if ifdef or ifndef endif indicates the end of the range controlled 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 You cannot use the sizeof operator cast operator or variables in a constant expression Appendix C 25 Appendix C Overview of C Language Specifications C 3 3 Predefined Macros The following macros are predefined in NC30 Mi6C NC3O C 3 4 Usage of predefined Macros The predefined macros are used to for example use preprocess commands to swit
86. option1Aoption2 A lt C source file name gt Execution n the example below the map file is generated when compiling example nc30 g v osample 1n30 ms ncrt0 a30 sample c M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncrt0 a30 as30 N N ncrt0 a30 sample c cpp30 sample c 0o sample i DM16C DNC30 ccom30 sample i o sample a30 g as30 N N sample a30 l1n30 ncrt0 r30 sample r30 G MS ms o sample omitted ls sample rw r r 1 toolusr 2850 Aug 17 14 51 sample c W 1 toolusr 44040 Aug 17 15 47 sample x30 W Ss 1 toolusr 8310 Aug 17 15 47 sample map Notes Do not specify the In30 options G O ORDER L T V or file Appendix A 51 Appendix A Command Option Reference For reference the following table lists the options for In30 which is part of the AS30 V 4 10 package Option Description E Specifies the start address of an absolute object module LD Specifies the directory of the library to be referenced LOC This command option outputs the data of a specified section to an absolute file beginning with a specified address However symbol values ad dresses etc within the section do not change M Generates a map file MS Generates a map file including symbol information MSL The fullname of symbol more than 16 characters are output to map
87. other than a function name 5 No error occurs if you duplicate pragma CYCHANDLER declarations 6 A compile error occurs if you use any function specified in one of the following decla rations in pragma CYCHANDLER pragma INTERRUPT oragma INTHANDLER pragma HANDLER oragma ALMHANDLER pragma TASK Example include lt mr30 h gt include tid nT pragma CYCHANDLER cyc void eyc void lt Be sure to declare as type void omitted Figure B 78 Example of pragma CYCHANDLER Declaration Appendix B 50 Appendix B Extended Functions Reference pragma INTHANDLER pragma HANDLER Function Declares an MR30 OS dependent interrupt handler Syntax 1 pragma INTHANDLERAinterrupt handler name 2 pragma HANDLERAnmnterrupt handler name Description By using the above format to declare an interrupt handler a function written in C NC30 generates the code for the handling shown below to be used at the entry and exit points of the function 1 At the entry point Push i e save the registers onto the current stack 2 At the exit point Returns from the interrupt with the ret_int system call Also re turns from the interrupt by the ret_int system call when returning at a return statement partway through the function To declare an MR30 OS independent interrupt handler use pragma INTERRUPT You canNOT write interrupt handlers that take parameters The return value from the interrupt hand
88. pointer where the specified character is found Returns NULL when the specified character cannot be found Description Returns the location pointer of the first character string s2 from the beginning of area s1 When you specify options O OR or OS 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 endptr Pointer to the remaining character strings that have not been converted ReturnValue ReturnValue OL Does not constitute a number ReturnValue OL Returns the configured number in double type Description When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 75 Appendix 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 divid
89. possible optimization in transfer and comparison of character strings 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 Exsample int a 3 int p a testl int b p 9 a 10 bD Fo By applying optimization p will be transposed to 9 printf b d expect b 10 n b result b 9 expect 10 The next page is followed Appendix A 16 Appendix A Command Option Reference Ol1 d Optimization Notes When the O5 optimizing options is used the compiler generates in some cases BTSTC or BISTS bit manipulation instructions In M16C the BISTC and BTSTS bit manipulation instructions are prohibited from rewriting the con tents of the interrupt control registers However the compiler does not recog nize the type of any register so should BTSTC or BTSTS instructions be generated for interrupt control registers the assembled program will be differ ent from the one you intend to develop When the O5 optimizing options is used in the program shown below a BISTC instruction is generated at compilation which prevents an interrupt request bit from being processed correctly resulting
90. specified in the header of the assembler pseudo instruction PAGE 2 You cannot write a pragma PAGE in an auto variable declaration void func int i j for i 0 i lt 10 i func2 pragma PAGE EEE Figure B 84 Example of pragma PAGE Appendix B 56 Appendix B Extended Functions Reference pragma _ASMMACRO Function Declares defined a function by assembler macro Syntax pragma__ASMMACRO A 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 t 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 R8R2R1R0 long types R2RO long long type R3R1R2RO0 5 f you 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 Example static long mul int int Be sure to declare static pragma _ ASMMACRO mul R0 R2 pragma ASM _mul macro mul wR2 RO The return value is set to
91. the D option is not of a character type letter or underscore that can be used in a macro name Illegal macro name defini tion 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 cpp30 com mand line Specify only legal options 11 cannot open input file Input file not found Specify the correct input file name 12 cannot close input file Input file cannot be closed gt Check the input file name 14 cannot open output file Cannot open output file Specify the correct output file name 15 cannot close output file Cannot close output file Check the available space on disk Appendix F 4 Appendix F Error Messages Table F 4 cpp30 Error Messages 2 4 No Error message Description and countermeasure 16 cannot write output file Error writing to output file Check the available space on disk 17 input file name buffer over The input filename buffer has overflowed Note flow 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 Insufficient memory for macro name and contents
92. 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 call ing function by the REIT instruction You may specify either B or E of F in this declaration 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 Multiple interrupts are enabled immediately after entering the interrupt This im proves interrupt response F NC308 ONLY Return to th calling function by the FREIT instruction in exit processing Rules 1 A warning 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 decla ration 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 Example pragma INTERRUPT i_func void i_func int counter 1 Figure B 74 Example o
93. the commands if and elif process the program that follows elif is 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 but it depends on the amount of available memory You cannot use the sizeof operator cast operator or variables in a constant expression Appendix C 23 Appendix C Overview of C Language Specifications itdef elif else endif a Function Format Description Performs conditional compilation Examines the macro defined or not ifdefAidentifier delfxconetean expression jas endii if an identifier is defined ifdef processes the program that follows You can also describe the following ifA definedA identifier ifA definedA 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 elif is 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
94. the stream sprintf Writes text with format to a character string viprintf Output to a stream with format vprintf Output to stdout with format vsprintf Output to a buffer with format Return ungete Sends one character back to the input stream Deter ferror Checks input output errors mina tion i ce EOF End of File Appendix E 7 Appendix E Standard Library Stdlib h eae 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 num ber atol 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 free Frees the allocated memory area labs Calculates the absolute value of a long type integer Idiv 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 strt
95. these products or technologies are subject to the Japanese export control restrictions they must be exported under a license from the Japanese government and cannot be imported into a country other than the approved destination Any diversion or reexport contrary to the export control laws and regulations of Japan and or the country of destination is prohibited Please contact Renesas Technology Corporation or Renesas Solutions Corporation for further details on these materials or the products contained therein For inquiries about the contents of this document or product fill in the text file the installer generates in the following directory and email to your local distributor SUPPORT Product name SUPPORT TXT Renesas Tools Homepage _http www renesas com en tools O NC30 User s Manual Contents NC30 MANUAL III Contents L1 NG3O COMPONEN S side ostc cs cero icncesnnddacsdorecstustasnsvalnintwteeacnennssexatentycesaeiaedoacsanieeanetstaedencetente 1 ta NOOO PFcCeSSiNO FION sonini n E e a E 1 e BGO r E E E E R E E onbaoamienindan 2 Te E a E E EA E E E E A E E EE AA 2 a COUN oases tens a rte E N E E E E E 2 124 AOP ara ret see cc teasers cna EEEE EEEE atone nase stecanccencteniieteneaesee oceeiontccsnocevenctecten 2 1 2 5 StkViewer amp SUM ocacscosentevsncsnestncrkcdindenssunaenceneieyseasbesnncdtaciadesevoyeseabeanessncsutebacckesdectemoeenceuauest 2 Too U E E E 2 Tee RD WISIN erie E E asaqenseueeeedecce
96. tokens as shown below define debug s t printf x s d x t d x S x 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 Appendix C 17 Appendix C Overview of C Language Specifications define Macro definitions can be nested to a maximum of 20 levels as shown below define XYZ1 100 define XYZ2 XYZ1 abbreviated define XYZ20 XYZ19 undef a Function Nullifies an identifier that is defined as macro Format undefAidentifier Description Nullifies an identifier that is defined as macro The following four identifiers are compiler reserved words Because these identifi ers must be permanently valid do not undefine them with undef Name of source file Current source file line No Date compiled mm dd yyyy Time compiled hh mm ss Appendix C 18 Appendix C Overview of C Language Specifications include ee Function Takes in the specified file Format 1 includeA lt file name gt 2 includeA file name 3 includeAidentifier Description 1 Takes in lt file name gt from the directory specified by nc30 s command line option l Searches lt file name gt from the directory specified by environment variable INC30 if it s not found 2 Takes in file name from the current directory Searches file name from the following director
97. used fchange_bank_always fCBA Function This option allows you to write multiple variables to an extended area with pragma EXT4MPTR Supplement Specify this option when you declare multiple pointer variables to a 4M space while at the same time using the pragma EXT4MPTR feature Appendix A 37 Appendix A Command Option Reference A 2 Library Specifying Option Table A 7 lists the startup options you can use to specify a library file Table A 7 Library Specifying Option Option Function l ibraryfilename_ Specifies a library file that is used by In30 when linking files Appendix A 38 Appendix A Command Option Reference l ibraryfilename Function Specifies a library file that is used by In30 when linking files The file extension can be omitted Syntax nc30A lfilenameA lt C source file name gt Execution Q nc30 v lusrlib ncrt0 a30 sample c example M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncecrt0 a30 as30 N ncert0 a30 sample c cpp30 sample c 0o sample i DM16C DNC30 ccom30 sample i o sample a30 main as30 N sample a30 l1n30 ncrt0 r30 sample r30 l1 usrlib o Mere In this example the option is used to specify a library named usrlib lib Notes 1 In file specification the extension can be omitted If the extension
98. void func lt Function is called using variable sym as argument omitted Figure B 49 Example for specifying default argument with a variable smp2 c _main line 6 mov w _sym R1 lt Function is called using variable sym as argument jsr func _ line 7 rts Figure B 50 Compile Result of smp2 c smp2 a30 Appendix B 26 Appendix B Extended Functions Reference 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 When specifying a default value for 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 51 shows examples of incorrect description void funct inti int j 1 int k 2 correct void func2 int i int j int k 2 correct void func3 inti 0 int j int k incorrect void func4 int i 0 int j int k 1 incorrect Figure B 51 Examples of Prototype Declaration 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
99. 0 The two memory areas are equal Return Value gt 0 The first memory area s1 is greater than the other Return Value lt O 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 OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 50 Appendix E Standard Library 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_ tn Number of bytes to be moved ReturnValue Returns a pointer to the destination of movement When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization memset Memory Handling Functions Function Set a memory area Format include lt string h gt char _far memset s c n Method function Argument void _far s Pointer to the memory area to be set at RIEA e EEE Data to be set SIZE TG eon Number of bytes to be set ReturnValue Returns the pointer to the memory area which has been set Description Sets n bytes of data c in memory s When you specify options O OR or OS the system may selec
100. 0 characters for as30 or In30 Reduce the options to 99 characters or less This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp The required parameter was not specified in option gt Specify the required parameter after You specified a space between the option and its parameter Delete the space between the option and its param eter No output filename was specified after the o option gt Specify the name of the output file Do not specify the filename extension Appendix F 2 Appendix F Error Messages Table F 2 nc30 Error Messages 2 2 Error message Invalid suffix xxx No such file or directory Not enough core Permission denied can t open command file too many options Result too large Too many open files Description and countermeasure You specified a filename extension not recognized by NC30 other than c i a80 r30 x30 Specify the filename with the correct extension The processing system will not run Check that the directory of the processing system is correctly set in the environment variable UNIX Insufficient swap area Increase the swap area by for example adding a sec ondary swap area MS Windows 95 98 NT Insufficient swap area Increase the swap area The processing system will not run Check access permission to the processing systems O
101. 1 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 2 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 55 is processed as an error in NC30 inline void func int i void main void rie CL Error Message Error ccom smp 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 function 1 Furthermore after using some function as an ordinary function if you define that function as an inline function later your inline specification is ignored and all functions are handled as static functions In this case NC30 generates a warning See Figure B 57 int func int i void main void func 1 inline int func int i return i Warning Message Warning ccom smp c line 9 inline function is called as normal function before change to static function Figure B 57 Example of inappropriate code of inline function 2 Appendix B 30 Appendix B Extended Functions Reference 3 Re
102. 1 0ah mov b 00h 0ah ldc 0080h flg 8 ldc stack_top sp set stack pointer Lhe data_SE_top sb set sb register ldintb VECTOR_ADR N_BZERO bss_SE_top bss_SE 9 N_BZERO bss 50 Lop bss 50 N_BZERO bss_NE_top bss_NE N_BZERO bss_NO_top bss_NO N_BCOPY data_SEI_top data_SE_top data_SE lt 10 N_BCOPY data DOL top data O Gop dated SO N_BCOPY data_NEI_top data_NE_top data_NE N_BCOPY data_NOI_top data_NO_top data_NO BZERO bss_FE_top bss_FE 11 BZERO bss_FO_top bss_FO Copy edata_E O section from edata_EI OI section BCOPY data_FEI_top data_FE_top data_FE 12 BCOPY data_FOI_top data_FO_top qdata_Fo Lae Sstack_top sp stk 40 6 After a reset execution starts from this label start 7 Sets processor operating mode 8 Sets IPL and each flags 9 Clears the near and SBDATA bss section to zeros 10 Moves the initial values of the near and SBDATA data section to RAM 11 Clears the far bss section to zeros 12 Moves the initial values of the far data section to RAM Figure 2 8 Startup Program List 3 ncrt0 a30 3 4 1 Comment out this line if no far area is used NC30 MANUAL 22 Chapter 2 Basic Method for Using the Compiler glb _ mbase 13 glb _ mnext glb _ msize mov w heap_top amp 0FFFFH _ mbase mov w heap_top gt gt 16 _ mbase 2 mov w heap_top amp 0FFFFH _ mnext mov w heap_top gt gt 16 _ mnext 2 mov w HEAPSIZE amp OFFFFH _ msize
103. 16C Family Version X XX XX Assembler Processor asp30 for M16C Family Version X XX XX Linkage Editor 1n30 for M16C Family Version X XX XX Librarian 1b30 for M16C Family Version X XX XX Load Module Converter lmc30 for M16C 60 Series Version X XX XX Cross Referencer xrf30 for M16C Family Version XK XX XX Absolute Lister abs30 for M16C Family Version X XX XX D MTOOL nc30wa gt Supplement Use this option to check that the compiler has been installed correctly The 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 us ing this option the package may not have been installed correctly See the M3T NCSOWA Guide for details of how to install the NC30 package Notes 4 Use uppercase V for this option 2 If you specify this option all other options are ignored Appendix A 11 Appendix 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 Q 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 In the entry version this option is a
104. 16C s memory space the code efficiency generated by the com piler can be increased by specifying this option In application programming for the single chip this option is effective if the RAM area is defined within the area as described above An error occurs at link time when you use the argument other than above Appendix A 34 Appendix A Command Option Reference fno_carry fNC Function Suppresses carry flag addition when data is indirectly accessed using far type pointers supplement When accessing structures or 32 bit data indirectly using far type pointers this option generates code that does not perform carry addition to the high 16 bits of far type pointers 32 bit pointer assuming that the data is not mapped across the 64 Kbyte boundary As a result the code will be more efficient Note When far type pointers are used to indirectly access memory dynamically allo cated using the malloc function etc or ROM data mapped to the far area be sure that the data is not accessed spanning a 64 Kbyte boundary fauto_128 fAT Function Limits the usable stack frame to 128 bytes Appendix A 35 Appendix A Command Option Reference fuse DIV fUD Function This option changes generated code for divide operation In the entry version this option cannot be specified supplement For divide operations where the dividend is a 4 byte value the divisor is a 2 byte value and the result is a 2 byte va
105. 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 Chapter 1 Introduction to NC30 nc30 nc30 is the executable file of the compile driver By specifying options nc30 can perform the series of operations from compiling to linking You can also specify for the as30 relocatable macro assembler and four for the In30 linkage editor by including the as30 and In30 command line options when you start nc30 cpp30 cpp30 is the executable file for the preprocessor cop30 processes macros starting with define include etc and performs conditional compiling if else endif etc ccom30 ccom30 is the executable file of the compiler itself C source programs processed by cpp30 are converted to assembly language source programs that can be processed by as30 aopt30 aopt30 is the assembler optimizer It optimizes the assembler codes output by ccom30 In the entry version this option cannot be specified StkViewer amp stk StkViewer is the execution file for the utility that graphically shows the stack size and the relationship of function calls needed for program operation Also stk is the execution file for the utility that analyzes the information required for StkViewer StkViewer calls stk to process the Inspector information added to the absolute module file x30 find the stack size and the relationship of function calls needed for program operation and displays the result Also by specifying information if any that c
106. 30 Warning Messages 4 10 Warning message cyclic or alarm handler function has argument enumerator value overflow size of unsigned char enumerator value overflow size of unsigned int enum s bitfield external variable initialized change to public far pointer implicitly casted by near pointer function must be far handler function called handler function can t return value handler function has argument hex character is out of range identifier member name is dupli cated this declare ignored identifier variable name is duplicate identifier variable name is shad owed Description and countermeasure The function specified by pragma CYCHANDLER or ALMHANDLER is using an ar gument The function cannot use an argument Delete the argument The enumerator value exceeded 255 Do not use more than 255 for the enumerator otherwise do not specify the startup function fchar_enumerator The enumerator value exceeded 65535 Do not use more than 65535 to describe the enumerator An enumeration is used as a bit field member Use a different type of member An initialization expression is specified for an ex tern declared variable extern will be ignored Delete extern The far pointer was converted into the near pointer Check the data types near or far The function is declared with the near type Write it correctly The function specified by pragma HANDLER
107. 7 Programming Technique 3 1 3 1 1 Chapter 3 Programming Technique Chapter 3 This chapter describes precautions to be observed when programming with the C compiler NC30 Notes Renesas Technology 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 Technology Corp Renesas Solutions Corp or an authorized Renesas Semicon ductor product distributor when considering the use of a product contained herein for any specific purposes such as apparatus orsystems for transportation vehicular medical aerospace nuclear or undersea repeater use Notes about Version up of compiler The machine language instructions assembly language generated by NC30 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 struc tures which have different member names but are mapped into the same RAM NC30 MANUAL 48 Chapter 3 Programming Tec
108. 79 SPECIAL 178 i SPECIAL 177 SPECIAL 176 SPECIAL 175 A SPECIAL 174 SPECIAL 173 SPECIAL 172 SPECIAL 171 SPECIAL 170 7 SPECIAL 169 A SPECIAL 168 SPECIAL 167 SPECIAL 166 SPECIAL 165 SPECIAL 164 7 SPECIAL 163 i SPECIAL 162 SPECIAL 161 SPECIAL 160 SPECIAL 159 A SPECIAL 158 SPECIAL 157 A SPECIAL 156 SPECIAL 155 SPECIAL 154 F SPECIAL 153 SPECIAL 152 SPECIAL 151 Figure 2 14 Startup Program List 9 sect30 inc 5 8 NC30 MANUAL 28 Chapter 2 Basic Method for Using the Compiler 7 SPECIAL 150 SPECIAL 149 SPECIAL 148 SPECIAL 147 SPECIAL 146 SPECIAL 145 SPECIAL 144 SPECIAL 143 SPECIAL 142 SPECIAL 141 SPECIAL 140 SPECIAL 139 SPECIAL 138 SPECIAL 137 SPECIAL 136 7 SPECIAL 135 SPECIAL 134 SPECIAL 133 SPECIAL 132 SPECIAL 131 7 SPECIAL 130 SPECIAL 129 A SPECIAL 128 SPECIAL 127 A SPECIAL 126 SPECIAL 125 SPECIAL 124 SPECIAL 123 SPECIAL 122 SPECIAL 121 SPECIAL 120 SPECIAL 119 i SPECIAL 118 SPECIAL 117 SPECIAL 116 SPECIAL 115 SPECIAL 114 SPECIAL 113 SPECIAL 112 E SPECIAL 111 SPECIAL 110 f SPECIAL 109 A SPECIAL 108 SPECIAL 107 SPECIAL 106 SPECIAL 105 SPECIAL 104 7 SPECIAL 103 SPECIAL 102 SPECIAL 101 SPECIAL 100 SPECIAL 99 A SPECIAL 98 SPECIAL 97 A SPECIAL 96 SPECIAL 95 SPECIAL 94 7 SPECIAL 93 SPECIAL 92 SPECIAL 91 SPECIAL 90 SPECIAL 89 7 SPECIAL 88
109. A RARE EANNA ARNELA AAEE 2 F9 COJO Eror eS ro oro coco ttichd ces ohonninscraentoneamesatedvesinotuesoctieleuteneciotilied ea aE aS PaE 4 F 4 cpp30 Warning Messages ccccccccseececseeeeeceeeeeeseeeeeneueeeseueeessaeeeeseeeessaueeesaneeesaneeesaags 8 S9 CY OP S AUO e r 9 F 6 ccom30 Warning Messages sccscriscnsscarcenriernedanepundacoionnarsiniaeieasteorhinesaaapninuienasionaienienns 23 Appendix G The SBDATA declaration amp SPECIAL page Function declaration Utility uti30 1 Ga Miroduclon orulo ernennen e A Ener A EAEE nals STE ST RE 1 G 1 1 Introduction of utl30 processes ccccccccccccceseeeeseeeeeeeeeeeaeaeeseeeeseeeeeeeesaeeeaeseeeeeeeeeeeaaaaas 1 Ga SANNO USO eaa a ai aa en ETANO E E aai 2 G21 uto Command Line Fonna s ursisrnseniai si naise eeni saN aR E aa 2 2 2 Selecting Quiput INormatonS ssis i e a EA Ra 3 NC30 MANUAL X G3 G 4 G 5 G 6 G 2 3 utl30 Command Line Options cicccscccncscscesccccecssedececesaasedies sdesdaibecsacdadeasesasadaceecuaenceondenecsdads 4 aeDA oa cece ete eae ase wees cere eee ec cate asec cece eee 5 SS D AAE S E E T ase dec os dean pcg susan vieastusci sees A E E 5 BN aioe cd EA ARE A A es end senna AE A ses E E E Vaasa E AEEA E A E E E E A 6 s EE E E E AE E P E E AE EE EE EA VEE E E E E AA 7 N SIO OU eee ee ee ee epee es eee etme eo pee ne ee ree ee eee oe ee eee eee 8 SEL o ainean AEN 8 Le p E E E EE E EE E E E E a A E ATTE T 9 ROT MUTT TOW Ysa ee oe eres aae iaaiiai 9 AE sciences s
110. A bit field of an invalid type is declared gt Use the integer type for bit fields Specifiers long are described thrice or more Check the type Use of the unary operator is illegal Check the right side expression of the operator Use of the unary operator is illegal Check the right side expression of the operator Use of the unary operator is illegal Check the right side expression of the operator Use of the unary operator is illegal Check the right side expression of the operator The void type specifier is used with long or singed Write the type specifier correctly The void type variable cannot be declared Pro cessing will be continued by assuming it to be the int type Write the type specifier correctly Get the bitfield size Not write bitfield on this decraration The switch statement is illegal Write it correctly The same label is defined twice within one func tion Change the name for either of the two labels Specifies bitfield by long long type Can not specifies bit fields of long long type The argument type is not the type declared in prototype declaration Check the argument type pragma ASM does not have matching pragma ENDASM gt Write pragma ENDASM The declaration statement is incomplete Write a complete declaration statement UNIX version The swap area is insufficient Increase the swap area
111. Appendix A Command Option Reference Upredefined macro Function Undefines predefined macro constants Syntax nc30A U predefined macroA lt C source file gt Execution example nc30 c UNC30 UM16C sample c M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c In this example macro definitions NC30 and M16C are undefined 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 Silent Compile driver control Function Suppresses the display of copyright notices at startup Execution example nc30 c silent sample c sample c Appendix A 6 Appendix A Command Option Reference dsource dS Comment option Function Generates an assembly language source file extension a30 with a C lan guage source list output as a comment Not deleted even after assembling Supplement When the S option is used the dsouce option is automatically enabled The generated files a30 and r30 are not deleted Use this option when you want to output C language source lists to the assem bly list file dsource_in list dSL List File option Function In addition to the
112. C Language Specifications e Operators NC30 can interpret the operators shown in Table C 9 Table C 9 Operators List monadic operator logical operator conditional operator 2 2 pinay operator conta operator coma operator z bitwise operator lt lt assignment operators gt gt 7 amp x A C amp relational operators H Z gt lt lt lt gt gt sizeof operator sizeof f Punctuators NC30 interprets the followings as punctuators g Comment Comments are enclosed between and They cannot be nested Comments are enclosed between and the end of line Appendix C 7 Appendix C Overview of C Language Specifications C 2 2 Type a Data Type NC30 supports the following data type character type integral type structure union enumerator type void floating type b Qualified Type NC30 interprets the following as qualified type const volatile ewstrict near far c Data Type and Size Table C 10 shows the size corresponding to data type Table C 10 Data Type and Bit Size Type Existence of sign Range of values ma he E char 04255 unsigned char signed char Bg t 28427 int Haa a short signed int signed short unsigned int ie feesese unsigned short long ae HE 2147483648 lt 2147483647 signed long unsigned long rs 0 lt 4294967295 long long Yes 92233720368547758084 signe
113. DIV finfo fswitch_other_section fchange_bank_always Short form Description fNAV Does not regard the variables specified by pragma ADDRESS pragma EQU as those specified by volatile fSA When referencing a far type array this option cal culates subscripts in 16 bits if the total size of the array is within 64K bytes In the entry version this option cannot be speci fied Make register storage class available fNA Does not align the start address of the function In the entry version this option cannot be speci fied None Changes the default instruction for calling func ee tions to JSR W fB Outputs a 1 bit manipulate instruction to all exter nal variables arranged in the near area fNC Suppresses carry flag addition when data is indi rectly accessed using far type pointers Limits the usable stack frame to 128 byte fUD This option changes generated code for divide operation In the entry version this option cannot be speci fied None Outputs the information required for the Inspec tor STK Viewer Map Viewer and utl30 In the entry version this option cannot be speci fied fSOS This option outputs a ROM table for a switch statement to some other section than a program section fCBA This option allows you to write multiple variables to an extended area Appendix A 26 Appendix A Command Option Reference fansi Modify generated code Function Validates the
114. E A 37 b Outline of memory mapping setup file a ssccccencesacstseeteaesecccercesauesseseesteessmnetswstsceeestie 40 E Noanoa e See NC srasni Ea NS 40 d Mapping and Order Sections and Specifying Starting Address cccccceeeeeseeeeeees 41 1 Rules for Mapping Sections to Memory cccccccessssseseceeeeeeeeeeseeeeesseeeeeeeeeeeneaas 41 2 Example Section Mapping in Single Chip Mode cccccccsecessssseeeeeeeeeeeeeeeees 43 e Setting Interrupt Vector Table cx sic sic vceccenccdanestvsnadnennciennoanses deeniedncdosactecntameeseedeiancseceeueeeee 46 f Setting SPECIAL Page Vector Table cccccccssseecccceceesseeceeseeseeeceeeesseaaeeeeeessanseeeeees 47 PPS PERE PEA EEEE A A OAE EE OEE AE E E E E A TEA EEE 48 3 1 1 Notes about Version up of compiler ssssssssssssrrnnrrerrrrensrrrrrtrrtrtentrnrrtttrrtrensnnrrtrrtnrreene 48 3 1 2 Notes about the M16C s Type Dependent Part nsnnsnnennennnnnnnennennrrrnnnnnrrrrennnrnnrrnnreeee 49 SL ABDU PIM ZNO tis 2e2catcasccescateeeecoasseaacasacecsdnncacssqsreieneeceecnecateniecsedadsasencaceseeeicananeesasnneeces 50 M SA E EE E I E E N E T P E A E ine 50 1 Meaningless variable access wacsicccccssisascceccsesssvesdeecasceasqueesacenstceancdasseesadecagsaancenactes 50 lt Meaningless COMIDAIISON sereisas e Ea EEA E EAn 50 a Oe NOEGO o occ tcc pcsatraansrantedederunrudepacnenceaiecerdanereiieiaueneeatepeesoanteuice 51 4 Operation between constants iacic
115. F is encountered or error occurs in the I O function 4 int mod Stores the flags indicating the text mode _TEXT and binary mode _BIN 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 Binary mode No conversion of I O data These flags are set in the initialization block of the stream 5 int _func_in When the stream is in read only mode _lIOREAD 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 6 int _func_out When the stream is in write mode _IOWRT stores the level 3 output function pointer If the stream can be input _IOREAD 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 Appendix E 91 Appendix E Standard Library Set values for all elements other than char_buff in the stream initialization block The Standard library file supplied in the NC30 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 stdi
116. G Size 2 Auto Size 4 offset 4 OLLSSt RZ offset 5 lt 7 REGISTER R1 lt 8 REGISTER R2 lt 9 Context Size 5 size j size size i size section _file program proto c _ line C_SRC glb H 4 SH helemn on aor ere SFune proto 04H R1 2 FB R2 4 FB _ line 5 C_SRC mov Ww add w add w exitd 7 This passes the third argument k via stack 8 This passes the first argument i via register 9 This passes the second argument j via register 10 This is the start address of function func_proto enter mMmov w mov w return i 2 FB RO 4 FB RO 7 S5S FB RO 7 Figure D 11 Compile Result of Sample Program sample c 1 3 In the compile result 1 of the sample program sample c listed in Figure D 10 the first and second arguments 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 offset 5 offset 7 offset 9 Context Size 5 FRAME ARG FRAME ARG FRAME ARG ARG Size 6 Auto Size 0 line TI pat CSRO i glb _func_no_prote 12 _func_no_proto enter 00H soline 12 C_SRC m
117. HHHH ASM END _ line 12 H HC SRC rts SECTION bss_NO DATA 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 OOOOH and 1FFFH Appendix B 17 Appendix 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 without 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 32 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 C source file extern int e val extern variable void func void int f val auto variable register int r_val register variable static int s_ val static variable 1 e_val Reference to external variable 2 f_val Reference to auto variable 3 r_val Reference to register variable 4 s_val Reference to static variable f_val r_val Assembly language source file compile result glb _
118. IT Number ofchariypebis 8 CHAR_MAX Maximum value that a char type variable can take 255 CHAR_MIN Minimum value that a char type variable can take O SCHAR_MAX Maximum value that a signed char type variable 127 SCHAR_MIN Minimum value that a signed char type variable 128 can take on as value INT MAX Maximum value that a int type variable can take on 82767 as valueMaximum value that a int type variable can take on as value INT MIN Minimum value that a int type variable can take on 32768 SHRT_ MAX Maximum value that a short int type variable can 32767 SHRT_MIN Minimum value that a short int type variable can 32768 LONG_MAX Maximum value that a long type variable can take 2147483647 LONG_MIN Minimum value that a long type variable 2147483648 LLONG_MAX Maximum value that a signed long long type vari 9223372036854775807 LLONG_MIN Minimum value that a signed long long 9223372036854775808 UCHAR_MAX Maximum value that an unsigned char type vari 255 UINT MAX Maximum value that an unsigned int type variable 65535 USHRT MAX Maximum value that an unsigned short int type 65535 ULONG_MAX Maximum value that an unsigned long int type 4294967295 ULLONG_MAX _ Maximum value that an unsigned long long int 18446744073709551615 type variable can take on as value Appendix E 4 Appendix E Standard Library locale h reer eet Function Defines declares macros and functions that manipulate program localization The follow ing lists loca
119. KER UR O IREE CRAVO Function When used simultaneously with the sb30 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 sp30 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 Execution Output SBDATA declaration example ut1l30 sb30 all ncrt0 x30 M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Stype sample h x oragma SBDATA Utility aF SBDATA Size 255 pragma SBDATA z size omit pragma SBDATA vx size Output SPECIAL page Function declaration ULL30 sp30 all ncrt0 x30 M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Stype sample h x pragma SPECIAL PAGE Utility X7 pragma SPECIAL 255 func 200 ref 2 omit pragma SPECIAL 254 funcl 2000 ref 1 Supplement 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
120. L 19 Chapter 2 Basic Method for Using the Compiler 2 2 Preparing the Startup Program For C language programs to be burned into ROM NC30 comes with a sample startup program written in the assembly language to initial set the hardware M16C 60 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 tt 2 2 1 Sample of Startup Program The NC30 startup program consists of the following two files 1 nert0 a30 Write a program which is executed immediately after reset T 2 sect30 inc Included from ncrt0 a30 this file defines section locations memory mapping Figures 2 6 to 2 9 show the ncrt0 a30 source program list Figures 2 10 to 2 13 show the sect30 inc source program list RK KR RR RRR RRR RR ROO KK I kk C COMPILER for M16C 60 20 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncrt0 a30 NC30 startup program This program is applicable when using the basic I O library ncrt0 a30 v 1 16 2003 03 27 10 57 43 XXXXXXXX Exp KK KK KK KKK KK KKK KKK KK KKK KK KKK XkX X glb _ BankSelect BankSelect equ OBH VECTOR_ADR equ OffdO0oOh 1 defines the heap size 2 defines the user stack size 3 defines the interrupt stack size 4
121. LL However all letters are treated as uppercase letters strerror String Handling Functions Function Converts an error number into a character string Format include lt string h gt char _far strerror errcode Method function Argument int errcode error code ReturnValue Returns a pointer to a message character string for the error code Note stderr returns the pointer for a static array Appendix E 70 Appendix E Standard Library strien String Handling Functions 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 tn Number of characters to be concatenated ReturnValue Returns a pointer to the concatenated character string area Description Concatenates character strings s1 and n characters
122. ON ALL RIGHTS RESERVED EARN NERE TOR UR TN ERN RE E ER E EE RC EEE EE EN E A N RA CRN E D E EAN E PE E A E RN A R ANON KE ER AE ERER A Figure 2 17 Startup Program List 12 sect30 inc 8 8 NC30 MANUAL 31 Chapter 2 Basic Method for Using the Compiler 2 2 2 Customizing the Startup Program a Overview of Startup Program Processing About ncrt0 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 Seis 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 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_SOl are transferred to RAM data_NE data_NO data_SE and data_SO Initializes the data far area bss FE and bss _ FO sections are cleared to 0 Also the initial values in the ROM area data_FEl data_FOl storing them are transferred to RAM data_FE and data_FO Initializes the heap area Initializes the standard O function library Initializes FB register Calls the main function NC30 MANUAL 32 Chapter 2 Basic Method for Using the Compiler b Modifying the Startup Program Figure 2 18 sum
123. ORATION ALL RIGHTS RESERVED Appendix G 5 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 O Outputs the declared SBDATA result display file 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 per sonal computer standard output device If the specified file already exists the result is written to the standard output device Execution Output SBDATA declaration example ut130 sb30 ncrt0 x30 0o sample M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Stype sample h pragma SBDATA Utility 2 SBDATA Size 255 pragma SBDATA z size omit pragma SBDATA vx size Output SPECIAL page Function declaration Q ut1l30 sp30 ncrt0 x30 0o sample M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Stype sample h pragma SPECIAL PAGE Utility Ry pragma SPECIAL 255 func 200 ref 2 omit pragma SPECIAL 254 funcl 200 ref 1 Appendix G 6 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 all VE
124. 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 Appendix A 21 Appendix A Command Option Reference Ostack_frame_align OSFA Function Aligns the stack frame on an even boudary In the entry version this option cannot be specified Supplement When even sized auto variables are mapped to odd addresses memory ac cess requires one more cycle than when they are mapped to even addresses This option maps even sized auto variables to even addresses thereby speed ing up memory access Notes 1 The following functions apecified in pragma are not aligned pragma INTHANDLER pragma HANDLER pragma ALMHANDLER pragma CYCHANDLER pragma INTERRUPT 2 Be sure that the stack point is initialized to an even address in the startup program Also be sure to compile all programs using this option 3 All files should be compiled using this option Oloop_unroll loop count OLU Function Unrolls code as many times as the loop count without revolving the loop state ment The loop count can be omitted When omitted this option is applied to a loop count of up to 5 In the entry version this option cannot be specified 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 unrolle
125. R2RO register endm pragma ENDASM long l1 void test func void 1 mul 2 3 Figure B 85 Example of pragma _ AMMACRO Appendix B 57 B 8 B 8 1 B 8 2 Appendix B Extended Functions Reference assembler Macro Function Outline of Assembler Macro Function NC30 allows part of assembler commands to be written as C language functions Be cause specific assembler commands can be written directly in a C language program you can easily tune up the program Description Example of Assembler Macro Function 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 long l char a 20 char b 20 func rmpa_b 1 19 a b asm Macro Function rmpa command Figure B 85 Description Example of Assembler Macro Function Appendix B 58 Appendix 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 DADD Function Returns the result of decimal addition on val1 plus val2 Syntax include lt asmmacro h gt unsigned char dadd_b unsigned char vali unsigned char val2 When calculated in 8 bits unsigned int dadd_w unsigned i
126. S sereme nne aek far attribute Furthermore NC30 allows you to modify these default attributes by using the startup options of compile driver nc30 Appendix B 2 Appendix B Extended Functions Reference B 1 2 Format of Variable Declaration The near and far modifiers are 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 specifierAnear or farAvariable 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 int near in_ data int far if data func remainder omitted Figure B 2 Example of Variable Declaration l t near area far area 2bytes Figure B 3 Memory Location of Variable Appendix B 3 Appendix B Extended Functions Reference B 1 3 Format of Pointer type Variable Pointer type variables by default are the near type 2 byte variable A declaration ex ample of pointer type variables is shown in Figure B 4 Example int ptr Figure B 4 Example of Declaring a Pointer Type Variable 1 2 Because the variables are located near and take on the variable type far the description in Figure B 4 is interpreted as in Figure B 5 Example int near near ptr Figure B 5 Example of Declaring a Pointer Type Variable 2 2 The variable ptr is a 2 byte variable that indicates t
127. SB register based addressing mode you can reduce the size of your applica tion program ROM size NC30 allows you to declare variables that use the SB register based addressing mode by writing the description shown in Figure 3 8 This Compiler assumes as a precondition that the SB register is initialized after a reset and that it thereafter is used as a fixed register NC30 MANUAL 54 Chapter 3 Programming Technique pragma SBDATA Figure 3 8 Example of variable declaration using SB based addressing mode f Compressing ROM Size Using Option fUSRW When calling a function defined outside the file in NC30 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 In this case ROM size will be reduced by doing as follows First Compile with the fuUSRW option and check functions which are indicated as errors at link time Then change declarations for the error functions only into decla rations using pragma JSRA function name g Other methods In addition to the above the ROM capacity can be compressed by changing program description s as shown below 1 Chabge 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
128. SBDATA declaration Option sb30 2 Output SPECIAL page Function declaration Option sp30 Table G 3 shows the sbutl command line options Appendix G 3 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 G 2 3 utl30 Command Line Options The following information input parameters is needed in order to start utl30 Table G 1 shows the utl30 command line options Table G 1 utl30 Command Line Options Option Short form sb30 None sp30 0 lt function name gt None fover_write fOW all None Wstdout None Sp lt number gt None Sp lt number gt lt numbers two or more numbers Sp lt number gt lt number gt fsection None Appendix G 4 Description Sb30 gt Outputs SBDATA declaration Sp30 gt Outputs SPECIAL page function dec laration To use utl30 always specify one of the two op tions If neither option is specified an error is assumed Outpus the result of SBDATA declaration or SPECIAL Page Function declaration to a file With this option not specified outouts the result to the host machine s either EWS or personal computer standard output device No exten sions can be specified lf the specified file already exists the result is written to the standard output device Forcibly writes over the output file name speci fied with the o option When used simultaneously with the sb30 option Because the usage frequency is low SBDATA
129. SPECIAL 87 7 SPECIAL 86 SPECIAL 85 SPECIAL 84 SPECIAL 83 SPECIAL 82 SPECIAL 81 A SPECIAL 80 SPECIAL 79 SPECIAL 78 SPECIAL 77 SPECIAL 76 Figure 2 15 Startup Program List 10 sect30 inc 6 8 NC30 MANUAL 29 Chapter 2 Basic Method for Using the Compiler SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL Figure 2 16 Startup Program List 11 sect30 inc 7 8 NC30 MANUAL 30 Chapter 2 Basic Method for Using the Compiler org ET iach UDI lword dummy_1 OVER_F LOW lword dummy_i BRKI lword dummy ADDRESS_MATCH lword dummy SINGLE_STEP lword dummy WDT lword dummy_1 DBC lword dummy_i NMI lword dummy_i RESET lword start eT A PINS DY POS Se PR SN TS PETS IENE E IN E RE A EA PRs NTO ADENINE ONC AG MON Py UR GIN AU DS NIN RINE REIN GY EOIN SS DN AIO RY IG De E EN E C Compiler for M16C 60 20 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATI
130. T C RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Bs IEG E R Le BRE DIN SIN NSE E EN AE EE E D BA DAR OES RE DE NAN RE ED ER PENA E E E IN EE E NIN E DS TS E EE A E Figure 2 29 Listing of sect30 inc in Single Chip Mode 3 3 NC30 MANUAL 45 Chapter 2 Basic Method for Using the Compiler e Setting Interrupt Vector Table If your program uses interrupt processing change the interrupt vector table table in the vector section of sect30 inc Figure 2 30 is an example of an interrupt vector address table section vector variable vector table org VECTOR_ADR lword dummy_int org VECTOR_ADR 44 lword dummy_int lword dummy_int lword lword vector 0 BRK BRK instruction DMAO for user DMA1 for user input key for user t for user lt DMAO interrupt lt DMA1 interrupt key input interrupt lt ADC interrupt p AD Convert 7 7 7 7 dummy_int Org lword dummy_in lword lword lword lword lword lword lword lword lword lword lword el word VECTO dummy_1i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i dummy_i DS D5D5858555ppl t t ct or ct tt r ocr ADR 68 uarto uarto uartl uart i IMER IMER IMER IMER IMER IMER IMER IMER INTO C H H WOW WA OY Ya a LC i C trance receive trance receive AO Al
131. TICE OY GN REN Gee te pce ANON CADE Re NE aN la MP A Te INC ane Rao nce NTA Re RGN aap Te R AO EERE EE OTe IN C Compiler for M16C 60 20 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Written by X XXXXXXXX sect30 inc section definition This program is applicable when using the basic I O library Id sect30 inc v 1 14 2003 03 27 10 57 43 XXXXXXXX Exp IRA E PAI E AE REIT TEAST PE A Pe TEN ER E DEANAR EE NAIS E EAS EA A EAER A TE ARP E TEEPE AE A E TEE N OE ER TEIN E A E AE EIE Te E A ES SBDATA area section data_SE DATA org 400H data SE pep section bss_SE DATA ALIGN bss_SE_top section data_SO DATA data SO Lop section bss_SO DATA bss50 Top near RAM area section 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 section stack DATA blkb STACKSIZE stack_top blkb ISTACKSIZE istack_top section heap DATA heap_top blkb HEAPSIZE Figure 2 10 Startup Program List 5 sect30 inc 1 8 NC30 MANUAL 24 Chapter 2 Basic Method for Using the Compiler section rom_NE ROMDATA ALIGN rom NE top section rom_NO ROMDATA rom_NO_top section data_FE DATA Org 10000H data_FE_top section bss_FE DATA ALIGN bss PE bop section data_FO DATA data_FO_top section bss_FO
132. a ROMAvariable_name Description This extended function is valid only for variables that satisfy one or other of the follow ing conditions 1 Non extern variables defined outside a function Variables for which an area is se cured 2 Variables declared as static within the function Rules 1 If you 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 rom section with initial value O if you do not include an initialization expression Example C language source program pragma ROM i unsigned int i lt Variable i which satisfies condition 1 void func Seale ine 1920 Variable i which satisfies condition 2 remainder omitted Assembly language source program section rom_NE ROMDATA C s name is i Variable i which satisfies 2 20 condition 2 word 0014H E amp Variable i which satisfies condition 1 Figure B 63 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 Appendix B 37 Appendix B Extended Functions Reference pragma SBDATA SB Relative Addressing Using Variable Description Function Function Declares that the data uses SB relative addressing Syntax pragma SBDATAAvaluable name Description The M16C 60 series allows you to choose instructions t
133. aaeeeseeeeeeeeeeeseeaas 16 j Multi byte Character and Multi byte Character String Manipulate Functions 16 Kk MD FUNCIONS re aoe cnce es kc yee sds ec E ace enstaesaedatens 16 E23 Standard Function Referente sciicscsiasdasiecntwenaaientanineantncdwonaneetanenneancedicadpudatatiunansbiacatanentes 17 E 24 Using the Standard LIBra ry vecsues citinncs ieajaioavncncdandepnceaveeastnaconevaaimancpaoyenceecsereantausentegetanneeds 84 a Notes on Regarding Standard Header File ccccccccessssseceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaes 84 b Notes on Regarding Optimization of Standard Library cccccccsssssssseseeeeeeeeeeaeees 84 Hinne pacang ol UnNCUONS oeiee E nares elle nent ee nese er ain 84 2 Selection of high speed library NC30 only 00 eeeeeeeeceeeeeeeeeeseeeseeeeeeeeeeeeeeesaeees 84 ES Mo diying Standard NOI ANY mersine EA ERA 85 EJT SruciUre ol VO FUNCIONS scaccassenecaeonestanteconed carnnecsnkaasmaaiesstannrctmnnseicalicracentaaateameniedianoranes 85 E 3 2 Sequence of Modifying VO Functions ceciscsceccctessica2esdatcecssnsestecsantenetcescaceleaseneadasmucscbacaazs 86 a M diying Level 3 VO Funi sissen nae a iE 86 D onea o 1 ana S meee rey ene 88 c incorporating he Modified Source Progralfi wvecccccecceceiccsccsieietdscstbdcaewtedeeceixetdeeteicciks 94 Appendix F Error Messages F1 Message Formal cirein rennes an E E r EEA EEEE EN EESE DAES 1 Fe neJ Eror MossagosS serraaierisreiarr isana oE NAN
134. acters represented using one byte Japanese characters require two bytes NC30 allows such 2 byte characters to be used in character strings character constants and comments The following character types can be included kanji hiragana full size katakana half size katakana Only the following kanji code systems can be used for Japanese characters in NC30 EUC excluding user defined characters made up of 3 byte code 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 UNIX version EUC NCKIN NCKOUT MS Windows version SJIS NCKIN NCKOUT Environment variable specifying input code system 0 NCKIN Environment variable specifying output code system NCKOUT Figure B 39 is an example of setting the environment variables UNIX This example sets the input to EUC codes and the output to Shift JIS codes setenv NCKIN EUC setenv NCKOUT SJIS MS Windows Include the following in your autoexec bat file set NCKIN SJIS set NCKOUT SJIS Figure B 39 Example Setting of Environment Variables NCKIN and NCKOUT In NC30 the input kanji codes are processed by the cpp30 preprocessor cpp30 changes the codes to EUC codes In the last stage of token analysis in the ccom30 compiler the EUC codes are then converted for output as specified in the environment variable A
135. aeeeade Compile driver LOPD U eenia E E stand sean E E Preprocessor PECON O e E E EE EEN Compiler AOD O a ne reer ne ae ence eee eee eee ee Assembler Optimizer 5 StkViewer amp Stk ceccccseececseeeeeeseesseees STK viewer amp stack size calculation Utility StkViewer is a GUI Graphical User Interface Utility OHO esiisa SBDATA declaration amp SPECIAL page Function declaration Utility 7 MapViewer cccceeeceeeeee Map viewer included for only the Windows TM version MapViewer is a GUI Graphical User Interface Utility Items 4 to 7 are not included in the entry version 1 2 NC30 Processing Flow Figure 1 1 illustrates the NC30 processing flow C language source file L CCOom30 compte ao pt30 Assembler Optimizer amp T _ gt Y Assembly language source file Stack size calculation utility SBDATA definition amp Assembler SPECIAL Page Function definition as30 utility MAP Viewer e oA STK Viewer Relocatable file StkViewer linker e m30 agg definition tile definition file oe Tes Absolute Motorola S format file module or file Intel HEX format file Software l Software in NC30 package File processed File by NC30 Figure1 1 NC30 Processing Flow 1 MapViewer is included for only the Windows TM version To verify the map information while using the UNIX version generate a map file with the linker and check that file for map information NC30 MANUAL 1 1 2 1 1 2
136. aerotmsstantiondnesec spect 1 Dre POO Be oe ee enn E E E E en rete ee 2 Dis Pnumeralor TYDE secese EE meee oe Ce eee ere 3 DAIA POIMEr TYDE cen enema a ar a 3 D 1 5 Array Types ssndccctcasesenetenctdecusdsaiecdanexncesdangnesanencaidadabadededsbensninmeneedesnhaccedeaecdedsbnenseedswiceseveneder 3 D 1 6 Structure types 20 0 0 cccccceccsseeccceeeeeeseeeeeeseeceeeeeeeseeeaeseeeeeeeeessseeausseseeeeeeeeesseaaaaeeseeeeetess 3 Dier MANNS ona E A inane eegecces 4 DS MENGE TYPOS ressens naar Era da aaran ra de a SEARE 5 Sign Extension RULES ssacrissirsniiniinssssone nsaan naa niaaa niaaa anai iaaa 6 Ay AN RIEG cao E EEE E ean vets 6 D 3 1 Rules of Return Value os cnccunatenten acted sadtonndes docaubsdudvananbeassiahvetnnndnesdanetbscatantaabanentntgaciassceayenecsy 6 NC30 MANUAL IX D 3 2 Rules on Argument Transfer o czsccazcccentanccsanicexdenssencaeesoucdacappinccdsansieacnatnasdannessedaanendiocnsans 7 D 3 3 Rules for Converting Functions into Assembly Language Symbols 0sceeeeeee 8 D 3 4 Interface between FUNCTIONS cccccccceeeccceceeeceeceeeececeeeeceeceaueceseceeeeeessuueeeessueeeeesaaaees 11 D 4 Securing auto Variable Area cccccccccsssecccccsseececeeseeeccceeeceeeseueeeesseeeeeesseaueeeesegseeeesas 14 Appendix E Standard Library E 1 Standard Header Files aca sccscsicsatucinsesaommiehsaas sien temacaweteeveurteeiasivessdaiiissseatertinenawecmetamacis 1 E 1 1 Contents of Standard Header Files 200 00
137. agma INTF can also be used for maintaining compatibility with C77 pragma PARAMETER Declares that when calling an assembler function the param eters are passed via specified registers Syntax pragma PARAMETERAfunction_name register_name Example pragma PARAMETER asm_func R0 R1 k Always be sure to declare the prototype of the function before entering this declaration pragma SPECIAL Declares special page subroutine call functions Syntax pragma SPECIALAnumber function name Example pragma SPECIAL 30 func Appendix B 34 Appendix B Extended Functions Reference c Using MR30 Extended Functions Table B 5 Extended Functions for MR30 Extended function Description pragma ALMHANDLER Declares the name of the MR30 alarm handler function Syntax pragma ALMHANDLER function name Example pragma ALMHANDLER alm_func pragma CYCHANDLER Declares the name of the MR30 cycle start handler function Syntax pragma CYCHANDLER function name Example pragma CYCHANDLER cyc_func pragma INTHANDLER Declares the name of the MR30 interrupt handler function pragma HANDLER syntax pragma INTHANDLER function name Syntax2 pragma HANDLER function name Example pragma INTHANDLER int_func pragma TASK Declares the name of the MR30 task start function Syntax pragma TASK task start function name Example pragma TASK taskl Supplement The above extended function normally is generated by the configurator so that the user need
138. agma SPECIAL 253 func3 100 ref End of File Figure G 9 SPECIAL Page Function declaration File special h oragma SPECIAL PAGE Utility special page definition PECIAL macro NUM Org OFFFFEH NUM 2 glb __ SPECIAL_ NUM word __ SPECIAL _ NUM amp OFFFFH SPECIAL 255 SPECIAL 254 SPECIAL 253 End of File Figure G 10 SPECIAL Page vector declaration File special inc You include the SPECIAL Page Finction declaration file generated above in a program as a header file Fig G 11 shows an example of making setting in a SPECIAL Page Func tion declaration File Appendix G 13 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 G 6 G 6 1 include special h func ommit Figure G 11 Example of making settings in a SPECIAL Page Function File Includes during startup the SPECIAL Page vector definition file as a file to be included Fig G 12 shows an example of setting up a SPECIAL Page vector definition file ommit section vector include special inc ommit Figure G 12 Example of making settings in a SPECIAL Page Function File for sect30 inc utl30 Error Messages Error Messages Table G 2 lists the utl30 calculation utility error messages and their countermeasures Table G 2 sbutl Error Messages Error message Contents of error and corrective action ignore option You specified an option that cannot be in used utl30
139. alid 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 de clared address Is valid 6 An error occurs if you include an initialization expression 7 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 as suming volatile is specified Example pragma ADDRESS io Figure B 71 pragma ADDRESS Declaration Note For compatibility with C77 versions prior to V 2 10 before can accept files that include pragma EQU The absolute address using this format is written using the C conven tions Appendix B 43 Appendix B Extended Functions Reference pragma 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 INTCALLA C AINT No Aassembler function name register name register name 2 pragma INTCALLAI CJAINT 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 C NC308 ONLY 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 R
140. alizes struct Iconv O setlocale Sets and searches the locale information of a program O Appendix E 16 Appendix E Standard Library E 2 3 Standard Function Reference The following describes the detailed specifications of the standard functions provided in NC30 The functions are listed in alphabetical order Note that the standard header file extension h shown under Format must be in cluded when that function is used abort Execution Control Functions 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 Integer Arithmetic Functions Function Calculates the absolute value of an integer Format include lt stdlib h gt int abs n Method function Variable MD ean Integer ReturnValue Returns the absolute value of integer n distance from 0 Appendix E 17 Appendix 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 the range of 1 0 to 1 0 Otherwise retu
141. ame Use other types The function specified by pragma PARAMETER does not match the contents of argument in pro totype declaration gt Make sure it is matched to the argument in proto type declaration The struct or union type is specified in the proto type declaration for the function specified by pragma PARAMETER Specify the int or short type 2 byte pointer type or enumeration type in the prototype declaration A function specified in the pragma PARAMETER declaration is defined after call for that function Declare a function before calling it 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 A register which is specifed in the function decleared by pragma PARAMETER can not be allocated Use the correct register const is described more than twice Write the type qualifier correctly far near is described more than twice Write near far correctly far is described more than twice Write far correctly near is described more than twice Write near correctly An appropriate storage class is used in argument declaration Use the correct storage class Appendix F 9 Appendix F Error Messages Table F 9 ccom mocc Error Messages 2 14 Error message volatile is dup
142. 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 Example pragma SPECIAL 20 func void func unsigned int unsigned int void main 1 J Ox7FEFD OxOO7F oet a vy he lt special page subroutine call Figure B 76 Example of pragma SPECIAL Declaration 1 Ifyou are using the supplied startup file modify the contents of the fvector section For details of how to modify the startup file see Chapter 2 2 Modifying the Startup Program in the Operation part of the NC30 User s Manual Appendix B 48 Appendix B Extended Functions Reference B 7 4 Using MR30 Extended Functions NC30 has the following extended functions which support the real time operating system MR30 pragma ALMHANDLER Function Declares an MR30 alarm handler Syntax pragma ALMHANDLERAdadlarm handler name Description By using the above format to declare an alarm handler a function written in C NC30 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 You canNOT write alarm handlers that take parameters The return value from the alarm ha
143. and far Modifiers 0 cc eecccccceeecceeeeeceeeceeeeeeeceeeecesseseeeeseeeeeeseseeeeeeas 2 B 1 2 Format of Variable Declaration ssi sescsedeceyuecctaicencedicosaoncecstaccdtieatecs andatssaulnadeentecterssdaemesn 3 B 1 3 Format of Pointer type Variable seen cscs coscesoxsenncctecccostaccncencatecoetnscccusdeiencendensbecteecetarseonseedees 4 NC30 MANUAL VII B 1 4 Format of Function Declaration 0 0 0 cece cceccecececececccececcececucececeeaeeeaeaeaenerececseaneeaeaenenenens 6 B 1 5 near far Control by nc30 Command Line Options c cc cceeseeeeceeeeeeseeesaeeeeeeeeeeeeees 6 B 1 6 Function of Type conversion from near to faf ccccsseecccceeeeececeeeeeeceeeseeeceeseeeesanseeesens 6 B 1 7 Checking Function for Assigning far Pointer to near Pointer ccccceeeeeeeeeeeeeeeeees 6 dco Declaring THMCIIONS cicecscscesecamtedtosiesnccdssidaceusdnigonaceacensannanncagentiacaseaneesstdadace noniduoosianupateadedes 7 B 1 9 Function for Specifying near and far in Multiple Declarations cccccceeeeeeeenseeeeeees 8 B 1 10 Notes ON near and far Attributes sncess cxncnccisnteensecadsccnsseuien qcnhonssiewsassvcctwaccddsenestereacsanamewenceecs 9 a Notes on near and far Attributes of Functions onccccccecercnccce seers secseseencccecsstneereneeceeseeaeseeees 9 b Notes on near and far Modifier Syntax ccccecscscencsscrcresnconeetnosecaseinetsacenessmnenseeieeteecesacenesvaes 9 BN A O eea T E E EE 10 B 2 1 Overview O
144. 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 Function Format Method Argument ReturnValue Description Input Output Functions Outputs the specified items of data to the stream include lt stdio h gt size_t fwrite buffer size count stream function 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 Returns the number of data items output Outputs data with the size specified in size to the stream Data is output by the number of times specified in count Interprets code 0x1A as the end code and ignores any subsequent data 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 Appendix E 34 Appendix E Standard Library getc Input Output Functions 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 Descript
145. ariables 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 Appendix E 11 Appendix E Standard Library b Character Handling Functions The following lists character handling functions Table E 3 Character Handling Functions isalnum Checks whether the character is an alphabet or nu O salpha O sent O jsdigi O isgraph Checks whether the character is printable except a O blank slower O isprint Checks whether the character is printable including a O blank ispunct Checks whether the character is a punctuation charac O ter isspace Checks whether the character is a blank tab or new O supper O isxdigit Checks whether the character is a hexadecimal char O tolower Converts the character from an upper case to a lower O toupper Converts the character from a lower case to an upper O case Appendix E 12 Appendix E Standard Library c Input Output Functions The following lists Input Output functions Table E 4 Input Output Functions Type Contents Reentrant Initialize Initializes M16C series s input outputs x clearerror Initializes clears error status specifiers Input Inputs one character from the stream Inputs one character from the stream Inputs one character from stdin Inputs one line from the stream Inputs one line from stdin I
146. as argument invalid pragma EQU invalid pragma SECTION un known section base name invalid pragma operand ignored invalid function argument Description and countermeasure An invalid storage class is used in the argument list of function definition Specify the correct storage class The object type pointed to by the pointer is incor rect Check the pointer type An attempt is made to reference an return vari able of incomplete type Check return variable An attempt is made to reference an struct mem ber of incomplete Define complete structs or unions first The initialization expression exceeded the size of the variable to be initialized gt Make sure that the number of initialize expres sions does not exceed the size of the variables to be initialized The function declared in storage class inline is called as an ordinary function Always be sure to define an inline function before using it 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 The function specified by pragma INTERRUPT is called Be careful not to call an interrupt handling func tion 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 The interrupt handling
147. asassassechsinicanivacsoncuseents 6 Sas IIE E A RI O E E AAE A IAA ET A A A E EET 6 aO S aa T 7 ONS OUICS IN ISt Ue Joessa iaar ia 7 A 2 2 Options Specifying Output Files siccnctsacidescctcscsendsedsconectadsacscudidevonceessesacedeceesseeelieidelsdaanioxe 8 6 MENIMME sssitsossiuairenstiawpunennseiedindanaveunsmsesawisienausninavsuiioessaxoveiniasdianiasienmeredierenueiariimaseniies 8 AMAR UI UN NAME essa a S 9 A 2 3 Version Information Display Option cxc cescecccescceedeeivecsenesedetensecessersenestercneticeontsebeieeeedenesed 10 E G AE TAE O E A EEE ENEA E A EN E EPA A ANE A NTE AEA 10 a E DEANE AEA E AA AEE A AAS EE A EA AA E A E AEEA EN AE 11 A 2 4 Options for Debugging scciscctetedsceccccesactsnedececasdiceccacstitenteccssccteceddaniencddesendiedsspedeansaasaiedienss 12 a S E E N AE ENS E E A A A A A E E AE E E E T 12 SONTO T rpi 13 AHO POI as RA 13 ETE A RE IEE PIETE VE AN EEE LEE EERE AE PE E A EE P E AN POR A EE EE TT A 14 Pees Opimi alom OO MOMS conser enine aE E EE Ak EEA 15 a ll AEAEE E EEA E E EE EETA A A E A E T EE E 16 I T PEEP IE EEEE E E e EEA EEEE PE IEE AES E AA E EE EEE FEE 18 E a cies patie AIEEE TOAT AE A A A ENO AEA E AANE E AE AA A AE AE EE T 18 CNSR AO aai eE AEE E AETR 19 ONG DIT ONB caissa 19 Ono_break_source_debug ONBSD cccsssssssseeesceeesneeeesscessseeeeeeoenseneeseooeens 20 Ono float COnSt fold ONFPCOF soscissccsssvevecesesnsesscesscccsecstecaneavecsestsasseerestunckteveciie
148. at nc30 osample as30 I In30 ms ncrt0 a30 sample c lt RET gt lt RET gt Return key Always specify the startup program first when linking Figure 2 2 Example nc30 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 by Windows TM etc a Command file input format nc30A command line option A lt file name gt command line option A Prompt lt gt Mandatory item Optional item A Space Figure 2 3 Command File Command Line Format nc30 c test cmd g lt RET gt 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 sample1 c sample2 r30 lt CR gt Command File description p g as30 l lt CR gt 0 lt CR gt sample lt CR gt lt CR gt Denotes carriage return Figure 2 5 Example Command File description NC30 MANUAL 13 Chapter 2 Basic Method for Using the Compiler b Rules on command file description The following rules apply for command file description e Only one command file can be specified at a time You cannot specify multiple command files simultaneously e No command file
149. at tention because such functions are indicated to have been called 0 times Appendix G 7 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 Wstdout Function Outputs error and warning messages to the host machine s standard output stdout Execution ut130 0o sample nerto x30 Wstdout example M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED warning cannot open file ncert0O x30 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 Execution example To specify a single number SP lt number gt Example utl30 sp30 sp 255 ncrt0 x30 To specify two or more numbers SP lt number gt lt numbers gt Example utl30 sp30 sp 255 254 ncrt0 x30 To specify a range of numbers SP lt numbers lt number gt Example utl30 sp 255 250 ncrt0 x30 Appendix G 8 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 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 pro
150. at 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 Appendix E 81 Appendix 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 wcstombs Multi byte Character Multi byte Character String Manipulate Functions Function Converts a wide character string into a multibyte character string Format include lt stdlib h gt size_t _far wcstombs s wcs n size_t wcstombs s wcs n NC308 only Method function Argument char _far s Pointer to an area for storing conversion multibyte char acter string const wchar t _far wcs Pointer to a wide character string SIZE C oes Number of wide characters stored ReturnValue Returns the number of stored multibyte c
151. at the same time for example c Finish processing after creating a relocatable file extension r30 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 NC30 MANUAL 14 2 1 4 Chapter 2 Basic Method for Using the Compiler nc30 Command Line Options a Options for Controlling Compile Driver Table 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 directory Specifies the directory containing the file s specified in include You can specify up to 8 directories E Invokes only preprocess commands and outputs result to standard output P Invokes only preprocess commands and creates a file extension i S Creates an assembly language source file extension a30 and ends processing U predefined macro Undefines the specified predefined macro silent Suppresses the copyright message display at startup dsource Generates an assembly language sour
152. ate vec eee pid notes IE T E nce T E EE at PAETAE A ET E 10 Conditions to establish SBDATA declaration amp SPECIAL Page Function declaration 10 G 4 1 Conditions to establish SBDATA declaration cccccccsesseeeeeeeeeeeeeeeaeeeeneeeeeeeeeeeesaaas 10 G 4 2 Conditions to establish SPECIAL Page Function declaration ccccccsseeeeeeeeeeeeeees 10 Be o uUlo USO aaa ren tren ernest antennas AEEA 11 G 5 1 Generating a SBDATA declaration file cc ceececcccccccceeceeeeeeeeeeeeeeeeeeseeaaeeeeeeeeeeeeeeeaaags 11 a Generating a SBDATA declaration file xiciscssicetasccaievseccdvatsecessdecsesienceneseeousleneveesdaraeediecees 11 b Adjustment in an instance in which SB declaration is made in asesembler 12 G 5 2 Generating a SPECIAL Page Function declaration file ccccecccecceeeeeeseeeeeeeeeneees 13 a Generating a SPECIAL Page Function declaration file cccccecseeceeseesseeeeeeeeeeeeees 13 uUo Enor MOSS aGOS nsciis nin SANER OETA 14 GOT Enor MESSAGES seses EE ee re cree ee ee crete 14 G62 Warning Messages ccc 8 pice pie cate pede Sec dedeusedallntesscladesheohedenuseelsadestaaesaiadeanacblesasaedactoesied 15 NC30 MANUAL XI Preface NC30 is the C compiler for the Renesas M16C 60 30 20 10 Series NC30 converts programs written in C into assembly language source files for the M16C 60 30 20 10 Series You can also specify compiler options for assem bling and linking to generate hexade
153. ation Utility utl30 G 5 Example of utl30 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 utl30 to process files holding information as to the state of using variables Fig G 4 shows an example of making entries in utl30 and Fig G 5 shows an example of SBDATA declaration file ut1l130 mert0 x30 osbdata lt RET gt Prompt ncrt0 x30 Name of map file Figure G 4 Example utl30 Command Line pragma SBDATA Utility xy SBDATA Size 255 7 pragma SBDATA data3 pragma SBDATA data2 pragma SBDATA datal End of File oy size of data access count of the variables Figure G 5 SBDATA declaration File sbdata h You include the SBDATA declaration file generated above in a program as a header file Fig G 6 shows an example of making setting in a SBDATA file include sbdata h func ommit Figure G 6 Example of making settings in a SBDATA Appendix G 11 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 b Adjustment in an instance in which SB declaration is made in asesembler If the SB area is used as a result of the sosym declaration in an assembler routine you need to adjust the file generated by utl30 assembler routine sbsym _sym ommit eo Lb _sym blkb 2 sym generated file b
154. b register relative addressing For more information refer to the Micro Processor User s Manual fvector This section stores the contents of the Micro Processor s fixed vector program Stores programs program_S Stores programs for which pragma SPECIAL has been specified switch_table The section to which the branch table for switch statements is allocated This section is generated only with the fSOS option These sections are mapped to memory according to the settings in the startup pro gram include file sect30 inc You can modify the include file to change the mapping NC30 MANUAL 38 Chapter 2 Basic Method for Using the Compiler Figure 2 24 shows the how the sections are mapped according to the sample startup program s include file sect30 inc 000000H ae OFOO00H 3 J 000400H data SE section d bss_SE section w data SEI section data_SO section D data _SOI section bss_SO section data_NE section data NEI section bss NE section data NO section data NOI section bss NO section R 5 5 data FEI section D stack section Z 3 D data FOI section lt D D 010000H D data FE section 3 3 O program_S section bss FE section 3 INTB data _FO section a OFFEOOH bss FO section fvector section OEFFFFH OFFFFFH Figure 2 24 Example Section Mapping NC30 MANUAL 39 Chapter 2 Basic Method for Using the Compiler b Outline of memory mapping setup file About sect30 inc This program is included
155. 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 37 asm SB 0 asm LDC 0H SB asm MOV W RO _port SB SB changed abbreviated asm SB __SB_ lt SB returned to original state asm LDC SB_ 4 SB Figure B 37 Restoring Modified Static Base SB register Furthermore pay careful attention to the functions that will be called while the SB register is modified and the interrupts that may occur during that time 3 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 NC30 include internal labels in the format shown in Figure B 38 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 38 Label Format Prohibited in asm Function Appendix B 21 Appendix B Extended Functions Reference B 3 Description of Japanese Characters NC30 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 char
156. cal Functions Function Calculates tangent Format include lt math h gt double _far tan x Method function Argument double x arbitrary real number ReturnValue Returns the tangent of given real number x handled in units of radian Appendix E 78 Appendix E Standard Library tanh Mathematical Functions 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 c Method macro Argument int C aaie 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 Appendix E 79 Appendix 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 Cw 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
157. ccording to the size of each ele ment in the array 1 2 bytes or more other than char or signed char types Subscripts are always extended to int types for operations 2 far arrays of 64KB or more Subscripts are always extended to long types for operations Therefore if you declare variables that will be array subscripts as char types they will be extended to int types each time they are referenced and therefore the code will not be efficient In such cases declare variables that will be array subscripts as int types d Using Prototype declaration Efficiently NC30 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 NC30 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 reason NC30 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 e Using SB Register Efficiently Using the
158. ce 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 lan Short form dSL guage list file Ist b Options Specifying Output Files Table 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 ofilename Specifies the name s of the file s absolute module file map file etc generated by In30 This option can also be used to specify the destina tion directory Do not specify the filename extension dir Specifies the destination directory of the file s absolute module file map file etc generated by In30 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 V Displays the name of the command program and the command line during execution V Displays the startup messages of the compiler programs then fin ishes processing without compiling 1 If you do not specify command line options c E P or S nc30 finishes at In30 and output files up to the absolute load module file extension x30 are created NC30 MANUAL 15 Chapter 2 Basic Method for U
159. ch machine dependent code in non NC30 C programs ifdef NC30 pragma ADDRESS port0 2H pragma ADDRESS port 3H else pragma AD portA Ox5F pragma AD portB 0x60 endif Figure C 14 Usage Example of Predefined Macros Appendix C 26 Appendix D C Language Specification Rules C Language Specification Rules This appendix describes the internal structure and mapping of data processed by NC30 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 Table D 1 shows the number of bytes used by integral type data D 1 1 Integral Type Table D 1 Data Size of Integral Type Type Range of values Boo mooo e char e e poas unsigned char signed char int e Hao short signed int signed short unsigned int 0465535 long 21474836484 gt 2147483647 signed long unsigned long 04 gt 4294967295 long long Yes 64 9223372036854775808 signed long long nn 9223372036854775807 unsigned long long No sss ss s dBAs 18446744073709551615 float Yes ss 32 s 1 175 49435e 38F 93 402823476 38F double Yes 64 2 2250738585072014e 308 long double 1 7976931348623157e 308 near pointer No 16 0 lt 0xF FFF far pointer 0 lt 90xFFFFFFFF The Bool type can not specify to sign f a char type is specified with no sign it is processed as an unsigned char type if an int or short type is specified wi
160. charac ters Reduce the escape sequence to within 255 char acters redefined A previously defined macro was redefined with different contents Check the contents against those in the previous definition within comment A comment includes gt Do not nest comments Appendix F 8 Appendix F Error Messages F 5 ccom30 Error Messages Tables F 8 to F 20 list the ccom30 compiler error messages and their countermeasures Table F 8 ccoms30 Error Messages 1 14 Error message pragma PRAGMA name function name redefined pragma PRAGMA name function argument is long long or double pragma PARAMETER amp function prototype mismatched pragma PARAMETER s function argument is struct or union pragma PARAMETER must be declared before use pragma INTCALL function s argument on stack pragma PARAMETER function s register not allocated const is duplicate far amp near conflict far is duplicate near is duplicate static is illegal storage class for argument Description and countermeasure The same function is defined twice in pragma name Make sure that pragma name is declared only once The arguments used for 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 n
161. character string into a double precision floating point number Function Format Method Variable ReturnValue Character String Convert Functions Converts a character string into an int type integer include lt stdlib h gt int atoi s function const char _far s Pointer to the converted character string Returns the value derived by converting a character string into an int type integer Appendix E 20 Appendix E Standard Library atol Character String Convert Functions Function Converts a character string into a long type integer Format include lt stdlib h gt long atol 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 bcopy Memory Handling Functions Function Copies characters from a memory area to another Format include lt string h gt void bcopy src dtop size Method function Variable char _far src Start address of the memory area to be copied from char _far dtop Start address of the memory area to be copied to unsigned long size Number of bytes to be copied No value is returned ReturnValue Copies the number of bytes specified in size from the beginning of the area speci fied in src to the area specified in dtop Description Appendix E 21 A
162. cimal files that can be written to the microcomputer Please be sure to read the precautions written in this manual before using NC30 Terminology The following terms are used in the NC30 User Manuals Term NC30 nc30 AS30 as30 TM Professional version Entry version Meaning Compiler package included in M3T NC30WA Compile driver and its executable file Assembler package included in M3T NC30WA Relocatable macro assembler and its executable file Integrated development environment be attached to M3T NC3SOWA Professional use compiler for full scale programming Simplified compiler included in the starter kit etc Description of Symbols The following symbols are used in the NC30 manuals Symbol A gt lt RET gt lt gt A A omitted Description Root user prompt UNIX prompt MS Windows TM prompt Return key Mandatory item Optional item Space or tab code mandatory Space or tab code optional Indicates that part of file listing has been omitted Additional descriptions are provided where other symbols are used NC30 MANUAL XII User s Manual NC30 MANUAL XKXIII Chapter 1 Introduction to NC30 Chapter 1 Introduction to NC30 This chapter introduces the processing of compiling performed by NC30 and provides an example of program development using NC30 1 1 NC30 Components NC30 consists of the following eight executable files TOC O o E E E E aeaetiadsnasmne
163. cribed only twice An array with 0 elements or no elements was declared in the auto area Correct the coding The bit field width exceeds the bit width of the data type Make sure that the data type bit width declared in the bit field is not exceeded The bit width of the bit field is not a constant Use a constant to write the bit width The bit field type is written with the amp operator Do not use the amp operator to write the bit field type The amp operator is written in an inline function gt Do not use the amp operator in an inline function An attempt is made to get void type data as in cases where the right side of an assignment ex pression is the void type Check the data type The file cannot be wrote Check the rest of disk capacity or permission of the file The file cannot be opened Check the permission of the file Appendix F 10 Appendix F Error Messages Table F 10 ccom30 Error Messages 3 14 Error message can t set argument case value is duplicated conflict declare of variable name conflict function argument type of variable name declared register parameter function s body declared default function argument conflict default is duplicated do while struct union statement do while void statement duplicate frame position defind variable name duplicate long Empty declare float and double not have sign floating p
164. csivucssdeneiesncatsntsepacsisnexaxiesanimssans 43 Wnesting comment WNC ccccceseeseeeeeenseeesceneeesseanseeseenseeseaensesseoeseeseeonseessoees 43 Wccom_max_warnings Warning Count WCMW cccccccsssssseeeeseessenseeseseeees 44 VV Gllllllicapnepsscaacycessecaueeuesetennstesesatossase E anbeaveseunsediec oterearenee 44 WMA taane WMT Parcan eee 45 Wuninitialize_variable WUV ssssssssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnmnnn 45 Warde tO Small WLIS J siisii a 46 Wno_warning_stdlib WNWS sasssssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnnm 46 Wno_used_argument WNUA sasssssnnnnnsnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnmnnn nnmnnn 47 A 2 9 Assemble and Link Options vice ccceccrsncenatesnnctecaeuenasatadansnuaddieaadaesanctheserenstsscctpensedsecasteseacce 48 EN ODU O agaa a Ea e aa 49 AMOT OPO aieeaa E iera Eaa Er 51 Pes Notes on Command Line OptiOnS as oa sere cectcdosne scdeesedicscdseaneintemeieettvecedeptlavecceesinge 53 ASA Coding Command Line Options azecccaccssecectactotacosdesanerndeccecnctenccantensaanddaciectiaieaecenieeteeetads 53 A 3 2 Priority of Options for Controlling cstecndzeccsccctssencaAscnceedectacetecsasepoagdadecdcersaxctntadeecaleotiaoies 99 Appendix B_ Extended Functions Reference Bet Wear and tar MOGINGIS siectesescrasectsnceaccedenaceacseasnnssateasuntaqeanesiciaanialxuncss asia cieinadeaccenueaiaas 2 B 1 1 Overview of near
165. ction Base Name __ Attribute Table 2 13 shows Section Base Name and Table 2 14 shows Attributes Table 2 13 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 Table 2 14 Section Naming Rules Section containing initial values of data data N F S N near attribute data bss rom S SBDATA attribute data bss E O E Even data size data bss rom O Odd data size 1 near and far are NC30 modifiers used to clarify the addressing mode NEAN srir accessible from 000000H to OOFFFFH ente accessible from 000000H to OFFFFFFH NC30 MANUAL 37 Chapter 2 Basic Method for Using the Compiler Table 2 15 shows the contents of sections other than those based on the naming rules described above Table 2 15 Section Names Section name Contents stack This area is used as a stack Allocate this area at addresses between 0400H to OFFFFH heap This memory area is dynamically allocated during program execution by memory management functions e g malloc This section can be allo cated at any desired location of the Micro Processor RAM area vector This section stores the contents of the Micro Processor s interrupt vec tor table The interrupt vector table can be allocated at any desired location of the Micro Processor s entire memory space by int
166. ctly 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 enumer ated types are used for the expression of a switch statement Use the integer type or enumerated type This is a syntax error gt Write the description correctly lt does not normally occur This is an internal error This error may occur pursuant to one of errors that occurred before it gt 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 Appendix F 20 Appendix F Error Messages Table F 20 ccom30 Error Messages 14 14 Error message too many storage class of typedef type redeclaration of variable name typedef initialized uncomplete array pointer operation undefined label label used union or enum s tag used for struct unknown function argument vari able name unknown member member name used unknown pointer to structure identifier variable name unknown size of struct or union unknown structure identifier vari able name unknown variable variable name used in asm unknown variable variable name unknown variable variable name used void array is invalid type int array as
167. culates 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 div Integer Arithmetic Functions 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_t is defined in stdlib h This structure consists of members int quot and int rem Appendix E 25 Appendix E Standard Library exp Mathematical Functions 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 fabs Mathematical Functions 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 pr
168. d 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 1 In order that there may be no guarantee the number of whose values of the stack pointer in the timing which interruption generated is even alignment is not performed to an interruption function For this reason processing speed may become slow when Ostack_frame_align op tion is specified to the function called from an interruption function Appendix A 22 Appendix A Command Option Reference Ono_logical_or_combine ONLOC Suppression of optimization Function Suppresses the optinization that puts consective ORs together In the entry version this option cannot be specified Supplement If one of three options O3 or greater OR or OS is specified when compil ing as in the example shown below the compiler optimizes code generation by combining logical ORs Example if a amp 0x01 a amp 0x0 a amp 0x04 J Optimized y if a amp 0x07 In this case the variable a is referenced up to three times but after optimiza tion 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 dec
169. d by INCLUDE that is written in the source file is searched from a specified directory Generates an assembler list file extension lst Generates structured description command variables in byte type Do not specify this option in the option as30 Does not output information on macro instruction lines Specifies the output destination path for a generated file A directory or drive name can be specified for the path If this specification is omitted the generated file is output to the same path as that of the source file Do not specify this option in the option as30 Processes structured description command Do not specify this option in the option as30 Outputs local symbol information Generates an assembler error tag file Displays the version of the assembler system program Do not specify this option in the option as30 Starts up an external program using a tag file as argument Do not specify this option in the option as30 You can specify the assembler s option to use option as30 using nc30 In this case do not specify the as30 options C M O P T V or X Appendix A 50 Appendix A Command Option Reference 1n30 option Assemble Link Option Function Specifies options for the In30 link command You can specify a maximum of four options If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified Syntax nc30A In30A
170. d long long 9223372036854775807 unsigned long long 18446744073709551615 float 1 17549435e 38F lt 3 40282347e 38F double Yes 64 2 2250738585072014e 308 long double 1 7976931348623157e 308 near pointer re 16 OcOxXFFFF farpointer _ No 82 Oe OXFFFFFFFF Appendix C 8 Appendix C Overview of C Language Specifications The Bool type can not specify to sign lf a char type is specified with no sign it is processed as an unsigned char type if an int or short type is specified with no sign it is processed as a signed int or signed short type lf a long type is specified with no sign it is processed as a sign long type lf a long long type is specified with no sign it is processed as a sign long long type f the bit field members of a structure are specified with no sign they are processed as unsigned Can not specifies bit fields of long long type C 2 3 Expressions Tables C 11 and Table C 12 show the relationship between types of expressions and their elements Table C 11 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 Postpo
171. d program and the command line during execution V Displays the startup messages of the compiler programs then fin ishes processing without compiling V Display command program name Function Compiles the files while displaying the name of the command program that is being executed Execution example nc30 c v sample c M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c cpp30 sample c 0o sample i DM16C DNC30 ccom30 sample i o sample a30 as30 N sample a30 Notes Use lowercase v for this option Appendix A 10 Appendix A Command Option Reference V Display version data Function Displays version data for the command programs executed by the compiler then finishes processing Execution D MTOOL nc30wa gt nc30 V example M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED M16C 60 C Compile Driver Version X XX XX NC Preprocessor Version X XX XX M16C 60 C Compiler Version X XX XX Assembler Optimizer aopt30 for M16C Family Version X XX XX M16C 60 Series Assembler system Version X XX ReleaseX Assembler Driver as30 for M16C 60 Series Version X XX XX Macro Processor mac30 for M16C 60 Version X XX XX Structured Processor pre30 for M
172. d using bit operation instructions within 32 bytes of the FB register value Appendix B 13 Appendix 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 register int i 1 lt Variable i is a register variable asm mov w_ A1 i Assembly language source file compile result FUNCTION func ARG Size 0 Auto Size 0 Context Size 3 section program _ file reg c _ line 3 H HHC SRC glob _ func _func _ line 4 HH C SRC register int i 1 mov w 0001H RO _ line 6 H C SRC asm mov w_ A1 i HHHH ASM START mov w RO A1 ij R0 register is transferred to A1 register HHH ASM END Figure B 25 An Example for Referencing a Register Variable and its Compile Result In NC30 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
173. de 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 execut ing function to another function 7 Mathematical Functions Functions for calculating sines sin and cosines cos etc These functions require time Therefore pay attention to the use of the watchdog timer 8 Integer Arithmetic Functions Functions for performing 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 Appendix E 10 Appendix 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 Contents Reentrant Copy Copies a character string Copies a character string n characters Concatenate Concatenates character strings Concatenates character strings n characters Compare Compares character strings stricmp Compares cha
174. decimal place 3 Minimum field width Specifies the minimum field width of positive decimal integers When the result of conversion has fewer characters than the specified field width the left of the field is padded 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 f you specified the flag the result of conversion is left aligned and padding characters always blanks inserted to the right If you 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 4 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 d i o u x and X conversion a If the number of columns in the result of conversion is less than the specified number the beginning is padded with zeros b If the specified number of columns exceeds the minimum field width the specified number of columns takes precedence c If the number of columns in the specified precision is less than the minimum field width the field width is processed af
175. defines the start address of interrupt vector table Figure 2 6 Startup Program List 1 ncrt0 a30 1 4 NC30 MANUAL 20 Chapter 2 Basic Method for Using the Compiler macro define for special page Format SPECIAL number SPECIAL macro NUM org OFFFFEH NUM 2 glb _ SPECIAL_ NUM word _ SPECIAL NUM amp OFFFFH endm list OFF include sect30 inc 5 list ON N_BZERO macro TOP SEC mov b 00H ROL mov w TOP_ amp OFFFFH Al mov w Sizeof SECT_ R3 sstr b endm N_BCOPY macro FROM_ TO_ SECT_ mov w FROM_ amp OFFFFH A0O mov b FROM_ gt gt 16 R1H mov w TO_ Al mov w Sizeof SECT_ R3 smovf b endm BZERO macro TOP 7 SEGEL push w sizeof SECT_ gt gt 16 push w sizeof SECT_ amp Offffh pusha TOP_ gt gt 16 pusha TOP amp Offffh stk 8 glb _bzero call _bzero G jJsr a _bzero endm BCOPY macro FROM TO_ SECT_ push w sizeof SECT_ gt gt 16 push w sizeof SECT_ amp Offffh pusha TO gt gt 16 pusha TO amp Offffh pusha FROM_ gt gt 16 pusha FROM_ amp Offffh estk 12 glb _bcopy Call _bcopy G jsr a _bcopy endm 5 Includes sect30 inc Figure 2 7 Startup Program List 2 ncrt0 a30 2 4 NC30 MANUAL 21 Chapter 2 Basic Method for Using the Compiler insf start sS O0 glb start section interrupt start lt 6 lde istack_top isp set istack pointer mov b 02h Qah bset 1 0ah mov b 00h 04h set processer mode 7 bceclr
176. difying declared basic types arrays and function declarators Number of function definitions Number of identifiers with block scope in one block Maximum number of macro identifiers that can be simultaneously defined in one source file Maximum number of macro name replacements Number of logical source lines in input program Maximum number of levels of nesting include files Maximum number of case names in one switch statement with no nesting of switch state ment Total number of operators and operands that can be defined in if and elif size of stack frame that can be secured per function in bytes Number of variables that can be defined in oragma ADDRESS Maximum number of levels of nesting parentheses Number of initial values that can be defined when defining variables with initialization expres sions Maximum number of levels of nesting modifier declarators Maximum number of levels of nesting declarator parentheses Maximum number of levels of nesting operator parentheses Maximum number of valid characters per internal identifier or macro name Maximum number of valid characters per external identifier Maximum number of external identifiers per source file Maximum number of identifiers with block scope per block Maximum number of macros per source file Maximum number of parameters per function call and per function Maximum number of parameters or macro call parameters per macro Maximum number of characters in character str
177. dled as a reserved word In the entry version this option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification Appendix A 28 Appendix A Command Option Reference fextend_to_int fETI Function Extends char type or signed char type data to int type data to perform opera tion extension as per ANSI rules In the entry version this option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification 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 prob lem in char type arithmetic operations e g c1 c2 2 c3 that thechar type overflows in the middle of operation and that the result takes on an unexpected value An example is shown below main char c char c2 200 char c3 2 char c2 2 c3 In this case thechar type overflows when calculating c2 2 so that the cor rect 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 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
178. dule file extension x30 are created Appendix A 2 Appendix A Command Option Reference C Compile driver control Function Creates a relocatable object file extension r30 and finishes processing Execution mole nc30 c sample c exa ple i M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c ls sample rw r r 1 toolusr 2835 Aug 17 11 28 sample c ZEW r 1 toolusr 450 Aug 17 11 28 sample r30 Notes f this option is specified no absolute module file extension x30 or other file output by In30 is created Compile driver control Function The function is the same as the preprocess command define Delimit multiple identifiers with spaces Syntax nc30A Didentifier constant A lt C source file gt constant is optional Execution 6nc30 c DMYDEBUG 1 DMSDOS 1 DUNIX sample c example i M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c 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 operat ing system of the host machine Appendix A 3 Appendix A Command Option Reference Idirectory Function Specifies the directory name
179. e area is secured from the high address of the contiguously empty area created by free toward the low address Heap area Freed area Unused area 1 2 If the 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 Unused area Appendix E 46 Appendix E Standard Library malloc 2 lf no memory area has been freed with free 2 1 lf 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 Unused area Unused area Unused area High 2 2 lf there is no unused area that can be secured malloc 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 mblen Multi byte Character Multi byte 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 Si 2e Tilly anuna Number of searched byte ReturnValue Returns the number of bytes in the character string if s configures a correct mul
180. e 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 Description 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 Struct name member name not including bit field members void func int idata int a 3 struct TAG int i int k S asm MOV W RO FB idata asm MOV W RO FB a 2 asm MOV W RO FB s i Remainder omitted asm MOV W FB FB s i a 2 Figure B 19 Description example for specifying FB offset Figure B 20 shows an example for referencing an auto variable and its compile result Appendix B 11 Appendix B Extended Functions Reference C source file void func int idata 1 lt auto variable FB offset value 2 asm MOV W FB RO idata asm CMP W 00001H RO remainder omitted Assembly language source file compile result FUNCTION func FRAME AUTO idata size 2 offset 2 abbreviated HH C_SRC asm MOV W FB RO idata HHHH ASM START MOV W 2 FB RO lt Transfer FB offset value 2 to RO register _line 5 HH C SRC asm CMP W
181. e character specified in c from the end of area s You can search for 0 When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization sirspn String Handling Functions Function Calculates the length number of specified characters that are found in the other 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 area s1 and searches the characters from the beginning of s1 You cannot search for 0 When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 74 Appendix 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
182. e declaratorADeclarator Dummy argument Default value or variable Figure B 46 Format for declaring the default arguments of a function Figure B 47 shows an example of declaration of a function and Figure B 48 shows a result of compiling of sample program which shows at Figure B 47 extern int func int i 1 int j 2 abbreviated Figure B 47 Example for declaring the default arguments of a function Appendix B 25 Appendix B Extended Functions Reference _main line 5 HH C_SRC func mov w 0002H R2 lt second argument mov w 0001H R1 amp first argument jsr func line 6 HH C_SRC func 3 mov w 0002H R2 lt second argument mov w 0003H R1 lt first argument jsr func _ line 7 H H HC SRC func 3 5 mov w 0005H R2 lt second argument mov w 0003H R1 lt first argument jsr func add b 02H SP line 8 HH HC SRC rts omitted Note In NC30 arguments are stacked in revere order beginning with the argument that is declared last in the function In this example arguments are passed via regis ters as they are processed Figure B 48 Compiling Result of smp1 c smp1 a30 A variable can be written for the argument of a function Figure B 49 shows an example where default arguments are specified with variables Figure B 50 shows a compile result of the sample program shown in Figure B 49 int near sym int func int i sym lt Default argument is specified with a variable void main
183. e other than 0 if a numeral Returns 0 if not a control character Description Determines the type of character in the parameter isdigit Character Handling Functions Function Checks whether the character is a numeral 0 9 Format include lt ctype h gt int isdigit c Method macro Argument int C oo 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 Appendix E 38 Appendix E Standard Library isgraph Character Handling Functions Function Checks whether the character is printable except a blank 0x21 0x7e Format include lt ctype h gt int isgraph c Method macro Argument int C uw 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 islower Character Handling Functions Function Checks whether the character is a lower case letter a z Format include lt ctype h gt int islower c Method macro Argument int Cj ee Character to be checked ReturnValue Returns any value other than 0 if a lower case letter Returns 0 if not a lower case letter Description Determines the type of character in the parameter Appendix E 39 Appendix E Standard Library isprint Charact
184. e radix that can be repre 1024 DBL_MIN Minimum value that a double type variable can take on as 2 2250738585072014e 308 DBL _MIN_10_ EXP Minimum value of the power of 10 that can be represented 307 DBL_MIN EXP Minimum value of the power of the radix that can be repre 1021 FLT DIG Maximum number of digits of float type decimal precision 6 FLT EPSILON Minimum positive value where 1 0 FLT EPSILON is 1 19209290e 07F found not to be 1 0 FLT MANT DIG Maximum number of digits in the mantissa part when a 24 float type floating point value is matched to the radix in its representation FLT MAX Maximum value that a float type variable can take on as 3 40282347e 38F FLT MAX_10 EXP Maximum value of the power of 10 that can be represented 38 FLT MAX _EXP Maximum value of the power of the radix that can be repre 128 FLT MIN Minimum value that a float type variable can take on as 1 1 7549435e 38F FLT MIN_10 EXP Minimum value of the power of 10 that can be represented 37 FLT MIN EXP Maximum value of the power of the radix that can be repre 125 FLT_RADIX FLT ROUNDS 1 Rounded to the nearest whole number Appendix E 3 Appendix E Standard Library limits h XS Function Defines the limitations applying to the internal processing of the compiler The following lists the macros that define these limits Macro name Defined value MB LEN MAX Maximum value of the number of multibyte charac 1 CHAR_B
185. e the return value Appendix F 30 Appendix F Error Messages Table F 29 ccom30 Warning Messages 9 10 Warning message task function has invalid argument this comparison is always false this comparison is always true this feature not supported now ignored this function used before with non default argument this interrupt function is called as normal function before too big octal character too few parameters too many parameters uncomplete struct member unknown pragma STRUCT xxx unknown debug option dx unknown function option Wxxx unknown function option fx unknown function option gx unknown optimize option mx unknown optimize option Ox Description and countermeasure The function specified with pragma TASK uses arguments Any function specified with pragma TASK can not use arguments Delete the arguments Comparison is made that always results in false Check the conditional expression Comparison is made that always results in true Check the conditional expression This is a syntax error Do not this syntax because it is reserved for extended use in the future gt Write the description correctly A function once used is declared as a function that has a default argument Declare the default argument before using a func tion A function once used is declared in pragma IN TERRUPT An interrupt function cannot be called Check the cont
186. earches the specified character beginning with the top of the character string Format include lt string h gt char _far strchr s c Method function Argument const char _ far s Pointer to the character string to be searched in HEC odatni Character to be searched for ReturnValue Returns the position of character c that is first encountered in character string g Returns 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 OR or OS the system may selects another functions with good code efficiency by optimization 1 There must be adequate space to accommodate s1 plus s2 Appendix E 67 Appendix E Standard Library strcmp String Handling Functions Function Compares character strings Format include lt string h gt int stremp 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 Compares each byte of two character strings ending with NULL When you spec
187. ebugging information has changed from xxx r30 and xxx x30 format The new format is known as the Rev F format the executable objects in the new format xxx x30 are compatible with the following debuggers PDB30 V 2 00 and later XDB30 V 2 00 and later PDB30SIM V 2 00 and later Use the gold option when compiling if you are using a debugger that cannot load executable objects in the new format xxx x30 Appendix A 14 A 2 5 Appendix A Command Option Reference Optimization Options Table A 5 shows the command line options for optimizing program execution speed and ROM capacity In the entry version all optimization options cannot be specified Table A 5 Optimization Options Option Function O 1 5 None Effects the best possible optimization both in execu ma tion speed and in ROM capacity level by level OR None Maximum optimization of ROM size followed by OS None Maximum optimization of speed followed by ROM Oconst OC Performs optimization by replacing references to the const qualified external variables with constants 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 float ing point numbers Ono_stdlib ONS Inhibits inline padding of standard library functions and modification of library functions Osp_adjust OSA Optimiz
188. ecision floating point number Appendix E 26 Appendix E Standard Library feof Input Output Functions 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 ferror Input Output Functions 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 Appendix E 27 Appendix E Standard Library fflush Input Output Functions 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 ReturnValue Always returns 0 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
189. ed 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 func tion void init void omitted T E _IORW lt 2 set read write mode T PETEN TEXT lt 2 set text mode omitted es _sget0 lt 3 set UARTO level 3 input function omitted stdaux gt _func_out _sput0 lt 3 set UARTO level 3 input function omitted speed0 _96 _B8 _PN _S2 lt 4 set UARTO speed function speed _96 _B8 _PN _S2 init_prn 2 to 4 correspond to the items in the description of setting above Figure E 6 Modifying the init Function Appendix E 93 Appendix E Standard Library c Incorporating the Modified Source Program There are two methods of incorporating the modified source program in the target sys tem 1 Specify the object files of the modified function source files when linking 2 Use the makefile under MS Windows makefile dos supplied in the NC30 pack age 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 nc30 c g osample nert0O a30 device r30 init r30 sample c lt RET gt This example shows the command line when device c and init c are modified Figure E 7 Method of Directly Linking Modified Source Programs
190. ed token when character is found Returns NULL when character cannot be found Description Returns the location pointer of the first character string s2 from the beginning of area s1 In the 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 si 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 OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 76 Appendix E Standard Library strtol Character String Value Convert Function Function Converts a character string into a long type integer Format include lt string h gt long sitrtol 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 OL Does not constitute a number ReturnValue OL Returns the configured number in long type Description When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization strtoul C
191. enress 2 To NOD a E E E EE NE 3 1 3 1 Notes about Version up of compiler on soecciocesnsssecasaicectuincssissiesncsseeantenseessiasssccctienceddsnsadaeseanstes 3 1 3 2 Notes about the M16C s Type Dependent Palt ccceccceceeeeeeeeeeesseseeeeeeeeeeeeseeeaeeeees 3 1 4 Example Program Development ici cnkieieowitinccanesinssenmneniuid comne deh veenabinineccinvahinnunevehbuts Suisiaiut 5 1 5 ING BO Output PUSS spssctiy ces csdesnienccnaneienceanteaudedendtangeate t olepdaasbocadesgenessmedsaeeceterananaeneteeiateae 7 15 1 Inrodu ction 1OSOUTDUL FICS cececesssctceceontenbercacecasb ica stwosscreecnestiebemccsaameoceegaestieeetieeonteneaiens 7 1 5 2 Preprocessed Source Files ccs ccccceccesacevecivacocenechegtannaetanescetinceunbinetatecechdacanpateabeelendedubetedts 8 1 5 3 Assembly Language Source Files iss scnscceecnentisencteencscaced ons dedecdeahcehulaeadeecaoniaetedtenenigeiae 10 Chapter 2 Basic Method for Using the Compiler 12 2i Sang Up ihe NN coisa sacet isapsecieesancstseseteenbasesteesaannecoahatomitecsesanneeoceesanieveticiansaatad 12 2 1 1 nc30 Command FOrMal cccceeseeeececceceeeeceeeeeeeeeceeceeeeeesseeeeeeeeeeceeeeseseseeaseeeeeeeeeeseessaaegs 12 Mee SOM UA Fie e e EE re O R 13 a Command file input format acest ce ces oxeoecenduecee suns sasececeennctdeeaateaceduaraecmeecasedeaiaseceteaeieuee 13 b Rules on command file description scecteciccinceceriesroncducseiiearacdaticdetecteceed tuedueitcimidsxewsatco kids 14 c
192. ent of pragma The character constant or the octal constant in the character string exceeded the limit value 255 in decimal Do not use a value greater than 255 to describe the constant Arguments are insufficient compared to the num ber of arguments declared in prototype declara tion Check the number of arguments Arguments are excessive compared to the num ber of arguments declared in prototype declara tion Check the number of arguments An incomplete structure is written as a member gt Write a complete structure pragma STRUCTxxx cannot be processed This line will be ignored Write correctly The option dx cannot be specified Specify the option correctly The option Wxxx cannot be specified Specify the option correctly The option fx cannot be specified Specify the option correctly The option gx cannot be specified Specify the option correctly The option mx cannot be specified Specify the option correctly The option Ox cannot be specified Specify the option correctly Appendix F 31 Appendix F Error Messages Table F 30 ccom30 Warning Messages 10 10 Warning message Description and countermeasure unknown option x The option x cannot be specified Specify the option correctly unknown pragma pragma specifi Unsupported pragma is written cation used Check the content of pragma This warning is displayed only when the
193. er 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 fC oeeee rrrr t C E En Function Defines error number Appendix E 2 Appendix E Standard Library float h TE EEE 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 NC30 long double types are processed as double types Therefore the limits apply ing to double types also apply to long double types Macro name Defined value DBL DIG Maximum number of digits of double type decimal preci 15 DBL_EPSILON Minimum positive value where 1 0 DBL_EPSILON is 2 2204460492503131e 16 DBL_MANT_DIG Maximum number of digits in the mantissa part when a 53 double type floating point value is matched to the radix in its representation DBL_MAX Maximum value that a double type variable can take on as 1 7976931348623157e 308 DBL_MAX_10_ EXP Maximum value of the power of 10 that can be represented 308 DBL_MAX_EXP Maximum value of the power of th
194. er Handling Functions Function Checks whether the character is printable including a blank 0x20 Ox7e Format include lt ctype h gt int isprint c Method macro Argument _intc a 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 ispunct Character Handling Functions Function Checks whether the character is a punctuation character Format include lt ctype h gt int ispunct c Method macro Argument __intc E P EE 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 Appendix E 40 Appendix E Standard Library isspace Character Handling Functions Function Checks whether the character is a blank tab or new line Format include lt ctype h gt int isspace c Method macro Argument _intc a 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 isupper Character Handling Functions Function Checks whether the character is an upper case letter A Z Format include lt ctype h gt int isupper c Met
195. er analyzes program flow in the interval in which variables including arguments 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 Ex void func int 1 intj asm mov w 2 FB 4 FB J i Appendix B 20 Appendix B Extended Functions Reference 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 b About Register 1 Do not destroy registers within the asm function If registers are going to be de stroyed use push and pop instructions to save and restore the registers 2 NC30 is premised on condition that the SB register is used in fixed mode after
196. er at the function call Figure B 10 Type conversion from near to far When converting type into far O 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 Appendix B 6 Appendix B Extended Functions Reference int func int near int far f_ptr int near n_ptr main 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 B 1 8 Declaring functions In NC30 functions are always located in the far area Therefore do not write a near declaration for functions If a function is declared to take on a near attribute NC30 outputss a warning and contin ues processing by assuming the attribute of that function is far Figure B 12 shows a dis play example where a function is declared to be near nc30 S
197. error output error is output to stdout stdaux Standard auxiliary I O stdprn Standard printer output The stream corresponding to the NC30 standard library functions shown shaded in Figure E 3 are fixed to standard input stdin and 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 fgetc and fputc Appendix E 88 Appendix E Standard Library vfprintf Figure E 3 Relationship of Functions and Streams Figure E 4 shows the stream definition in stdio h Appendix E 89 Appendix E Standard Library KK KK KKK KK KK KKK KK KK KK KR KK KK IK KK KK KK KK KR KK KK KK KK KKK KK IK KK KK KK KK KK KK KKK standard I O header file omitted typedef struct _iobuf char buff Store buffer for ungetc 1 rnt cnt Strings number in _buff 1 or 0 2 int _flag Flag lt 3 int _mod Mode 4 int _func_in void Pointer to one byte input function 5 int _func_out int Pointer to one byte output function 6 FILE define _IOBUF_DEF omitted extern FILE _iob 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 a
198. ersion this option cannot be specified Syntax nc30A as30A option1Aoption2 A lt C source file gt Execution In the example below the assembler list file is generated when compiling example Q nc30 v as30 1 s sample c M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c cpp30 sample c 0o sample i DM16C DNC30 ccom30 sample i o sample a30 as30 N 1l s sample a30 fo ls sample rw r r 1 toolusr 2850 Aug 17 14 51 sample c W i 1 toolusr 10508 Aug 17 15 43 sample lst EW p 1 toolusr 587 Aug 17 15 43 sample r30 Note Do not specify the as30 options C M O P T V or X Appendix A 49 Option Appendix A Command Option Reference For reference the following table lists the AS30 V 4 00 options Description Inhibits all message outputs on the screen Use this option if you do not want anything to be displayed on the screen when executing AS30 ina batch file etc Do not specify this option in the option as30 Evaluates mnemonic operand Displays the content of a command line when as30 starts up mac30 and asp30 Do not specify this option in the option as30 Sets a constant to a symbol Fixes the file name of FILE development to a source file name Header information is not output to an assembler list file The include file specifie
199. es code generation by combining stack cor rection codes after function calls This helps to re duce the ROM capacity as well as speed up pro cessing However the amount of stack used may increase Ostack_frame_align OSFA Aligns the stack frame on an even boundary Oloop_unroll o0p count OLU Unrolls code as many times as the loop count with out 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_logical _or_combine ONLOC Suppresses the optimization that puts consecutive ORs together Ono_asmpot Inhibits starting the assembler optimizer aopt30 Ostatic_to_inline OSTI A static function is treated as an inline function Effect of each Optimization Options Option o foa os os osm SPEED ROM size usage of stack decrease Appendix A 15 Appendix A Command Option Reference O 1 5 Function Optimizes speed and ROM size to the maximum This option can be specified with g options O3 is assumed if you specify no numeric no level In the entry version this option cannot be specified O1 Makes O3 Ono_bit Ono_break_source_debug Ono_float_const_fold and Ono_ stdlib valid O2 Makes no diffrence with O1 O3 Optimizes speed and ROM size to the maximum O4 Makes O3 and Oconst valid O5 Effect the best possible optimization in common subexpressions if the option OR is concurrentlyspecofied effects the best
200. ession amp expression monadic expression expression monadic expression expression assignment expression expression monadic expression Appendix C 10 Appendix C Overview of C Language Specifications C 2 4 Declaration There are two types of declaration ariable Declaration unction Declaration a Variable Declaration Use the format shown in Figure C 1 to declare variables storage class specifierAtype declaratorAdeclaration specifierAinitialization_expression Figure C 1 Declaration Format of Variable 1 Storage class Specifiers NC30 supports the following storage class specifiers extern auto ypedef static egister 2 Type Declarator NC30 supports the type declarators Bool char ni hort ong ong long loat Jouble unsigned igned struct union enum 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 2 in NC30 Declarator Pointer declarator2 Declarator2 identifier declarator declarator2 constant expression p 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 Appendix C 11 Appendix C Overview of C Language Specifications 4 Initialization expressions NC30 allows the initial values shown in Figure C 3 in initialization expressions integral types constant inte
201. eters of functions that include the pragma 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 b You cannot declare the following functions as the return values of functions Functions that return structures or unions 4 You can only use decimals for the INT Numbers Appendix B 44 Appendix B Extended Functions Reference Examples int asm_func unsigned long unsigned int Prototype declaration for pragma INTCALL 25 asm_func R2R0 R1 the assembler function void main int ie long ay i Ox7FFD 1 0x007F asm_func 1 i lt Calling the assembler function Figure B 72 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 1 J Ox7FFD OxOO7F Pune ay 4 5 lt Calling the C function Figure B 73 Example of pragma INTCALL Declaration C language functuion 2 Appendix B 45 Appendix B Extended Functions Reference pragma INTERRUPT pragma INTF Function Declares an interrupt handler Syntax pragma INTERRUPTA B E FlAinterrupt handler name Description By using the above format to declare interrupt processing functions written in C NC30 generates
202. example the option is used to specify that sample x30 are output to directory test Appendix A 8 Appendix A Command Option Reference dir directory Name Output file specification Function This option allows you to specify an output destination directory for the output file Syntax nc30A dir directory name Execution ja nc30 dir test sample o ncrt0 a30 sample c example M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncrt0 a30 sample c cd test sample 1s total 65 drwxr x 2 toolusr 512 Aug 17 16 13 drwxrwxrwx 11 toolusr 3584 Aug 17 16 14 f w r 1 toolusr 44040 Aug 17 16 14 ncrt0 a30 In this example the option is used to specify that ncrt0 a30 are output to directory test sample Note 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 Appendix A 9 Appendix A Command Option Reference A 2 3 Version Information Display Option Table 2 3 shows the command line options that display the cross tool version data Table 2 3 Options for Displaying Version Data Option Function V Displays the name of the comman
203. f pragma INTERRUPT Declaration Note For compatibility with C77 versions prior to V 2 10 before can accept files that include oragma INTF Appendix B 46 Appendix B Extended Functions Reference pragma PARAMETER Declare assembler function that passed arguments via register Function Declares an assembler function that passes parameters via registers Syntax pragma PARAMETERAI 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 R3R1 and A1A0 far pointer types 24 bit registers R2RO R3R1 and A1A0 near pointer types 16 bit registers A0 A1 RO R1 R2 and R3 char types 8 bit registers ROL ROH R1L and R1H Register names are NOT case sensitive C NC308 ONLY 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
204. f asm FUNCTION ccccccccccesessecceecceeeseceeeecaeaseeceessaueaeeeeeessaaegecessesaegseeseesanas 10 B 2 2 Specifying FB Offset Value of auto Variable cccccccccccecceeseeeeeeeeeeeseeeeeeseeeeeeeeeeeneas 11 B 2 3 Specifying Register Name of register Variable cccccccccccceccseeeeeeeseeeeeeeeeesaeaaaeeeeees 14 B 2 4 Specifying Symbol Name of extern and static Variable ccceeeeeeeeeeeeeeeteteeeeeeneees 15 B 2 5 Specification Not Dependent on Storage Class cc eeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeens 18 B 2 6 Selectively suppressing optimization cccccccccceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeseeesaeaaaeeeeseeeess 19 B 2 7 Notes on the asm FUNCUOMssicrcssGusccoescecveneouercesesasierasszedbodagasioectnsdantadeteabaenieadac sanoessacunnns 20 a Extended Features Concerning asm functions ccccccccceeeeeeeseeeeeeeeceeeeeeeseaaeaeeeess 20 D AGO REO IET cas ca pen secc cues coset saaedayancieee espe aaciaanies capac ourapsucatinscauay aasenassegoencscasseeuassenceveees 21 Ce C202 ae gp CADEI teem een nina 21 B 3 Description of Japanese Characters xcccccscmsccdsccnecteucntncestetace iciastecanctedaeewecesseegeemarcees 22 B 3 1 Overview of Japanese Characters cccccccccccccceeceeseeseeeeeceeeeeeseeaeaeeeeceeeeeeeesessaaaaaeeees 22 B 3 2 Settings Required for Using Japanese Characters ccccccccccecseeeeeeeeeeeeeeeeeeeaeeeeseees 22 B 3 3 Japanese Characters in Character St
205. ferencing 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 assembler pseudo instruction GLB Figure 3 17 is an example of referencing the C program s global variable counter from the assembler function asm_func NC30 MANUAL 60 Chapter 3 Programming Technique C program unsigned int counter lt C program global variable main omitted Assembler function GLB _counter External declaration of C program s _asm_func global variable omitted _counter RO Reference Figure 3 17 Referencing a C Global Variable d Notes on Coding Interrupt Handling 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 A1 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 18 is an example of coding an assembler function for interrupt processing section program gl1b _func _int_func pushm R0 R1 R2 R3 A0 A1 FB lt Push registers MOV B 01H ROL omitted popm RO R1 R2 R3 A0 A1 FB
206. file xx map NOSTOP Outputs all encountered errors to the screen You can specify the assembler s option to use option In30 using nc30 In this case do not specify the In30 options G O ORDER L T V or file Appendix A 52 Appendix A Command Option Reference A 3 Notes on Command Line Options A 3 1 Coding Command Line Options The NC30 command line options differ according to whether they are written in upper case or lowercase letters Some options will not work if they are specified in the wrong case A 3 2 Priority of Options for Controlling If you specify both the following options in the NC30 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 Appendix A 53 Appendix B Extended Functions Reference Appendix B Extended Functions Reference To facilitate its use in systems using the M16C 60 series NC30 has a number of addi tional 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 near far qualifi 1 ers asm function 1 2 3 Japanese 1 characters 2 3 Default argu 1 ment declaration for function Inline storage 1 class Descr
207. following command line options fnot_reserve_asm e s 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 cee Extends char type data to int type data to per form operations In the entry version this option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification supplement When this option is specified the compiler generates code in conformity with ANSI standards fnot_reserve_asm T NRA Function Removes asm from the list of reserved words However _asm which has the same function remains as a reserved word In the entry version this option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification Appendix A 27 Appendix A Command Option Reference fnot_reserve far_and_near fNRFAN Modify generated code Function Removes far and near from list of reserved words However _far and _near which have the same functions remain reserved words In the entry version this option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification fnot_reserve_inline fNRI Modify generated code Function Does not handle inline as a reserved word However _inline that has the same function is han
208. from character string s2 The concatenated string ends with NULL When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 71 Appendix E Standard Library strncmp String Handling Function Function Compares character strings n characters Format include lt string h gt int strncmp s1 s2 n 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 SIZE Tein 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 OR or OS the system may selects another functions with good code efficiency by optimization strncpy Function Copies a character string n characters Format include lt string h gt char _far strncpy s1 s2 Nn 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 SIZ M oiin Number of characters to be copied Retu
209. function declarations located in the SPECIAL page area beginning with the most frequently used one i pragma SPECIAL To use utl30 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated Figure G 1 illustrates the NC30 processing flow C language doa nc30 command Compile driver option Preprosesser C source file from _ jy preprocesser Compiler Assembly language source file This file is lt generated Assembler nc30 command Absolute opuon module fi nfo file Relocatable SBDATA definition amp object SPECIAL Page file Function definition utility SBDATA SPECIAL Page SPECIAL Page definition file Function A definition file definition file CD output file of ncSO FigureG 1 NC30 Processing Flow Appendix G 1 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 G 2 Starting utl30 G 2 1 utl30 Command Line Format For starting utl30 you have to specify the information and parameter that required utl80A command line option A lt map file name gt Prompt lt gt Mandatory item Optional item A Space Delimit multiple command line options with spaces Figure G 2 utl80 Command Line Format Before utl30 can be used the following startup options of the compiler must both be specified in order to generate an absolute module file extension x30 finfo option to out
210. function s b 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 60 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 which performs I O via the Centronics communications circuit Circuit settings Processor mode Microprocessor mode Clock frequency 20OMHz Exiernal bus size 16 bits Initial serial communications settings Use UART1 Baud rate 9600bps Data size 8 bits Parity None Sitop bits 2 bits The initial serial communications settings are made in the init function init c Appendix E 86 Appendix E Standard Library The level 3 I O functions are written in the C library source file device c Table E 13 lists the specifications of these functions Table E 13 Specifications of Level 3 Functions Inout functions Return value int type _sget If no error occurs returns the input character _sput None Returns EOF if an error occurs _pput Output functions Parameters int type Return 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 60 series s two UARTs device c is written so that the UARTO can be selected using the
211. function specified by pragma INTERRUPT is using an argument Arguments cannot be used in an interrupt func tion Delete the argument The description of pragma EQU contains an er ror This line will be ignored gt Write the description correctly The section name in pragma SECTION contains an error The section names that can be speci fied are data bss program rom interrupt and bas This line will be ignored Write the description correctly An operand of pragma contains an error This line will be ignored Write the description correctly The function argument is not correctly written gt Write the function argument correctly Appendix F 27 Appendix F Error Messages Table F 26 ccom30 Warning Messages 6 10 Warning message invalid asm s M flag NC77 NC79 only invalid asm s MX flag ignored NC77 NC79 only invalid asm s X flag NC77 NC79 only invalid return type invalid storage class for function change to extern Kanji in pragma ADDRESS keyword keyword are reserved for future large type was implicitly cast to small type mismatch prototyped parameter type meaningless statements deleted in optimize phase meaningless statement mismatch function pointer assign ment multi character character constant near far is conflict beyond over typedef No hex digit no hex digit Description and countermeasure Error in M flag value in asm statement Specify
212. function to a prototype declaration A character constant consisting of two characters or more is used Use a wide character L xx when two or more characters are required The type defined by specifying near far is again defined by specifying near far when referencing it Write the type specifier correctly The hex constant contains some character that cannot be used in hex notation Use numerals 0 to 9 and alphabets A to F anda to f to describe hex constants Appendix F 28 Appendix F Error Messages Table F 27 ccom30 Warning Messages 7 10 Warning message No initialized of valiable name No storage class amp data type in declare global storage class amp int type assumed non initialized variable variable namei is used non prototyped function used non prototyped function declared octal constant is out of range octal_ character is out of range overflow in floating value convert ing to integer old style function declaration prototype function is defined as non prototype function before redefined type redefined type name of qualify register parameter function used before as stack parameter function Description and countermeasure It is probable that the register variables are used without being initialized Make sure the register variables are assigned the appropriate value The variable is declared without storage class and type specifiers It will be hand
213. g Up Startup ProCSSsia Gc ccccecicicccadecesccencdececacemscesnseccecccaresedsacvasdOacedeuesesdgnedevecabte 56 Linking Assembly Language Programs with C Programs ccccsecceceeeeeceeeeeeeaeees 57 3 3 1 Calling Assembler Functions from C Programs cccccccesseeeseeeeeceeeeeeseeeeseeeeeeeeeeeeeaeeaes 57 a Calling Assembler Functions cists iese cece cejccacoccastsunaraseaceeseandecsaceexpalensaeiuedrecepseebavecbenotsas 57 b When assigning arguments to assembler functions ccccccsseeeeceesseeeceeeeeeeecaeeeess 58 c Limits on Parameters in pragma PARAMETER Declaration cccccecceceeeeeeeeees 59 3 3 2 Writing Assembler Functions cccccccssseeeecseeeeeceeeeeeeeseeeeeseeueeeeseaeeeeeseueeeesaacseesssaaees 59 a Method for writing the called assembler functions cccecccceeeeceeeeeeeeeeeeeeeeeseeeeeeees 59 b Returning Return Values from Assembler FUNCTIONS ccccccseeeeeeeeeeeeeeeeseeeessaaeeees 60 NC30 MANUAL V c Referencing C Variables cccccssccccccccsseseececcecaeeeeccecceeeusceeeeeseaseeceeseseaaeeeeeesaeaeeeeeseaas 60 d Notes on Coding Interrupt Handling in Assembler Function cccceeeeeeeeeeeeeeeeees 61 e Notes on Calling C Functions from Assembler Functions ccccecesseseeeeeeeeeeeeeeees 62 3 3 3 Notes on Coding Assembler Functions cccccccceceeesseeeeeeeeeeeeeeeeeseaaaeeeeeeeeeeeeseeaaaas 63 Motes on Handli
214. gAunpack 2 pragma STRUCTAstructure_tagAarrange In NC30 structures are packed For example the members of the structure in Figure B 66 are arranged in the order declared without any padding struct s int char Figure B 66 1 Inhibiting packing Member name Size i 16 bits C 8 bits j i 16 bits Example Mapping of Structure Members 1 Mapped location offset 0 2 3 This NC30 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 struct s int char Member name Size i 16 bits C 8 bits j i 16 bits 8 bits Mapped location offset 0 2 3 Padding Figure B 67 Example Mapping of Structure Members 2 As shown Figure B 6 7 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 Appendix B 40 Description Examples Appendix B Extended Functions Reference 2 Arranging members This NC30 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 66 is arranged using pragma STRUCT ee Membername Type Size Mapped location offset 16 bits
215. garding 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 See Figure B 58 int Lune Caner i return i int f int f amp func Error Message Error ccom smp c line 10 gt f amp func can t get inline function s address by amp operator Sorry compilation terminated because of these errors in main Figure B 58 Example of inappropriate code of inline function 3 4 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 results in accessing different areas Therefore if there is static data you want to be used in an inline function declare it outside the function If a static declaration is found in an inline function NC30 generates a warning Renesas does not recommend entering static declarations in an inline function See Figure B 59 inline int func int j static int i Q0 i return i j Warning Message Warning ccom smp c line 3 static valuable in inline function gt static int i Q0 Figure B 59 Example of inappropriate code of inline function 4 5 Regarding debug information NC30 does not output C language level debug information for inline func
216. ger constants Table C 7 shows the format of each base decimal octal and hexadecimal Table C 7 Specifying Integer Constants Base Example Decimal 0123456789 15 Octal Start with O zero 01234567 017 Hexadeci Start with OX or Ox 0123456789ABCDEF OXF or Oxf mal 0123456789abcdef Determine the type of the integer constant in the following order according to the value Octal and hexadecimal signed int gt unsigned int signed long unsigned long signed long long unsigned long long Decimal signed int signed long gt unsigned long signed long long unsigned long long Adding the suffix U or u or Lor or LL or Il 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 unsigned int unsigned long unsigned long long 2 long type constants Specify long type constants by appending the letter L or The type is determined from the value in the following order Octal and hexadecimal signed long gt unsigned long signed long long unsigned long long Decimal signed long long unsigned long long 3 long type constants Specify long long type constants by appending the letter LL or Il The type is deter mined from the value in the following order Octal and hexadecimal signed long long gt unsigned long long Decimal signed long long Appendix C 5
217. gral types array constant constant character types constant character types array character literal constant pointer types character literal pointer array character literal character literal Figure C 3 Initial Values Specifiable in Initialization Expressions b Function Declaration Use the format shown in Figure C 4 to declare functions function declaration definition storage class specifierAtype declaratorAdeclaration specifierAmain program function declaration prototype declaration storage class specifierAtype declaratorAdeclaration specifier Figure C 4 Declaration Format of Function 1 Storage class Specifier NC30 supports the following storage class specifier extern static 2 Type Declarators NC30 supports the following type declarators Bool char ni hort ong ong long loat Jouble unsigned igned struct union enum 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 5 in NC30 Appendix C 12 Appendix C Overview of C Language Specifications Declarator Pointer declarator2 Declarator2 identifier list of dummy argument declarator declarator constant expression declarator list of dummy argument am m 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 pro
218. gs however not including alarms output by Wlarge_to_ small and Wno_used_argument WMT Outputs error messages to the tag file of source file by source file WUV Outputs a warning about auto variables that have not been initialized WLTS_ Outputs a warning about the tacit transfer of variables in descending sequence of size WNWS Specifying this option while Wnon_ prototype or Wall is specified inhibits Alarm for standard libraries which do not have prototype declaration WNUA Outputs a warning for unused argument of functions Wnon_ prototype WNP Warning option Function Outputs warning messages for functions without prototype declarations or if the prototype declaration is not performed for any function supplement Function arguments can be passed via a register by writing a prototype decla ration Increased speed and reduced code size can be expected by passing argu ments 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 Appendix A 40 Appendix A Command Option Reference Wunknown_ pragma WUP 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 t
219. gure B 34 Example of Suppressing Optimization by Dummy asm Appendix B 19 Appendix B Extended Functions Reference B 2 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 Do not specify auto variables or parameters or 1 bit bit fields using the offset from the frame base register FB 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 Format for checking auto bit fields Figure B 35 Example Coding of asm Function 1 2 2 You can specify the register storage class in NC30 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 asm MOV W 0H i lt Format for checking register variables Figure B 36 Example Coding of asm Function 2 2 Note that when you specify option O 1 5 OR or OS parameters passed via the reg isters may to improve code efficiency be processed as register variables rather than being moved to the auto area In this case when parameters are specified in an asm function the assembly language Is output using the register names instead of the variable s FB offset 3 When referencing arguments in the asm function The compil
220. gure B 82 Example of pragma JSRA Appendix B 54 Appendix B Extended Functions Reference pragma JSRW Calls a function with JSR W Function Syntax Description Rules Example Note Calls a function using the JSR W instruction pragma JSRWAfunction name 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 1 You may NOT specify pragma JSRwW for static functions 2 When function call with the JSR W instruction does not reach pragma JSRW de clared function an error occurs at link time In this case you may not use pragma JSRW extern void func int i pragma JSRW func void main void Figure B 83 Example of pragma JSRW The pragma JSRW is valid only when directly calling a function It has no effect when calling indirectly Appendix B 55 Appendix B Extended Functions Reference pragma PAGE Function Syntax Description Rules Example Declares new page position in the assembler generated list file pragma PAGE 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 1 You cannot specify the character string
221. h gt double log10 x function double X arbitrary real number Returns the common logarithm of given real number x longjmp Function Format Method Argument ReturnValue Description Execution Control Functions Restores the environment when making a function call include lt setjmp h gt void longjmp env val function jmp_buf env Pointer to the area where environment is restored INE Vale nias Value returned as a result of setjmp No value is returned 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 value is returned as the result of setimp However if val is 0 it is converted to 1 Appendix E 45 Appendix E Standard Library malloc Memory Management Functions Function Allocates a memory area Format include lt stdlib h gt void _far malloc nbytes Method function Argument size_t nbytes 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 lf memory areas have been freed with free 1 1 lf the amount of memory to be secured is smaller than that freed th
222. haracter String Value Convert Function Function Converts a character string into an unsigned long type integer Format include lt string h gt unsigned long strtoul 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 OL Does not constitute a number ReturnValue OL Returns the configured number in long type Description When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 77 Appendix E Standard Library strxtrm Character String Value Convert Functions Function Converts a character string using locale information Format include lt string h gt size_t strxfrm s 1 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 Number of bytes converted ReturnValue Returns the number of characters converted Description When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization tan Mathemati
223. haracters if the character string was converted correctly Returns 1 if the character string was not converted correctly Appendix E 82 Appendix E Standard Library wctomb Multi byte Character Multi byte 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 Appendix E 83 Appendix 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 3 5 OS or OR the system 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
224. hat can be executed efficiently by using SB relative addressing pragma SBDATA declares that SB relative address ing 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 oragma SBDATA is specified for anything other than a variable it is ignored as invalid 3 If the 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 sec tion when allocating memory for it 5 If pragma SBDATA is declared for ROM data the data is not placed ina 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 DICE T bit6 1 bit7 1 char char e e e e e e e e char sym_data func void sym_data bitl 0 omitted Figure B 64 Example Use of pragma SBDATA Declaration 1 Do not write a pragma SBDATA declaration for ROM data Appendix B 38 Appendix B Extended Functions Reference pragma SECTION Function Changes the names of sections generated by NC30 Syntax pragma SECTIONAsection nameAnew section name Description Specifying the program section data section and rom section in a pragma SEC TION declaratio
225. he 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 sizeof of an array of unknown size This is an invalid size Specify the size of the array An attempt is made to find the size of void This is an invalid size The size of void cannot be found This standard library function is used without its header file included Be sure to include the header file static data is declared within a function that is declared in storage class inline Do not declare static data in an inline function The size of the initialize expression is greater than that of the variable to be initialized Make sure that the size of the initialize expres sion is equal to or smaller than the variable 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 of array near or far is used as arrangement position infor mation of members variables of a struct or union Do not specify near and far for members The function specified by pragma TASK is called Be careful not to call a task function The function specified by pragma TASK is using a return value The function specified by pragma TASK cannot use return values Delet
226. he body of an inline function is not defined Using an inline function define the function body prior to the function call The recursive call of an in line function cannot be carried out Using an inline function No recursive The function specified by pragma INTERRUPT is called Be careful not to call an interrupt handling func tion 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 An attempt is made to push void type in function argument etc The type void cannot be pushed The operation contains an error Check each expression Also note that the ex pressions on the left and right sides of must be of the same type The operation contains an error Check the expressions on the left and right sides of the operator The amp amp operation contains an error Check the expressions on the left and right sides of the operator The amp operation contains an error Check the expression on the right side of the operator The amp operation contains an error Check the expressions on the left and right sides of the operator Appendix F 13 Appendix F Error Messages Table F 13 ccom30 Error Messages 6 14 Error message invalid operands invalid operands invalid operands
227. he int type variable located in the near area The ptr itself is located in the near area Memory mapping for the above example is shown in Figure B 6 Figure B 6 shows memory maps for above examples Ptr OES near area Pr 2oytes Figure B 6 Memory Location of Pointer type Variable Appendix B 4 Appendix B Extended Functions Reference When near far is explicitly specified determine the size of the address at which to store the variable function that is written on the right side A declaration of pointer type variables that handle addresses is shown in Figure B 7 Example 1 int far ptr1 Example 2 int far ptr2 Figure B 7 Example of Declaring a Pointer Type Variable 1 2 As explained earlier unless near far is specified the compiler handles the variable loca tion as near and the variable type as near Therefore Examples 1 and 2 respectively are interpreted as shown in Figure B 8 Example 1 int far near ptr Example 2 int near far ptr2 Figure B 8 Example of Declaring a Pointer Type Variable 2 2 In Example 1 the variable ptr1 is a 4 byte 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 a 2 byte variable that indicates the int type variable located in the near area The variable itself is located in the far area Memory mappings for Examples 1 and 2 are shown in Figu
228. his option helps to find misspellings in pragma When you are using only the NC series compilers Renesas recommends that this option be always used when compiling Wno_stop WNS 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 pos sible Note 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 Appendix A 41 Appendix A Command Option Reference Wstdout Function Outputs error messages to the host machine s standard output stdout Execution example A gt nc30 c Wstdout sample c gt err doc A gt type err doc M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c Error ccom sample c line 39 unknown valuable port0o0 gt port00 0x00 Sorry compilation terminated because of these errors in main A gt Supplement Use this option to save error output etc to a file by using Redirect in the MS
229. hnique 3 1 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 var ies with each type of MCU consult the user s manual of your MCU for de tails 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 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 Example C language description to SFR area pragma ADDRESS TAOIC 0055h M16C 60 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 NC30 MANUAL 49 Chapter 3 Programming Technique 3 1 38 About Optimization a Regular optim
230. hod macro Argument int c EE IE 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 Appendix E 41 Appendix E Standard Library isxdigit Character Handling Functions Function Checks whether the character is a hexadecimal character 0 9 A F a f Format include lt ctype h gt int isxdigit c Method macro Argument _intc PE S EIE 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 labs Integer Arithmetic Functions Function Calculates the absolute value of a long type integer Format include lt stdlib h gt long labs n Method function Argument longn Long integer ReturnValue Returns the absolute value of a long type integer distance from 0 Appendix E 42 Idexp Appendix E Standard Library Localization Functions Function Format Method Argument ReturnValue Calculates the power of a floating point number include lt math h gt double Idexp x exp function double X Float point number INt EXP asii Power of number Returns x exp power of 2 Function Format Method A
231. ic functions Table E 9 Integer Arithmetic Functions rand Generates a pseudo random number srand Imparts seed to a pseudo random number generating rou tine Funcion Renan abs D psearch T abs dv gon Generates a pseudo random number ey Appendix E 15 Appendix 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 Reenirani atof Converts a character string into a double type floating O ato O ato O strtod O siriol O a 5 strtoul Converts a character string into an unsigned long type integer j Multi byte Character and Multi byte Character String Manipulate Functions The following lists Multibyte Character and Multibyte Character string Manipulate Func tions Table E 11 Multibyte Character and Multibyte Character String Manipulate Functions mblen Calculates the length of a multibyte character string O mbstowcs Converts a multibyte character string into a wide char O acter string mbtowc Converts a multibyte character into a wide character O wcstombs Converts a wide character string into a multibyte char O acter string 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 Initi
232. ications C 2 Standard Language Specifications The chapter discusses the NC30 language specifications with the standard language specifications C 2 1 Syntax This section describes the syntactical token elements In NC30 the following are pro cessed as tokens Key words Identifiers Constants Character literals Operators Punctuators Comment a Key Words NC30 interprets the followings as key words Table C 6 Key Words List asm Swich far o o yea asm ese register unsigned aut void Boo volatile break whil case foa signed nine char In the entry version the keywords listed below are not handled as keywords near far inline asm When using these keywords add the underscore _ before the first character of each keyword used _near _far _ Inline _asm b Identifiers Identifiers consist of the following elements Ihe ist character is a letter or the underscore Ato Z ato Z or _ The 2nd and subsequent characters are alohanumerics or the underscore A to Z atoz O0to9 or __ Identifiers can consist of up to 31 characters However you cannot specify Japanese characters in identifiers Appendix C 4 Appendix C Overview of C Language Specifications c Constants Constants consists of the followings Integer constants Floating point constants Character constants 1 Integer constants In addition to decimals you can also specify octal and hexadecimal inte
233. ied the following register specified variables are forc ibly assigned to registers 1 Integral type variable 2 Pointer variable Note Because register specification in some cases has an adverse effect that the efficiency decreases be sure to verify the generated assembly language be fore using this specification fno_align fNA Function Does not align the start address of the function In the entry version this option cannot be specified Appendix A 33 Appendix A Command Option Reference fUSRW 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 gen erated code size 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 can be avoided by a combined use with pragma JSRA This option is useful when the program is relatively small not exceeding 32 Kbytes in size or ROM compression is desired fbit fB Function Outputs a 1 bit manipulate instruction to used an absolute addressing to all external variables arranged in the near area Supplement If a external variable to perform bit manipulation resides in a 0000 to 1FFF s area of the M
234. ields use this option to suppress optimization Notes This optimization is performed The variables is specified regardless volatile qualified This option is only valid if you specify option O 8 to 5 or OR or OS Appendix A 19 Appendix A Command Option Reference Ono_break_source debug ONBSD Function Suppresses optimization that affects source line data In the entry version this option cannot be specified Supplement Specifying the OR or O 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 OR or O option is specified Ono_float_const_fold ONFCF Function Suppresses the constant folding processing of floating point numbers In the entry version this option cannot be specified Supplement 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 calcula tion sequence in the C source file is preserved Appendix A 20 Appendix A Command Option Reference Ono_stdlib ONS Function Suppresses inline padding of standard library functions m
235. ify options O OR or OS 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 OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 68 Appendix E Standard Library strcpy String Handling Functions Function Copies a character string Format include lt string h gt char _far strcpy s1 s2 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 ReturnValue Returns a pointer to the character string at the destination of copy Description Copies character string s2 ending with NULL to area s1 After copying the character string ends with NULL When you specify options O OR or OS the system
236. in the assembled pro gram performing improper operations For examplr C sauce which must not use an optimization option at the time of compile pragma ADDRESS TAOIC M16C 60 MCU s Timer AO interrupt control register struct char char ae An interrupt request bit char f TA0IC void wait_until IR_is_ON void while TAOQOIC IR 0 Waits for TAOQOIC IR to become 1 7 TAOQIC IR Returns 0 to TAQIC IR when it becomes 1 Please compile after taking the following measures if the manipulation in structions 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 O5 are used An instruction is directly described in a program using an ASM function Appendix A 17 Appendix A Command Option Reference OR Function Optimizes ROM size in preference to speed This option can be specified with g and O options In the entry version this option cannot be specified Supplement 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
237. in which to search for files to be referenced by the preprocess command include Max specified 8 directory Syntax nc30A l directoryA lt C source file gt Execution e nc30 c I test include I test inc sample c example M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c In this example two directories test include and test inc are specified 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 operat ing system of the host machine Compile driver control Function Invokes only preprocess commands and outputs results to standard output Execution lex nc30 E sample c example 7 M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXXK XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED line 1 sample c omitted line 1 usr3 tool toolusr work30 inc30 stdio h omitted 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 ccom30 as30 or In30 are generated Appendix A 4 Appendix A Command Option Reference Compile driver control Function Invokes only preprocess commands
238. include lt stdlib h gt void _far qsort base nelen size cmp e1 e2 Method function Argument void far base Start address of array size_t nelen Element number size_t SIZ Element size int cmp Compare function ReturnValue No value is returned Description Sorts elements in an array Appendix E 58 Appendix 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 nbytes Method function Argument void _far cp Pointer to the memory area before change size_t nbytes Size of memory area in bytes to be changed ReturnValue Returns the pointer of the memory area which has had its size changed Returns NULL if a 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 nbytes Appendix E 59 scant Appendix E Standard Library
239. ing Messages Tables F 21 to F 30 list the ccom30 compiler warning messages and their countermeasures Table F 21 ccom30 Warning Messages 1 10 Warning message pragma pragma name amp HAN DLER both specified pragma pragma name amp INTER RUPT both specified pragma pragma name amp TASK both specified pragma pragma name format error pragma pragma name format error ignored pragma pragma name not function ignored pragma pragma name s function must be predeclared ignored pragma pragma name s function must be prototyped ignored pragma pragma name s function return type invalid ignored pragma pragma name unknown switch ignored Description and countermeasure Both pragma pragma name and pragma HAN DLER are specified in one function Specify pragma pragma name and pragma HANDLER exclusive to each other Both pragma pragma name and pragma IN TERRUPT are specified in one function Specify pragma pragma name and pragma IN TERRUPT exclusive to each other Both pragma pragma name and pragma TASK are specified in one function Specify pragma pragma name and pragma TASK exclusive to each other The pragma pragma name is erroneously writ ten Processing will be continued Write it correctly The pragma pragma name is erroneously writ ten This line will be ignored Write it correctly A name is written in the pragma pragma name that is not a function
240. ing literals after concatenation Maximum size in bytes of object Maximum number of members per structure union Maximum number of enumerator constants per enumerator Maximum number of levels of nesting of structures or unions per struct declaration list Maximum number of characters per character string Maximum number of lines per file Appendix C 3 Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory 40max Depends on amount of available memory Depends on amount of available memory 259 Max Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on stack size of YACC Depends on stack size of YACC Depends on stack size of YACC Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory 3imax Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on amount of available memory Depends on operating system Depends on amount of available memory Appendix C Overview of C Language Specif
241. ing of assembler functions 1 Specify section names using the assembler pseudo command SECTION Sections can be assigned any desired name 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 The following shows a procedure for writing the exit processing of assembler functions 5 If you modified the B and U flags within the function restore the flag register from the stack 6 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 15 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 NC30O SECTION program GLB _asm_func _asm_func PUSHC FLG PUSHM R3 R1 MOV w SYM1 R3 MOV w SYM1 2 R1 omitted POPM R3 R1 6 POPC FLG 7 RTS lt 8 END 1 to 8 correspond to the steps described above Figure 3 15 Example Coding of Assembler Function 1 Do not change the contents of B and U flags in the assembler function NC30 MANUAL 59 Chapter 3 Programming Technique b Returning
242. inition put after pragma TASK are valid 4 No processing occurs if you specify other than a function name 5 No error occurs if you duplicate pragma TASK declarations 6 Acompile error occurs if you use any function specified in one of the following decla rations in pragma TASK pragma INTERRUPT oragma INTHANDLER pragma HANDLER oragma ALMHANDLER pragma CYCHANDLER Example include lt mr30 h gt include TEA AT pragma TASK pragma TASK 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 remainder omitted Figure B 80 Example of pragma TASK Declaration Appendix B 52 Appendix B Extended Functions Reference B 7 5 The Other Extensions NC30 includes the following extended function for embedding assembler description inline pragma ASM pragma ENDASM 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 modify ing anything to the generated assembly source file Rules Writing pragma ASM be sure to use it in combination with pragma ENDASM NC30 Suspends processing if no pragma ENDASM is found the corresponding pragma ASM 1 In assembly language description do not write statements which will cause the regis ter contents to be destro
243. ion Reads one character from the stream Interprets code 0x1A as the end code and ignores any subsequent data getchar Input Output Functions 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 Appendix E 35 Appendix 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 the argument 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 n at the end of the line is replaced with the null character 0 Interprets code 0x1A as the end code and ignores any subsequent data Input Output Functions Function Initializes the stream Format include lt stdio h gt void init void Method function Argument No argument used ReturnValue
244. ion outputs a large amount of warnings warning output is suppressed for the type conversions listed below Assignment from char type variables to char type variables Assignment of immediate values to char type variables Assignment of immediate values to float type variables Wno_warning_stdlib WNWS Function Specifying this option while Wnon_prototype or Wall is specified inhibits Alarm for standard libraries which do not have prototype declarationsi Appendix A 46 Appendix A Command Option Reference Wno_used_argument WNUA Function Outputs a warning for unused arguments function Appendix A 47 A 2 9 Appendix A Command Option Reference Assemble and Link Options Table A 9 shows the command line options for specifying as30 and In30 options Table A 9 Assemble and Link Options Option Function as30A lt option gt Specifies options for the as30 link command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified IN80A lt option gt Specifies options for the In30 assemble command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified Appendix A 48 Appendix A Command Option Reference as30 option Assemble link option Function Specifies as30 assemble command options If you specify two or more options enclose them in double quotes In the entry v
245. iption Specifies the addressing mode to access data near Access to an area within 64K bytes OH to OFFFFH far Access to an area beyond 64K bytes all memory areas All functions take on far attributes Assembly language can be directly included in C programs It can also be included outside functions Example asm MOV W 0 RO You can specify variable names within functions only Example 1 asm MOV W RO Soles LI Example 2 asm MOV W RO Se peo3 Example 3 asm MOV W POr SOTEN You can include dummy asm functions as a means of partially suppressing optimization within functions only Example asm Permits you to use Japanese characters in character strings Example Le Permits you to use Japanese characters for character constants g T Pg T Example L 75 Permits you to write Japanese characters in comments Example HE Shift JIS and EUC code are supported but can t use the half size character of Japanese KATA KANA Default value can be defined for the argument of a function Example 1 extern int func int 1 char 0 Example 2 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 Functions can be inline developed by using the inline storage class specifier Example inline fu
246. it as a wchar_t type If as in 3 you use two or more characters as the character constant only the first character Xx becomes the character constant Figure B 44 shows examples of how to write Japanese character constants include lt stdlib h gt void near func wchar_t JC 5 JC 0 L X Jcus JC 2 L Z JC 3 L 2 remainder omitted Figure B 44 Format of Kanji Character Constant Description Figure B 45 is a memory map of the array to which the character constant in Figure B 44 has been assigned 10bytes Figure B 45 Memory Location of wchar_t Type Character Constant Assigned Array higher Appendix B 24 Appendix B Extended Functions Reference B 4 Default Argument Declaration of Function NC30 allows you to define default values for the arguments of functions in the same way as with the C facility This chapter describes NC30 s facility to declare the default arguments of functions B 4 1 Overview of Default Argument Declaration of Function NC30 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 function B 4 2 Format of Default Argument Declaration of Function Figure B 46 shows the format used to declare the default arguments of a function Storage class specifierATyp
247. ization 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 func VOLE Figure 3 1 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 suppress optimization add the volatile qualifier as shown in Figure 3 2 extern int volatile port rune DORE Figure 3 2 Example of a Meaningless Variable Access Optimization Suppressed 2 Meaningless comparison int Lune char c Int 1 if c 1 i 1 else 1 0 return ij Figure 3 3 Meaningless Comparison In 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 representable 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 NC30 MANUAL 50 Chapter 3 Programming Technique 3 Programs not executed No assembler codes are generated for programs which logically are not executed void Lunc int i LUNCZ i 3 Fragment n
248. l 2 variables of unsigned char and signed char type 3 variables of unsigned short and signed short type variables of unsigned int and signed int type variables of unsigned long and signed long type 6 variables of unsigned long long and signed long long type Variables give below are excluded from SBDATA declaration 1 variables positioned in sections worked on by pragma SECTION 2 variables defined by pragma ADDRESS 3 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 utl30 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 utl30 are only those external functions that are listed below 1 Functions which are not declared with static 2 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 1 functions positioned in sections worked on by pragma SECTION 2 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 ult30 and variables to be allocated are picked out of the remainder of the SB area Appendix G 10 Appendix G The SBDATA declaration amp SPECIAL Page Function declar
249. lared with volatile logical ORs are not com bined for optimiza Ono_asmopt ONA Inhibits starting the assembler optimizer Function Inhibits starting the assembler optimizer aopt30 In the entry version this option cannot be specified Appendix A 23 Appendix A Command Option Reference Ostatic to inline OSTI Optimization Function A static function is treated as an inline function and the assembling code which carried out inline deployment is generated In the entry version this option cannot be specified 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 satic function 2 When address acquisition is omitted in the program to the static func tion 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 The situation of the existence of frame construction changes with combined use with the con tents of description of the target function and another optimization option Below inline deployment is carried out The example of description of a static function is shown Function func is a function inline deployment is carried out in each place currently
250. le c lt RET gt lt RET gt Return key Always specify the startup program first when linking Figure A 2 Example nc30 Command Line Appendix A 1 Appendix A Command Option Reference A 2 nc380 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 file extension r30 and ends processing Didentifier Defines an identifier Same function as define directory Specifies the directory containing the file s specified in include You can specify up to 8 directories E Invokes only preprocess commands and outputs result to standard output P Invokes only preprocess commands and creates a file extension i S Creates an assembly language source file extension a30 and ends processing U predefined macro Undefines the specified predefined macro silent Suppresses the copyright message display at startup 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 lan Short form dSL guage list file Ist 1 If you do not specify command line options c E P or S nc30 finishes at and output files up to the absolute load mo
251. le functions Function Contents localeconv Initializes struct Iconv setlocale Sets and searches the locale information of a program math h a 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 Appendix E 5 Appendix E Standard Library setjmp h SS eee Function Defines the structures used in branch functions Function Contents longjmp Performs a global jump setjmp Sets a stack environment for a global ju
252. led as int when processed Write the storage class and type specifiers 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 sucha case check the description of the auto variables etc in the function If the description is correct ignore this warning 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 A prototype declaration for the defined function cannot be found Displayed only when the WNP option is specified Write a prototype declaration The octal constant contains some character that cannot be used in octal notation Use numerals 0 to 7 to describe octal constants The octal constant contains some character that cannot be used in octal notation Use numerals 0 to 7 to describe octal constants A very large floating point number that cannot be stored in integer type is being assigned to the integer type Reexamine the assignment expression The function definition is written in format prior to ANSI ISO C Write the function definition in ANSI ISO format The non prototyped function is redefine proto type declaration Unite ways to declare function type Redwfine typedef Check typedef The same identifie
253. lements 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 Mathematical Functions 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 number x Appendix E 23 Appendix E Standard Library clearerr Input Output Functions 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 Mathematical Functions Function Calculates cosine Format include lt math h gt double cos x Method function Argument double X arbitrary real number ReturnValue Returns the cosine of given real number x handled in units of radian Appendix E 24 Appendix E Standard Library cosh Mathematical Functions Function Cal
254. ler must be type void in the declaration Do NOT use the ret_int system calls from C Only the function definition put after pragma INTHANDLER are valid No processing occurs if you specify other than a function name No error occurs if you duplicate pragma INTHANDLER declarations A compile error occurs if you use any function specified in one of the following decla rations in pragma INTHANDLER pragma INTERRUPT pragma HANDLER oragma ALMHANDLER pragma CYCHANDLER pragma TASK Rules NO Of WD Example include lt ms Oshe include vidn pragma INTHANDLER void hand void omitted x POU int Figure B 79 Example of pragma INTHANDLER Declaration Appendix B 51 Appendix B Extended Functions Reference pragma TASK Task start function declaration Function Declares an MR30 task start function Syntax pragma TASKAtask start function name Description By using the above format to declare a task start function written in C NC30 generates the code for 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 You need 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 def
255. licate can t read C source from filename line number for error message can t open C source filename for error message argument type given both places array of functions declared array size is not constant integer asm s string must have more than 3 or auto variable s size is zero bitfield width exceeded bitfield width is not constant integer can t get bitfield address by amp operator can t get inline function s address by amp operator can t get void value can t output to file name can t open file name Description and countermeasure volatile is described more than twice Write the type qualifier correctly The source line is in error and cannot be dis played The file indicated by filename cannot be found or the line number does not exist in the file Check whether the file actually exists The source file in error cannot be opened Check whether the file exists Argument declaration in function definition over laps an argument list separately given Choose the argument list or argument declara tion for this argument declaration The array type in array declaration is defined as function Specify scalar type struct union for the array type The number of elements in array declaration is not a constant Use a constant to describe the number of ele ments or is described more than thrice in asm statement Make sure that is des
256. ludes functions such as the scanf and printf I O functions These functions are normally called high level I O functions These high level I O functions are combinations of hardware dependent low level I O functions In M16C 60 series application programs the I O functions may need to be modified ac cording to the target system s hardware This is accomplished by modifying the source file for the standard library This chapter describes how to modify the NC30 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 Structure of I 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 Level 2 Level 3 Output function Figure E 1 Calling Relationship of I O Functions Appendix E 85 Appendix 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
257. lue or when the dividend is a 2 byte value the divisor is a 1 byte value and the result is a 1 byte value the compiler generates div w divu w and div b divu b microcomputer instructions Note If the divide operation results in an overflow when this option is specified the compiler may operate differently than stipulated in ANSI The div instruction of the M16C has such a characteristic that when the opera tion resulted in an overflow the result becomes indeterminate Therefore when the program is compiled in default settings by NC30 it calls a runtime library to correct the result for this problem even in cases where the dividend is 4 byte the divisor is 2 byte and the result is 2 byte finfo Changes generated code Function Outputs the information required for the TM Inspector STK Viewer Map Viewer and utl30 In the entry version this option cannot be specified Supplement When using STK Viewer Map Viewer or utl30 the absolute module file x30 output by this option is needed Note No check is made for the use of global variables in the asm function For this reason use of the asm function even in utl30 is ignored Appendix A 36 Appendix A Command Option Reference fswitch other section fSOS 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 This option does not normally need to be
258. lways enabled i e assumed to be specified Therefore it cannot be enabled or disabled by specifica tion gno_reg Suppresses the output of debugging information for register variables In the entry version this option cannot be specified gold outputs debugging information for old version debuggers and third party debuggers In the entry version this option cannot be specified Outputting debugging information Function Outputs debugging information to an assembler source file extension a30 Execution nc30 g v sample c example m16c 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c cpp30 sample c 0o sample i DM16C DNC30 ccom30 sample i o sample a30 g as30 N N sample a30 1n30 sample r30 G MS o sample omitted ls sample fw ft fr iL toolusr 2894 Aug 17 14 51 sample c lt 00S 1 toolusr 7048 Aug 17 15 53 sample map m a a 1 toolusr 53570 Aug 17 15 53 sample x30 Note 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 Appendix A 12 Appendix A Command Option Reference genter Function Note Outputting enter instruction Always output an enter instruction when calling a function In the entry version this
259. manipulate instruction can be operated on it directly Rules 1 If pragma BIT is used for anything other than an external variable it is ignored as invalid 2 When an external variable is declared in pragma BIT and also has a bit width of 1 bit always directly output 1 bit instructions It is therefore the user s responsibility to ensure that when pragma BIT declarations are included the variables are mapped between 0 and 01FFFH Example pragma BIT bit_data struct bit_data char bit0 1 char bit1 1 char bit2 1 char bit3 1 char bit4 1 b it5 1 bit6 1 PiE 1L char char char bit_data func void bit_data bitl 0 omitted Figure B 62 Example Declaration of pragma BIT Note 1 bit instructions are generated under the following either conditions 1 When a fbit fB option is specified and the object to be operated on is a near type variable 2 When the object to be operated on is a variable declared by pragma SBDATA 3 When the object to be operated on is a variable declared by pragma ADDRESS and the variable is located somewhere between address 0000 to address 01FFF 4 When the object to be operated on is a variable declared by pragma BIT 5 Variables mapped to areas within 32 bytes of the value of the FB register Appendix B 36 Appendix B Extended Functions Reference pragma ROM Function Maps specified data variable to rom section Syntax pragm
260. marizes the steps required to modify the startup programs to match the target system Set the size of stack sections Set the size of heap sections OF QHoU Set the interrupt base register Set the processor operating mode oul ogves 2 2 3 Customizing Memory Allocations Figure 2 14 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 60 Series I O It is called before main in ncrt0 a30 Figure 2 19 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 ncrt0 a30 gt Call main function Figure 2 19 Part of ncrt0 a30 Where init Function is Called If you are using only sprintf and sscanf the init function does not need to be called 1 The init function also initializes the microcomputer hardware for standard in put output functions By default the M16C 62 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 microcomputer is to be used NC30 MANUAL 33 Chapter 2 Basic Method for Using the Compiler 2 Settings When Not Using Memory Management Functions To use the memory management functions
261. mbly 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 j 0x5678 lt Argument to func int k Ox9abc lt Argument to func k ie a ee int Unet int kane yint zZz J int sum sum x y Z return sum Return value to main Figure D 14 Example of C Language Sample Program FUNCTION main FRAME AUTO offset 6 FRAME AUTO size offset 4 FRAME AUTO size offset 2 ARC Size 0 Auto Size 6 Context Size 5 section program file proto2 c _ line 5 glb _main enter 06H _ line 6 C_SRC int i 0x1234 mov w 1234H 2 FB 5 _ line 7 C_SRC int J 0xb60784 mMov w 5678H 4 FB gt 4 _line 8 C_SRC int k 0x9abc mov Ww 9abcH 6 FB gt k line 9 C_SRC ka Tone 1 lk push w 6 FB k mov W 4 FB R2 J mov w 2 PB RI Jst STUNG add bp 02H SP mov w RO 2 FB _line 10 exit Figure D 15 Assembly language sample program 1 2 Appendix D 11 Appendix D C Language Specification Rules FUNCTION func FRAME AUTO size y offset FRAME AUTO size F offset FRAME ARG size offset FRAME ARG size F offset REGISTER ARG x size F REGISTER RO ARG Size 4 Auto Size 2 Context Size 8 _ line 13 CORC vi glb func enter 02H mov WwW RO 2 FB _ line 16 C_SRC sum mov 2 FB RO add 83 FB RO add 10 FB RO mov Ww RO 2
262. messages to the tag file of source file by source file when an error or warning occurs Supplement This option with Werror_file lt file name gt i WEF option canit specify Wuninitialize_variable WUV 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 Example main Ly i 0 i lt 2 I RET val 1 Initalize by logical ff val Appendix A 45 Appendix A Command Option Reference Wlarge to small WLTS Function Outputs a warning about the substitution of variables in descending sequence of size 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 732768 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 32768 gives rise to a warning Because this opt
263. mov w HEAPSIZE gt gt 16 _ msize 2 Mg tie nate 14 cCall _init G jsr a _init Call main function ibe eee oie aaa aaa Lae 0h fb for debuger glb _main 15 exit function 1 glb _exit 16 GLD SEXTE exit End program Sext Jmp exit einsf dummy_int 17 reilit end e kkkxkxkxkxkxk x x xk x x x x xx x x x xx xx x x x xx xx x x x xx xx x x x xx xx x x x xx xx x x x x xx x x x xx xx x x xx xx x x x xx xx x x xx xx xx xx xx xx xx xx xx xx xx xx l 7 C COMPILER for M16C 60 20 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED l l l e xkxkxkxkxkxkxkxkxkxkxkxk xk xkxkxkxk xkxkxkxk xkxkxkxkxk xkxkxkxk xkxkxkxkxk xkxkxkxkxkxkxkxk xkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxxkxxkxx xx k 13 Initializes the heap area Comment out this line if no memory management function is used 14 Calls the init function which initializes standard I O Comment out this line if no I O function is used 15 Calls the main function 16 exit function 17 Dummy interrupt processing function Figure 2 9 Startup Program List 4 ncrt0 a30 4 4 1 Interrupt is not enable when calls main function Therefore permits interrupt by FSET command when uses interrupt function NC30 MANUAL 23 Chapter 2 Basic Method for Using the Compiler FS BRIS ITS weer Regge PON eT mee ON
264. mp signal h Function Defines declares necessary for processing asynchronous interrupts stdarg h Function Defines declares the functions which have a variable number of real arguments stddef h Fe ee ee ee Function Defines the macro names which are shared among standard include files Appendix E 6 Appendix E Standard Library stdio h ee eee Function Defines the FILE structure stream name and declares I O function prototypes Proto type declarations are made for the following functions Type Contents Initialize Initializes M16C 60 family input outputs clearerr Initializes clears error status specifiers Input Inputs one character from the stream Inputs one character from the stream Inputs one character from stdin Inputs one line from the stream Inputs one line from stdin Inputs the specified items of data from the stream Inputs characters with format from stdin Inputs characters with format from the stream Inputs data with format from a character string Output fputc Outputs one character to the stream pute Outputs one character to 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 Flushes the stream of an output buffer fprintf Outputs characters with format to
265. mp _iob 3 Fundamental printer output define stderr stdout KK KKK KK KK KK KKK KK KK KK KK KK KK KKK KK KK KK kK KK KK kK KKK KK KKK KK KK KK KK KK KK KK KK KK IK KK KK KK KK KK KK KK KK KK KK KK KK KK KK define _IOREAD 1 Read only flag define _IOWRT 2 Write only flag define _IOEOF End of file flag define _IOERR Ix Error tlag define _IORW 6 Read and write flag define _NFILE Stream number Text mode flag define _TEXT define _BIN Binary mode flag NO FP BP FP O A 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 Appendix E 90 Appendix 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 S int flag Stores the read only flag _lIOREAD the write only flag _IOWRT the read write flag _IORW the end of file flag _ l OEOF and the error flag _IOERR in IOREAD IOWRT IORW These flags specify the stream operating mode They are set during stream initial ization IOEOF IOERR These flags are set according to whether an EO
266. n 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 Example C source program pragma SECTION program prol Changes name of program section to prot void func void ys remainder omitted Assembly language source program H FUNCTION func section prol lt Maps to pro1 section _file ei ate _line 9 glb _func _func 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 _NEl is added after the section name Note In NC30WA V4 00 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 NC30WA V4 00 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 Appendix B 39 Extended Functions Reference Appendix B pragma STRUCT Function Syntax Description and Examples Control structure mapping 1 Inhibits packing of structures 2 Arranges structure members 1 pragma STRUCTAstructure_ta
267. n data_SE DATA org 400H data_SE_top section bss_SE DATA ALIGN bes SE _ top section data_SO DATA data SO Lop section bss_SO DATA Des _50O Cop near RAM area section data_NE DATA ALIGN data_NE_top section bss_NE DATA ALIGN bes _ NE top section data_NO DATA data_NO_top section bss_NO DATA bss_NO_top section stack DATA blkb STACKSIZE stack_top blkb ISTACKSIZE istack_top section heap DATA heap_top blkb HEAPSIZE Figure 2 27 Listing of sect30 inc in Single Chip Mode 1 3 NC30 MANUAL 43 Chapter 2 Basic Method for Using the Compiler Ese Con ROMENO section KOmuNOR Bom rom_NE ROMDATA ALIGN rom_NO ROMDATA Section s OrG data _FE_top section Dies Mn _ COPS Boe Cron daca FO tO 4 SECTION Deo BOL bom data_FE DATA 10000H bss_FE DATA ALIGN data_FO DATA posi Oy Maa lt You can remove this part because it is unnecessary In this case you need to remove the Initialize program in the far area of ncrt0 a30 section LOLS rom_FE_top section rom_FO_top rom_FE ROMDATA OF OOOOH rom_FO ROMDATA of data section section data_SsSEI_top section date SOL Top Section data_NEI_top section data_NOI_top section data_FEI_top section data_FOI_top data_SEI ROMDATA data_SOI ROMDATA data_NEI ROMDATA data_NOI ROMDATA data_FEI ROMDATA data_FOI ROMDATA
268. n from which it was called c Notes on Handling General purpose and Address Registers The general purpose registers RO R1 R2 R3 and address registers A0 A1 can have their contents modified in assembler functions without a problem 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 14 5 shows the format asm_func in the figure is the name of an assembler function unsigned int asm_func unsigned int unsigned int T Prototype declaration of assembler function pragma PARAMETER asm_func RO R1 Figure 3 16 Example Coding of Assembler Function pragma PARAMETER passes arguments to assembler functions via 16 bit general pur pose registers RO R1 R2 R3 8 bit general purpose registers ROL ROH R1L R1H and address registers AO A1 In addition the 16 bit general purpose registers are com bined to form 32 bit registers R3R1 and R2RO0 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 types 64bit integer type flong longparameters floating point tyoe double argument You also cannot declare the functions returning structure or union types as the function s
269. n to NC30 1 4 Example Program Development Figure 1 2 shows the flow for the example program development using NC30 The program is described below Items 1 to 4 correspond to the same numbers in Figure 1 2 1 The C source program AA c is compiled using nc30 then assembled using as30 to create the relocatable object file AA r30 2 The startup program ncrt0 a30 and the include file sect30 inc which contains informa tion 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 ncert0 a30 4 The two relocatable object files AA r30 and ncrt0 a30 are linked by the linkage editor In30 which is run from nc30 to create the absolute module file AA x30 Figure 1 2 Program Development Flow NC30 MANUAL 5 Chapter 1 Introduction to NC30 Figure 1 3 is an example make file containing the series of operations shown in Figure 1 2 RAs Xo O gt nerto asO AA r30 nc30 o0oAA ncrt0 r30 AA r30 HCFEOsE SOU 1 NOBCO AU aso NCrEO 250 AA r30 AA C nc30 c AA c Figure 1 3 Example make File Figure 1 4 shows the command line required for nc30 to perform the same operations as in the makefile shown in Figure 1 3 nc30 o0oAA ncrt0 a30 AA c lt RET gt Indicates the prompt lt RET gt Indicates the Return key Specify ncrt0 a30 first when linking Figure 1
270. nc inti Always be sure to define the body of an inline function before using the inline function Appendix B 1 Appendix B Extended Functions Reference Table B 2 Extended Functions 2 2 Extended feature Description Extension of 1 You can include C like comments Comments Example This is a comment pragma Extended You can use extended functions for which the hardware of M16C functions 60 series in C language macro assebler You can describe some assembler command as the function of C function language Exampe char dadd_b char val1 char val2 Example int dadd_w int val1 int val2 B 1 Near and far Modifiers For the M16C 60 20 series microcomputers the addressing modes used for referencing and locating data vary around the boundary address OFFFFH NC30 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 modifier Area of 000000H to OOFFFFH far modifier Area of 000000H to OFFFFFH 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 func tions NC30 interprets their attributes as follows Variables cccccccecceccceccececucceuecucenes near attribute const qualified constants far attribute PUNCHON
271. nd countermeasure 31 EOF in preprocess command End of file encountered in a preprocess command Correct the source file 32 33 34 35 41 43 44 45 46 52 53 54 55 unknown preprocess An unknown preprocess command has been command specified gt Only the following preprocess commands can be used in CPP30 include define undef if ifdef ifndef else endif elseif line assert pragma error new_line in string A new line code was included in a character constant or character string constant Correct the program string literal out of range Acharacter string exceeded 509 characters 509 characters Reduce the character string to 509 characters max macro replace nesting over Macro nesting exceeded the limit 20 Reduce the nesting level to a maximum of 20 include file error Error in include instruction illegal id name Error in following macro name or argument in define command MLE LINE DATE TIME _ Correct the source file token buffer over flow Token character buffer of define overflowed Reduce the number of token characters illegal undef command usage Error in undef Correct the source file undef id not found The following macro names to be undefined in undef were not defined FILE _ LINE DATE TIME Check the macro name illegal ifdef ifndef command Error in ifdef usage Correct the s
272. ndix B Extended Functions Reference 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 NC30 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 lt This is not permitted Figure B 15 Example of Variable Declaration Appendix B 9 B 2 B 2 1 Appendix B Extended Functions Reference asm Function NC30 allows you to include assembly language routines asm functions in your C source programs The asm function also has extended functions for manipulating the m and x flags and referencing variables written in C 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 conforms to the AS30 language specifications is included be tween the double quote marks pragma ADDRESS ta0_int 55H char taO_ int void func abbreviated taO_int 0x07 Permits timer AO interrupt asm FSET lt Sets interrupt enable flag Figure B 16 Example of Description of asm Function 1 2 Compiler optimization based on the positional relationship of the stateme
273. ndler must be type void in the declaration Only the function definition put after pragma ALMHANDLER are valid No processing occurs if you specify other than a function name No error occurs if you duplicate pragma ALMHANDLER declarations A compile error occurs if you use any function specified in one of the following decla rations in pragma ALMHANDLER pragma INTERRUPT oragma INTHANDLER pragma HANDLER pragma CYCHANDLER pragma TASK 0O 0O A OUO N Example include lt mr30 h gt include id nT pragma ALMHANDLER alm void alm void lt Be sure to declare as type void omitted Figure B 77 Example of pragma ALMHANDLER Declaration Appendix B 49 Appendix B Extended Functions Reference pragma CYCHANDLER Function Declares an MR30 cyclic handler Syntax pragma CYCHANDLERAcyeclic handler name Description By using the above format to declare a cyclic handler a function written in C NC30 generates the code for the cyclic handler to be used at the entry and exit points of the function 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 canNOT 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 p gt ragma CYCHANDLER are valid 4 No processing occurs if you specify
274. neeeesseeeeeseas 33 B 7 1 Index of pragma Extended Functions cccccccccccsssseeceecceaeeeeceeseeueeeeeeeseaegseeeeseeeas 33 a Using Memory Mapping Extended Functions c cccsiccccsscecccesccdierecetwerutereeeciecsieessdenertertns 33 b Using Extended Functions for Target Devices ccccccsssseeeeceeceeeeeeeesseeaeeeeeeessaaaees 34 c Using MR30 Extended Functions aaannnnnnneannnnensnnnnnnnsrrnnnnnenrnnnrrensrnrrrrnsrnnrrressenrrenenne 35 d The nlher ec go 8 einion n E PS eer 35 B 7 2 Using Memory Mapping Extended Functions ccscecccecccessseeeeececeeseeeeeseeseeeeeeeeeas 36 B 7 3 Using Extended Functions for Target Devices cccccccceceesseeeeeeceeeeeseeeeseeeaeeeeeeeeas 43 B 7 4 Using MR30 Extended Functions cccccccccsssseceeeecseseeceeeeceeeseeeeeeaeaesseeeeseeeaeeeeeesaas 49 B 7 5 The Other Extensions owiscovesissasvrentdesnvorsansnenenakinnstcnnenirentdosesesnashinouveandsnatosaacwninntooeasedneoetens 53 B 8 assembler Macro Function ccccesccccsssccceesceceeececceeeeecsaeeecseueeessueeessaesessaeeesseeeeess 58 B 8 1 Outline of Assembler Macro Function scc ctcescntescteendvaeact cob ancpedewaltouetenecivehdedhuedeabvesderebke 58 B 8 2 Description Example of Assembler Macro Function ssssssssssssssssrnrsneesrrrrrresrrrrrreernnn 58 B 8 3 Commands that Can be Written by Assembler Macro Function ccccccseeeeeeeeeeees 59 NC30 MANUAL VIII
275. ng pragma PARAMETER 1 Write a prototype declaration for the assembler function before the pragma PA RAMETER 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 13 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 R0 R1 Parameters are passed via the RO and R1 registers to the void main assembler function asm fune i jj lt Calling assembler function Figure 3 13 Example of Calling Assembler Function With Parameters smp2 c _main 04H 0002H 4 FB 0005H 2 FB 2 E Be RL Jj Parameters are passed via the RO and R1 4 FB RO registers to the assembler function _asm func lt Calls assembler function preceded by _ Figure 3 14 Compiled result of smp2 c smp2 a30 NC30 MANUAL 58 Chapter 3 Programming Technique c Limits on Parameters in pragma PARAMETER Declaration The following parameter types cannot be declared in a pragma PARAMETER declara tion structure types and union type parameters 64bit integer type flong longparameters Floating point type float and double parameters 3 3 2 Writing Assembler Functions a Method for writing the called assembler functions The following shows a procedure for writing the entry process
276. ng B and U AGG cre ctesecrntencaseseareccnseonsree tenner cewtoinaceenstieashconaseouesnosadenmes 63 Bi Noleson Handling FB FeO Stet cecatensseceentcasscisstecertosteesancenseenatiecsetaeaneneatersecnc ace wee 63 c Notes on Handling General purpose and Address ReQiSters ccseeeeeeeeeeeeeeeeees 63 d Passing Parameters to an Assembler Function c cccccssseeecceeeeeeeceeeeeesseseeeesseess 63 BO FN cect rcp teeter attract pin gt rte deeded attic O ETEA EEE peered ated EE EA 64 3 4 1 Precautions on Transporting between NC Series Compilers csseseceeeeeeeeeeeeeees 64 a Difference in default near far cece ccccceseeccceceeeeeeeeeceeeceseeeeeseeseceeeeeeeeeseaeeeeesseeeeeeees 64 Appendix A Command Option Reference Ai NOO CGOmmand FOIA ee enn en en EAA 1 A2 MESO Command Line COONS siiiriseisnriremnsniiicunnrinienin iaiiaeeeai einai 2 A 2 1 Options for Controlling Compile Driver cccoepincecciacedoncwesdeeecuceesuceecundacsceacecahesucen cusdecnseeades 2 SD E E E AE E E E E E E E E E 3 SOE O aa a wucacnvauuslduvadsnaisieibdaeudeweisuiiaauescasutuauatnanstauseds 3 AO OE aina ode aniaa wsnuen ch sasnacesaeesbermnentanyceutidesatatcimdeanbacentes ants E pec antics acto crac tate wap ba ied ee ainiea sei cetees etie s eceneneeeye 4 IE sac ccciuice usin aaa A 5 ed EAI EAA EE E EE AEP EE NARESE A EA E A P A A A A A NE EA 5 SUDFECENMEG MaCrO scasinctsccrscnsscnccscsisicanaccviannenseusceasindccactesdncssedexst
277. ning 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 Type of Return Value _Boll char int near pointer float long far pointer double long double long long Structure Type Union Type Rules ROL Register RO Register Least significant 16 bits returned by storing in RO register Most significant 16 bits returned by storing in R2 register Values are stored in 16 bits beginning with the high order bits sequentially in order of registers R3 R2 R1 and RO as they are returned 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 Immediately before the function call save the far address for the area for storing the return value to the stack Before execu tion returns from the called function that function writes the return value to the area indicated by the far address saved to the stack Appendix D 6 Appendix D C Language Specification Rules D 3 2 Rules on Argument Transfer NC30 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 and D 6 to pass arguments Function is prototype declared
278. nnot be specified 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 however fconst_ not ROM f CNR Function 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 op tion you can locate the array in the RAM area You do not normally need to use this option however Appendix A 31 Appendix A Command Option Reference fnot_address volatile fNAV Function Does not handle the global variables specified by pragma ADDRESS or pragma EQU 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 You do not normally need to use this option however fsmall_ array fSA Func
279. nputs the specified items of data from the stream Inputs characters with format from stdin Inputs characters with format from the stream Inputs data with format from a character string Output Outputs one character to the stream Outputs one character to the stream Outputs one character to stdout Outputs one line to the stream Outputs one line to stdout Outputs the specified items of data to the stream Outputs an error message to stdout Outputs characters with format to stdout Flushes the stream of an output buffer Outputs characters with format to the stream Writes text with format to a character string Output to a stream with format Output to stdout with format Output to a buffer with format XI X XI X XI X XI XI XI XI X XI X XI XI XI X XI X XI X XI XI XI XI XI X Return Sends one character back to the input stream Determi Checks input output errors nation feof Checks EOF End of File d Memory Management Functions The following lists memory management functions Table E 5 Memory Management Functions Function Reentrani alloc x ree malloc realloc Changes the size of an allocated memory area XI X X Appendix E 13 Appendix E Standard Library e Memory Handling Functions The following lists memory handling functions Table E 6 Memory Handling Functions Type Contents Reentrant Initialize Initializes a memory area by clearing it to zero O Copy Copies characters from a mem
280. ns 20 RTS StD REINS assein AE 21 S aS A E ANR 21 Oloop_unroll loop count OLU sicisicsnsdesidacsnnsccvasvansvsspasazacennseasestarneeeeaseeans 22 Ostack frame align OSFA sccssiccscscassssescnceancsancetassanveiceesetsusxavuseasseenouesassaensievuseiaes 22 Ono_logical_or_combine ONLOC ssassnsnnsnnnnnnnsnnnnnnnnnrnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nenne 23 SOMO ASMODI ONA Jessnran aE 23 Ostale To INNING OST eiaa ai 24 NC30 MANUAL VI A 2 6 Generated Code Modification Options ccccccccsccsssssseeeceeeeeeeeseseesseeeeeeeeeeeeeseseaseees 25 fnot_reserve_asm fNRA ssssssnsnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn mnnn nnmnnn 27 E E E O E E E E A E E E 27 fnot_reserve_far_and_near fNRFAN ssssssssssssnnnunenunnnnnnunnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnna 28 fnot_reserve_inline fNRI assssnnsnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnne 28 PHOMICHG tO mt AETI ssaa 29 fchar_enumerator fCE siicascccsscacasceinacacuscnsenjasdannsantentacseiaeisascsenasasdsareacasaseaceseanaacanie 29 ffar_RAM PEPIN scccacecasdesanstvasnapnacsiexetsedenccasasanaanunsannasneeenadeanenassestasinantensaanantiaaneiee 30 NO CO VCM ANE Jaai iE Eaa 30 fnear_ROM NROM ccsssiscnsssnntnsunennustaedsemenssanmenanensunane insesassnuesansesnaneccansieiduaninienesianss 31 iconst Not ROM PONR sicvedessssssssiesestesssavecnsessssesesnscuesaieewbasdoneusdenzecuusedenetasagneo
281. ns an error Check the expressions on the left and right sides of the operator The lt operation contains an error Check the expressions on the left and right sides of the operator The lt operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The operation contains an error Check the expressions on the left and right sides of the operator The gt operation contains an error Check the expressions on the left and right sides of the operator The gt gt operation contains an error Check the expressions on the left and right sides of the operator Appendix F 14 Appendix F Error Messages Table F 14 ccom30 Error Messages 7 14 Error message invalid gt gt operands invalid operands invalid operands invalid operands invalid operands invalid operands invalid operands invalid operands invalid gt used invalid s condition Invalid pragma OS Extended function interrupt number Invalid pragma INTCALL interrupt number Invalid pragma SPECIAL page number invalid CAST operand Description and countermeasure The gt gt operation contains an error Check the expressions on the left and right sides of the operator The left side expression of is not
282. nt vali unsigned int val2 When calculated in 16 bits DADC Function Returns the result of decimal addition with carry on val1 plus val2 Syntax include lt asmmacro h gt unsigned char dadc_b unsigned char val1 unsigned char val2 When calculated in 8 bits unsigned int dadc_w unsigned int vali unsigned int val2 When calculated in 16bits DSUB Function Returns the result of decimal subtraction on vall minus val2 Syntax include lt asmmacro h gt unsigned char dsub_b unsigned char val1 unsigned char val2 When calculated in 8 bits unsigned int dsub_w unsigned int vali unsigned int val2 When calculated in 16 bits Appendix B 59 Appendix B Extended Functions Reference DSBB Function Returns the result of decimal subtraction with borrow on vali minus val2 Syntax include lt asmmacro h gt unsigned char dsbb_b unsigned char val1 unsigned char val2 When calculated in 8 bits unsigned int dsbb_w unsigned int vali unsigned int val2 When calculated in 16 bits RMPA Function Initial value init Number of times count The result is returned after performing a sum of products operation assuming p1 and P2 as the start addresses where multipli ers are stored Syntax include lt asmmacro h gt signed long rmpa_b signed long init signed int count signed char p1 signed char p2 When calculated in 8 bits signed long rmpa_w signed long init signed int
283. nt x i _Argument y j _ FB of Function main i a Return address oY Argument z k Argument z k Variable i Variable i Variable Variable j Variable j Variable j Variable k Variable k Variable k Old FB lt FB Old FB Olg EB___ lt F8 lt SP Stack useage state of 8 Stack useage state of 9 Stack useage state of 10 11 When EXITD instruction completed Figure D 19 Exit Processing of Function func Appendix D 13 Appendix 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 aC language source file like the one shown in Figure D 20 if the areas where variables of storage class auto are valid do not overlap each other the system allocates only one area which is then shared between multiple variables func int i j k for i 0 i lt 0 i process scope of abbreviated for j OxFF j lt 0 j process scope of abbreviated for k 0 k lt 0 k PIQeses scope of k Figure D 20 Example of C Program In 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 HHH FUNCTION func HHH FRAME AUTO size 2 offset 2 HHH
284. nts can be partially suppressed using the code shown in Figure B 17 asm Figure B 17 Example of Coding asm Function 2 2 The asm function used in NC30 not only allows you to include assembly language code but also has the following extended functions Specifying the FB offset of storage class auto variables in the C program using the names of the variables in C 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 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 1 For the purpose of expression in this user s manual the subroutines written in the assembly language are referred to as assembler functions Those written with asm in a C language program are referred to as asm functions or inline assemble description Appendix B 10 Appendix 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 Fram
285. o h gt FILE _iob 4 void init void void init void stdin gt _cnt stdout gt _cnt stdaux gt _cnt stdprn gt _cnt 0 stdin gt _flag _IOREAD stdout gt _flag _IOWRT stdaux gt _flag _IORW stdprn 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 Spur stdout gt func out _Sput stdaux gt _func_out _Sput stdprn gt _func_out _pput ifdef UARTO speed _96 _B8 _PN _S2 else speed 96 BS _PN 252 endif init_prn Figure E 5 Source file of init function init c Appendix E 92 Appendix E Standard Library In systems using the two M16C 60 series UARTs modify the init function as shown be low In the previous subsection we set the UARTO functions in the device c source file temporarily as sget0O sput0 and speedo 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 cannot be us
286. ocessed as double types Appendix E 56 Appendix E Standard Library putc Input Output Functions Function Outputs one character to the stream Format include lt stdio h gt int putc c stream Method macro Argument int cC ee 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 Input Output Functions Function Outputs one character to stdout Format include lt stdio h gt int putchar c Method macro Argument int C ee Character to be output ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to stdout Appendix E 57 Appendix 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 qsort Integer Arithmetic Functions Function Sorts elements in an array Format
287. od 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 wcstombs Converts a wide character string into a multibyte character string wctomb Converts a wide character into a multibyte character Appendix E 8 Appendix E Standard Library string h Function Declares the prototypes of string handling functions and memory handling functions Tye Content Copy Copies a character string Copies a character string n characters Concatenate Concatenates character strings Concatenates character strings n characters Compare Compares character strings Compares character strings using locale information stricmp Compares character strings All alohabets are handled as upper case letters 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 strcspn 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 Searches the specified character from the end of a character string strspn Calculates the length number of specified characters
288. odification of library functions and similar other optimization processing In the entry version this option cannot be specified Supplement This option suppresses the following optimization Optimization for replacing the standard library functions such as strcpy 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 In the entry version this option cannot be specified 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 collec tively 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 func18 int int int func2 int void main void int i 1 int J 23 int k k func1 i j n func2 k Notes Use ofthe option
289. of a file is omitted it is processed assuming an extension lib 2 If you specify a file extension be sure to specify lib 3 NC30 links by default a library nc3Olib lib in the directory that is specified in environment variable LIB30 If you specify multiple libraries nc3Olib lib is given the lowest priority as it is referenced Appendix A 39 Appendix A Command Option Reference A 2 8 Warning Options Table A 8 shows the command line options for outputting warning messages for contra ventions of nc30 language specifications Table A 8 Warning Options Option Wnon_ prototype Wunknown_pragma Wno_ stop Wstdout Werror_file lt file name gt Wstop_at_warning Wnesting_comment Wccom_max_warnings Warning Count Wall Wmake_tagfile Wuninitialize_variable Wlarge_to_small Wno_warning_stdlib Wno_used_argument Short form Function WNP Outputs warning messages for functions without proto type declarations WUP Outputs warning messages for non supported pragma Prevents the compiler stopping when an error occurs None Outputs error messages to the host machine s standard output stdout Outputs error messages to the specified file Stops the compiling process when a warning occurs Outputs a warning for a comment including WCMW This option allows you to specify an upper limit for the m number of warnings output by ccom30 None Displays message for all detectable warnin
290. oint value overflow floating type s bitfield for struct union statement Description and countermeasure 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 The value of case is used more than one time Make sure that the value of case that you used once is not used again within one switch state ment The variable is defined twice with different stor age classes each time gt Use the same storage class to declare a variable twice The argument list contains the same variable name Change the variable name The function body for the function declared with oragma PARAMETER is defined in C Do not define in C the body for such function 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 The default value is used more than one time Use only one default within one switch 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 do while statement The void type is used in the expression of the do while statement Use the scalar type for an expression in the do while statement Auto variable is described more than twice Write the type specifier correctly long is described more than t
291. om the structure or union type nor can it be cast to the structure or union type gt Write the expression correctly Appendix F 15 Appendix F Error Messages Table F 15 ccom30 Error Messages 8 14 Error message invalid asm s argument invalid bitfield declare invalid break statements invalid case statements invalid case value invalid cast operator invalid continue statements invalid default statements invalid enumerator initialized invalid function argument invalid function s argument declara tion invalid function declare invalid initializer invalid initializer of variable name Description and countermeasure The variables that can be used in asm state ments are only the auto variable and argument Use the auto variable or argument for the state ment The bit field declaration contains an error gt Write the declaration correctly The break statement is put where it cannot be used Make sure that it is written in switch while do while and for The switch statement contains an error Write the switch statement correctly The case value contains an error Write an integral type or enumerated type con stant Use of the cast operator is illegal gt Write the expression correctly The continue statement is put where it cannot be used Use it in a while do while and for block The switch statement contains an error Write the switch
292. on In the entry version this option cannot be specified 1 The inspector information refers to one that is generated by NC30 when the compile option finfo is specified NC30 MANUAL 2 1 3 1 3 1 1 3 2 Chapter 1 Introduction to NC308 Notes Renesas Technology 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 Technology Corp Renesas Solutions Corp or an authorized Renesas Semicon ductor product distributor when considering the use of a product contained herein for any specific purposes such as apparatus orsystems for transportation vehicular medical aerospace nuclear or undersea repeater use 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 struc tures which have different member names but are mapped
293. on is declared Appendix G 15 MEMO NC30 V 5 20 User s Manual Rev 1 00 Sep 1 2003 REJ10J0225 01002Z COPYRIGHT 2003 RENESAS TECHNOLOGY CORPORATION AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED tENESAS Renesas Technology Corp 2 6 2 Ote machi Chiyoda ku Tokyo 100 0004 Japan
294. ons 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 Appendix E 66 Appendix 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 character strings s1 and s2 in the sequence s1 s2 The concatenated string ends with NULL When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization strchr String Handling Functions Function S
295. option is always enabled i e assumed to be speci fied Therefore it cannot be enabled or disabled by specification When using the debugger s stack trace function always specify this option Without this option you cannot obtain the correct result 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 gno_reg Function Supplement Suppresses debugging information about register variables Suppresses the output of debugging information for register variables In the entry version this option cannot be specified 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 soeed up downloading to the debugger Appendix A 13 Appendix A Command Option Reference gold Outputs debugging information in previous format Function This option outputs debugging information in Rev E format When this option specifies the gno_reg option and the fauto_ 128 option are automatically specified In the entry version this option cannot be specified Supplement With the increase in the maximum number of auto variables starting with NC30 V 2 00 the format of d
296. or 17 lword dummy_int uartO receive for user vector 18 lword dummy_int uartl trance for user vector 19 lword dummy_int uartl receive for user vector 20 lword dummy_int TIMER AO for user vector 21 lword dummy_int TIMER Al for user vector 22 lworqd dummy_int TIMER A2 for user vector 23 lword dummy_int TIMER A3 for user vector 24 lword dummy_int TIMER A4 for user vector 25 lword dummy_int TIMER BO for user vector 26 lword dummy_int TIMER B1 for user vector 27 lword dummy_int TIMER B2 for user vector 28 lword dummy_int INTO for user vector 29 lword dummy_int INT1 for user vector 30 lword dummy_int INT2 for user vector 31 Figure 2 12 Startup Program List 7 sect30 inc 3 8 Chapter 2 Basic Method for Using the Compiler endif lword dummy_int vector 32 for user or MR30 lword dummy_int vector 33 for weer or MR30 lword dummy_int vector 34 for user or MR30 lword dummy_int vector 35 for user or MR30 lword dummy_int vector 36 ror user or MR30 lword dummy_int vector 37 for user or MR30 lword dummy_int vector 38 for user or MR30 lword dummy_int vector 39 for user or MR30 lword dummy_int vector 40 for user or MR30 lword dummy_int vector 41 for user or MR30 lword dummy_int vector 42 for user or MR30 lword dummy_int vector 43 for user or MR30 lword dummy_int vector 44 for user or MR30 lword dummy_int vector 45 for use
297. or user vector 14 lword dummy_int uart2 transmit for user vector 15 lword dummy_int uart2 receive for user vector 16 lword dummy_int uartO transmit for user vector 17 lword dummy_int uart0 receive for user vector 18 lword dummy_int uartl transmit for user vector 19 Lword dummy_int uartl receive for user vector 20 lword dummy_int timer AO for user vector 21 lword dummy_int timer Al for user vector 22 lword dummy_int timer A2 for user vector 23 lworqd dummy_int timer A3 for user vector 24 lworqd dummy_int timer A4 for user vector 25 lword dummy_int timer BO for user vector 26 lword dummy_int timer Bl for user vector 27 sword dummy_int timer B2 for user vector 28 Lword dummy_int intO for user vector 29 lword dummy_int intl for user vector 30 lword dummy_int int2 for user vector 31 else lword dummy_int vector 0 BRK lword dummy_int vector 1 lword dummy_int vector 2 lword dummy_int vector 3 lword dummy_int vector 4 lword dummy_int vector 5 lword dummy_int vector 6 lword dummy_int vector 7 lword dummy_int vector 8 lword dummy_int vector 9 lword dummy_int vector 10 lworqd dummy_int DMAO for user vector 11 lword dummy_int DMA1 2 for user vector 12 lword dummy_int input key for user vector 13 lworqd dummy_int AD Convert for user vector 14 lword dummy_int vector 15 lword dummy_int vector 16 lword dummy_int uartO trance for user vect
298. ory area to another O memcpy Copies characters n bytes from a memory area O to another Set a memory area by filling with characters Compare Compares memory areas n bytes memicmp Compares memory areas with alphabets handled as upper case letters Move memmove Moves the area of a character string Search memchr Searches a character from a memory area QO O O O QO 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 O setjmp Sets a stack environment for a global jump O Appendix E 14 Appendix E Standard Library g Mathematical Functions The following lists mathematical functions Table E 8 Mathematical Functions sqrt Calculates the square root of a numeric value tan Calculates tangent tanh Calculates hyperbolic tangent Function Contents Reentrant acos O asin O atan O atan2 O ceil O cos O cosh O exp O fabs Calculates the absolute value of a double precision float O floor O fmod O frexp Divides floating point number into mantissa and exponent O abs O dexp O og O jogi0 O modf Calculates the division of a real number into the mantissa O pow O sin O sinh O Calculates the square root ofa numeric vave O Calculates tangent SSS S T o O h Integer Arithmetic Functions The following lists integer arithmet
299. ot executed Figure 3 4 Program Not Executed 4 Operation between constants Operation between constants is performed when compiling VOLO Lunc lint i int i 1 2 lt Operation on this part is performed when compiling retu rn i Figure 3 5 Program Not Executed 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 ay volatile b c p j whether a 445 whether a Figure 3 6 Example of Ambiguously Interpreted volatile Qualifier Statements For successive bit manipulations if optimized the compiler generates codes to perform bit manipulations collectively even when the volatile qualifier is specified Bit manipula tions are performed simultaneously by overriding the order of references To inhibit collective bit manipulations use the Ono_ bit shortcut ONB option NC30 MANUAL 51 Chapter 3 Programming Technique 3 1 4 Precautions on Using register Variable
300. ould not be fully analyzed with only the Inspector information StkViewer recalculates the stack size and the relationship of function calls and displays the result To use StkViewer amp stk specify the compile driver startup option finfo when compiling so that the Inspector information will be added to the absolute module file x30 In the entry version this option cannot be specified utl3O utl30 is the execution file for the SBDATA declaration utility and SPECIAL page Func tion declaration Utility By processing the absolute module file x30 utl30 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 lo cated in the SPECIAL page area beginning with the most frequently used one To use utl30 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated MapViewer MapViewer is the execution file for the map viewer By processing the absolute module file x30 MapViewer graphically shows a post link memory mapping To use MapViewer specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated Note that MapViewer is included for only the PC version To verify the map information while using the UNIX version generate a map file with the linker and check that file for map informati
301. ource file elseif else sequence error elseif or else were used without if ifdef ifndef Use elseif or else only after if ifdef ifndef endif not exist No endif to match if ifdef ifndef a Add endif to the source file endif sequence error endif was used without if ifdef ifndef pine gt Use endif only after if ifdef ifndef Appendix F 6 Appendix F Error Messages Table F 6 cpp30 Error Messages 4 4 No Error message Description and countermeasure 61 illegal line command usage Error in line Correct the source file Appendix F 7 Appendix F Error Messages F 4 cpp30 Warning Messages Table F 7 shows the warning messages output by cpp30 and their countermeasures Table F 7 cpp30 Warning Messages No Warning Messages Description and countermeasure 81 82 83 84 85 87 reserved id used You attempted to define or undefine one of the following macro names reserved by cpp30 FILE LINE DATE TIME _ gt Use a different macro name assertion warning The result of an assert operation expression was 0 Check the operation expression garbage argument Characters other than a comment exist after a preprocess command Specify characters as a comment string after the preprocess command escape sequence out of An escape sequence in a character constant or range for character character string constant exceeded 255
302. ov W es PECUPM i Jet ki add w 4 add w gt k exitd 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 3 Appendix D 9 Appendix D C Language Specification Rules In the compile result 2 of the sample program sample c listed in Figure 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_proto described in the C language source file by prefixing it with _ underbar hence _func_no_ proto ptt FUNCTION main FRAME AUTO sum size De offset 2 tt ARG Size 0Q Auto Size 2 Context Size 5 _line 16 chit ft COORG s eGlD _main enter line C_SRC 0003H 0002H R2 0001H R1 ST no proto 02H SP RO 2 FB 12 0003H 0002H 0001H _func_no_proto 06H SP R0 2 FB pare eo ORC S exitd END Figure D 13 Compile Result of Sample Program sample c 3 3 In Figure D 13 part 11 calls func_proto and part 12 calls func_no_proto Appendix D 10 Appendix D C Language Specification Rules D 3 4 Interface between Functions Figures 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 asse
303. ppendix E Standard Library 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 s Search key const void far s Start address of array size_t nelem Element number SIZ _t SIZE Lee Element size MECO amnia 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 ascend ing order bzero Memory Handling Functions Function Initializes a memory area by clearing it to zero Format include lt string h gt void bzero top size Method function Argument 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 Appendix E 22 Appendix 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 Argument _ size_tn Number of e
304. ppendix B 22 Appendix B Extended Functions Reference B 3 3 Japanese Characters in Character Strings Figure B 40 shows the format for including Japanese characters in character strings BEM ZTI Figure B 40 Format of Kanji code Description in Character Strings If you write Japanese using the format 24M FJI 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 byte characters To process the Japanese as 2 byte 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 41 shows an example of a Japanese character string include lt stdlib h gt void func wehar tJC 4 L XEF 1 remainder omitted Figure B 41 Example of Japanese Character Strings Description Figure B 42 is a memory map of the character string initialized in 1 in Figure B 41 higher Figure B 42 Memory Location of wchar_t Type Character Strings Appendix B 23 Appendix B Extended Functions Reference B 3 4 Using Japanese Characters as Character Constants Figure B 43 shows the format for using Japanese characters as character constants Figure B 43 Format of Kanji code Description in Character Strings As with character strings precede the character constant with L and process
305. previously defined section 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 memory a Sections mapped to RAM data_SE section bss SE section data_SO section bss SO section data_NE section bss NE section data NO section bss NO section data FE section bss FE section data FO section bss FO section stack section heap section b Sections mapped to ROM rom NE section data SEI section rom_NO section data_SOl section rom FE section data NEI section rom_FO section data_NOI section data FEI section program section data_FOIl section interrupt section switch_table section fvector section NC30 MANUAL 41 Chapter 2 Basic Method for Using the Compiler Note also that some sections can only be mapped to specific memory areas in the Micro Processor memory space a Sections mapped only to OH OFFFFH near area data SE section bss SE section data_NE section bss _ NE section rom NE section stack section data_SO section bss _ SO section data_NO section bss NO section rom_NO section b Sections mapped only to OFOOOOH OFFFFFH program_S fvector c Sections mapped to any area for the M16C 60 series data FE section rom FE section data SEI section
306. processing asynchronous interrupts Defines declares the functions which have a variable number of real arguments Defines the macro names which are shared among standard include files Defines the FILE structure Defines a stream name Declares the prototype of input output functions Declares the prototypes of memory management and terminate functions Declares the prototypes of character string and memory handling functions Declares the functions necessary to indicate the current calendar time and de fines the type Standard Header Files Reference Following are detailed descriptions of the standard header files supplied with NC30 The header files are presented in alphabetical order The NC30 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 Appendix E 1 Appendix E Standard Library assert h A Function Defines assert function ctype h EE 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 iscntr 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 case lett
307. put an inspector information g option to output debugging information The following utl30 options are also specified o option to output of information SBDATA declaration or SPECIAL page Function declaration Appendix G 2 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 Output the absolute module file nc30 ncert0 a30 finfo sample lt RET gt M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED ncrt0 x30 sample c Output SBDATA declaration sucLL30 sb30 ncrt0 x30 0o sample lt RET gt M16C 60 UTILITY UTL30 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Output SPECIAL page Function declaration Sutl30 sp30 ncrt0 x30 0o sample lt RET gt M16C 60 UTILITY UTL30 for M16C 80 V X XX XxX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED lt RET gt Means entering the return key Figure G 3 Example utl30 Command Line G 2 2 Selecting Output Informations To select outputs between SBDATA declaration and SPECIAL page function declara tion in utl30 specify the options described below If neither option is specified an error is assumed for utl30 1 Output
308. r if access permission is OK check that the direc tory of the processing system is correctly set in the environment variable Can not open the command file specified by Specify the correct input file 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 This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp Appendix F 3 Appendix F Error Messages F 3 cpp30 Error Messages Tables F 3 to F 6 list the error messages output by the cpp30 preprocessor and their countermeasures Table F 3 cpp30 Error Messages 1 4 NO Error message Description and countermeasure 1 illegal command option Input filename specified twice gt Specify the input filename once only The same name was specified for both input and output files gt 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 an include file after the l option The string following
309. r is defined twice or more in typedef Write identifier correctly The function for register argument is used as a function for stack argument before gt Write a prototype declaration before using the function Appendix F 29 Appendix F Error Messages Table F 28 ccom30 Warning Messages 8 10 Warning message RESTRECT qualifier can set only pointer type section name interrupt no more used sorry get stack s address but DT not O NC77 NC79 only size of incomplete type size of incomplete array type size of void standard libraly ifunction name i need tinclude file namei static valuable in inline function string size bigger than array size string terminator not added struct or union member s ad dress can t has no near far informa tion task function called task function can t return value Description and countermeasure The RESTRICT qualifier is declared outside a pointer Declare it in only a pointer The section name specified by pragma SEC TION uses interrupt A section name interrupt cannot be used Change it to another This error occurs when the bank option is speci fied When the address of an auto variable is assigned to a pointer and an object referenced using that pointer DT points to outside bank 0 preventing bank 0 from being referenced gt Declare the variable as a far type An undefined structure or union is used in t
310. r or MR30 lword dummy_int vector 46 for user or MR30 lword dummy_int vector 47 for user or MR30 lword dummy_int vector 48 lword dummy_int vector 49 lword dummy_int vector 50 lword dummy_int vector 51 lword dummy_int vector 52 lword dummy_int 7 VECO 53 lword dummy_int vector 54 lword dummy_int vector 55 lworqd dummy_int vector 56 lword dummy_int vector 57 lword dummy_int vector 58 lword dummy_int vector 59 lword dummy_int vector 60 lword dummy_int vector 61 lword dummy_int vector 62 lword dummy_int vector 63 macro is defined in ncrt0 a30 Format SPECIAL number Figure 2 13 Startup Program List 8 sect30 inc 4 8 NC30 MANUAL 27 Chapter 2 Basic Method for Using the Compiler SPECIAL 225 E SPECIAL 224 SPECIAL 223 SPECIAL 222 SPECIAL 221 SPECIAL 220 SPECIAL 219 SPECIAL 218 SPECIAL 217 SPECIAL 216 SPECIAL 215 j SPECIAL 214 SPECIAL 213 SPECIAL 212 SPECIAL 211 i SPECIAL 210 SPECIAL 209 SPECIAL 208 SPECIAL 207 7 SPECIAL 206 A SPECIAL 205 A SPECIAL 204 SPECIAL 203 SPECIAL 202 SPECIAL 201 7 SPECIAL 200 SPECIAL 199 SPECIAL 198 SPECIAL 19 7 7 SPECIAL 196 7 SPECIAL 195 i SPECIAL 194 R SPECIAL 193 SPECIAL 192 SPECIAL 191 SPECIAL 190 SPECIAL 189 SPECIAL 188 SPECIAL 187 A SPECIAL 186 SPECIAL 185 SPECIAL 184 SPECIAL 183 7 SPECIAL 182 SPECIAL 181 E SPECIAL 180 SPECIAL 1
311. racter strings All alphabets are n handled as upper case letters Compares character strings n characters strnicmp Compares character strings n characters All al phabets are handled as upper case letters Search _ strchr Searches the specified character beginning with the O Pe lescthesteatersttg strcspn Calculates the length number of unspecified charac O a ters that are not found in the other character string strpbrk Searches the specified character in a character string O from the other character string strrchr Searches the specified character from the end of a O character string strspn Calculates the length number of specified characters O that are found in the other character string a oe the specified character from a character string OIO O O O O OJ QO strtok Divides some character string from a character string xX into tokens Convert strerror Converts an error number into a character string Length strlen Calculates the number of characters in a character O string x strxfrm Converts a character string using locale information O 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 v
312. ram as well Although the initial values are reloaded before calling the main function consideration is required if the stack size used by the main function etc is insufficient NC30 MANUAL 35 Chapter 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 23 omitted mov b 00h 04h set processer mode omitted Figure 2 23 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 NC30 MANUAL 36 Chapter 2 Basic Method for Using the Compiler 2 2 3 Customizing for NC30 Memory Mapping a Structure of Sections In the case of a native environment compiler the executable files generated by the com piler are mapped to memory by the operating system such as UNIX However with cross environment compilers such as NC30 the user must determine the memory mapping With NC30 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 ac cording to their function The names of sections consist of a base name and attribute as shown below Table 2 12 Section Names Se
313. rams 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 func tion 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 11 is an example of calling assembler function asm_func extern void near asm tune void Assembler function prototype declaration void main omitted asm_func Calls assembler function Figure 3 11 Example of Calling Assembler Function Without Parameters smp1 c omitted ones lt Calls assembler function preceded by _ Figure 3 12 Compiled result of smp1 c smp1 a30 NC30 MANUAL 57 Chapter 3 Programming Technique b When assigning arguments to assembler functions When passing arguments to assembler functions use the extended function pragma PARAMETER This pragma PARAMETER passes arguments to assembler functions via 32 bit general purpose registers R2ZRO R3R1 A1A0 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 usi
314. re B 9 int far ptr int far ptr2 i ta e near area near area far area filarea ptr2 pep aa 2bytes Figure B 9 Memory Location of Pointer type Variable Appendix B 5 Appendix B Extended Functions Reference 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 far Control by nc30 Command Line Options NC30 handles functions as belonging to the far attribute and variables data as belong ing to the near attribute if you do not specify the near and far attributes NC30 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 1 nc30 Command Line Options Command Line Options Function fnear_ROM fNROM Assumes near as the default attribute of ROM data ffar_ RAM fFRAM Assumes far as the default attribute of RAM data 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 main 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 paramet
315. re 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 expression expression statement opt opt indicates optional items Figure C 11 Format of Iteration Statement Appendix C 14 Appendix C Overview of C Language Specifications f Jump statement Use the format of jump statement shown in Figure C 12 goto identifier continue break return expression p 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 Appendix C 15 Appendix C Overview of C Language Specifications C 3 Preprocess Commands Preprocess commands start with the pound sign and are processed by the cpp30 preprocessor This chapter provides the specifications of the preprocess commands C 3 1 List of Preprocess Commands Available Table C 13 lists the preprocess commands available in NC30 Table C 13 List of Preprocess Commands Command Function define Defines macros undef Undefines macros include Takes in the specified file error Outputs messages to the standard output device and terminates pro cessing line Specifies file s line numbers
316. reference contains an error Write correctly The same identifier is defined more than once in typedef Write the identifier correctly The type of return value of the function is incor rect Write it correctly Specifiers signed unsigned are described twice or more Write the type specifier correctly The storage class is erroneously specified Write it correctly Structure or union members are referenced for the enumerated type of data Write it correctly Appendix F 17 Appendix F Error Messages Table F 17 ccom30 Error Messages 10 14 Error message invalid truth expression invalid type specifier invalid type s bitfield invalid types specifier long long long invalid unary operands invalid unary operands invalid unary operands invalid unary operands invalid void type invalid void type int assumed invalid size of bitfield invalid switch statement label label redefine long long type s bitfield mismatch prototyped parameter type No pragma ENDASM No declarator Not enough memory Description and countermeasure The void struct or union type is used in the first expression of a condition expression gt Use scalar type to write this expression The same type specifier is described twice or more as in int int 1 or an incompatible type specifier is described as in float int i Write the type specifier correctly
317. rgument Integer Arithmetic Functions Divides a long type integer and calculates the remainder include lt stdlib h gt Idiv _t Idiv number denom function long number Dividend long denom Divisor ReturnValue Returns the quotient derived by dividing number by denom and the remainder Description of the division Returns the quotient derived by dividing number by denom and the remainder of the division in the structure Idiv_t Idiv_t is defined in stdlib h This structure consists of members long quot and long rem Appendix E 43 Appendix E Standard Library localeconv Localization Functions Function Initializes struct Iconv Format include lt locale h gt struct Iconv _ far localeconv void struct Iconv localeconv void NC308 only Method function Argument No argument used ReturnValue Returns a pointer to the initialized struct Iconv 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 Appendix E 44 log10 Appendix E Standard Library Mathematical Functions Function Format Method Argument ReturnValue Calculates common logarithm include lt math
318. ribes how to start the compile driver nc30 and the command line op tions starting Up the Compiler nc30 Command Format The nc30 compile driver starts the compiler commands cpp30 and ccom30 the as semble command as30 and the link command n30 to create a absolute module file The following information input parameters is needed in order to start nc30 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 a30 and sample r30 are linked The absolute module file sample x30 is also created The following command line options are used Specifies machine language data file sample x30 cee eeeeee eens O Specifies output of list file extension Ist at assembling as30 Specifies output of map file extension map at linking In30 ms NC30 MANUAL 12 Chapter 2 Basic Method for Using the Compiler nc3s0A command line option A assembly language source file name A relocatable object file name A lt C source file name gt Prompt Mandatory item Optional item Space Figure 2 1 nc30 Command Line Form
319. rings cccccccscseseseeceeeeeeeeeeeeeeesseeeeeeeeeessaaaaeeeeees 23 B 3 4 Using Japanese Characters as Character Constants ccccccccceessseeeeeeeeeeeeeeeeeeenees 24 B 4 Default Argument Declaration Of FUNCTION ccccccseeeeceeeeeeeeeeeeeeeeeeseueeesesseesseeeess 25 B 4 1 Overview of Default Argument Declaration of FUNCTION ccccccessseeeeeeeeeeeeeeeeeeeeens 25 B 4 2 Format of Default Argument Declaration Of Function ccceccseeeeeeeeeeeeeeeeeeeeeeeaeeeees 25 B 4 3 Restrictions on Default Argument Declaration of Function ssssssssssssesrrrreeessrrrrreenenn 27 Bo inne Funcion DeciaratlOi seii eresien a r r Erai enia e 28 B 5 1 Overview of inline Storage Class ccccccccccccccceseeeeseeeececceeeeeseeeeeeeeeeeeeeeesesssaeaaseesesesees 28 B 5 2 Declaration Format of inline Storage Class cccccceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesaaaeeeeeees 28 B 5 3 Restrictions on inline Storage Class c cccccccccecessseeesseeeceeeceeeeeeeueeeseeeeeeeeeseesseaaaaaeeeess 30 B 6 Extension of ComMments ccecteansdscatraccievuesanociwteieencscansiuaiaseinaiacacatatioreeoadieerimadioneens 32 B 6 1 Overview of COMMEnts cocci Saceeesniordexisecussncesenemectcsn ceded nosendencdxeidieeodtoehcseducawstcetesensae 32 BO Commen 7 cal 18 gt eaa E ee ee 32 BO MOI and T piepen e E EA RERNE 32 B 7 pragma Extended Functions ccccsssscccccseecececeseeeeceeeseeeeceeuseeeseeseeessu
320. rmally there is no word alignment with structures The members of structures are mapped contiguously To use word alignment use the pragma STRUCT extended func tion 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 unpack struct TAG char cC s int i padding address higher Figure D 5 Example of Placement of Structure 2 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 union TAG char c int 4 bytes size of lo long lo address higher Figure D 6 Example of Placement of Union Appendix D 4 Appendix D C Language Specification Rules D 1 8 Bitfleld Types Bitfield types are mapped from the least significant bit Figure D 7 is an example of mapping Example bit7 bit0 char b1 char b2 char b3 char b4 char b5 char b6 char b7 bs SN h ee i ee ee ee Figure D 7 Example of Placement of Bitfield 1 2 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 char b0 1 char b1 1 char b2 1 char b3 1 char b4 1 int b56 2 char b7 1 hs address higher Figure D 8 Example of Placemen
321. rnValue Returns a pointer to the character string at the destination of copy Description Copies n characters from character string s2 to area si If character string s2 contains more characters than specified in n they are not copied and 0 is not appended Conversely if s2 contains fewer characters than specified in n O s are appended to the end of the copied character string to make up the number specified in n When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 72 Appendix E Standard Library strnicmp String Handling Functions Function Compares character strings n characters All alphabets are handled as upper case 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 TM Sissies 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 However all letters are treated as uppercase letters When you specify options
322. rns 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 Appendix E 18 Appendix E Standard Library 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 7 2 to n 2 radian atan2 Mathematical Functions 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 x radian Appendix E 19 atof Appendix E Standard Library Function Format Method Variable ReturnValue atoi Character String Value Convert Functions Converts a character string into a double type floating point number include lt stdlib h gt double atof s function const char far s Pointer to the converted character string Returns the value derived by converting a
323. rt 52bits Figure D 2 Double precision floating point data format Appendix D 2 Appendix 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 nc30 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 Range near pointers 16 0 OxFFFF far pointers 32 0 OxFFFFFFFF Note that only the least significant 24 bits of the 32 bits of far pointers are valid D 1 5 Array 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 Figure D 3 Example of Placement of Array 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 char int S addres S higher Figure D 4 Example of Placement of Structure 1 2 Appendix D 3 Appendix D C Language Specification Rules No
324. s unsigned long sha_l signed char count unsigned long val When calculated in 24 bits SHL e Function The value of val is returned after logically shifting it as many times as indicated by count Syntax include lt asmmacro h gt unsigned char shl_b signed char count unsigned char val When calculated in 8 bits unsigned int shl_w signed char count unsigned int val When calculated in 16 bits unsigned long shl_I signed char count unsigned long val When calculated in 24 bits ABS a Function absolute Syntax include lt asmmacro h gt signed char abs_b signed char val When calculated in 8 bits signed int abs_w signed int val When calculated in 16 bits Appendix B 63 NEG SS LLL Appendix B Extended Functions Reference Function Syntax NOT negate include lt asmmacro h gt signed char neg_b signed char val When calculated in 8 bits signed int neg_w signed int val When calculated in 16 bits Function Syntax not include lt asmmacro h gt signed char not_b signed char val When calculated in 8 bits signed int not_w signed int val When calculated in 16 bits Appendix B 64 Overview of C Language Specifications C 1 C 1 1 Appendix C Overview of C Language Specifications Appendix C In addition to the standard versions of C available on the market C language specifica tions include
325. s S A a register qualification and fenable_register option f the 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 opti mization feature This assignment feature is not affected by whether the variables are reg ister qualified 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 NC30 MANUAL 52 Chapter 3 Programming Technique 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 un signed sign specifier for operations on integers with these
326. s macro expansion and judgements on conditional compiling The C source files output by the preprocessor include the results of cop30 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 i Figures 1 7 and 1 8 are examples of file output typedef struct _iobuf char _ burt e GNC flag _mod t _func_in _func_out FILE omitted typedef long fpos_t typedef unsigned int extern FILE _iob Figure 1 7 Example Preprocessed C Source File 1 smp i NC30 MANUAL 8 Chapter 1 Introduction to NC30 getc FILE st getchar void putc int c FILE st putchar int c feof FILE st ferror FILE st fgetc FILE st char fgets char s int n FILE st int fputc int c FILE st int fputs const char s FILE st size_t fread void ptr size_t size size_t nelem FILE st omitted ungetc int c FILE st printf const char format fprintf FILE Si const char format ese sprintf char s const char format omitted init_dev FILE int speed int int int int init_prn void _sget void _sput int _pput int x_print int char void main i int flag flag 0 3 printf flag d n flag 4
327. s a NULL character Appendix E 48 Appendix E Standard Library 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 Til Ce r Character to be searched SIZE T xine 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 Searches 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 OR or OS the system may selects another functions with good code efficiency by optimization 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 s1 Pointer to the first memory area to be compared NC308 only const void far s2 Pointer to the second memory area to be compared const void s2 Pointer to the second memory area to be compared NC308 only size_ tn Number of bytes to be compared ReturnValue Return Value 0 The two memory areas are equal Return Value gt 0 The fir
328. s no return value void smovb_b unsigned char p1 unsigned char p2 unsigned int count calculated in 8 bits void smovb_w unsigned int p1 unsigned int p2 unsigned int count When calculated in 16 bits SMOVF a Function Syntax 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 address incrementing direction There is no return value void smovf_b unsigned char p1 unsigned char p2 unsigned int count calculated in 8 bits void smovf_w unsigned int p1 unsigned int p2 unsigned int count calculated in 16 bits Appendix B 61 Appendix B Extended Functions Reference 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 void sstr_b unsigned char val unsigned char p unsigned int count calculated in 8 bits void sstr_w unsigned int val unsigned int p unsigned int count calculated in 16 bits MOVdir Function transfer to val2 from val1 by nibble Syntax include lt asmmacro h gt unsigned char movll unsigned char val1 unsigned char val2 to low of val2 from high of val1 unsigned char movih unsigned char val1 unsigned char val2 to high of val2 from low of val1 unsigned char movhl unsigned char val1
329. s of the interrupt processing functions with the names of inter rupt processing functions that use the dummy interrupt function name dummy_ int corresponding to the appropriate interrupt table in the vector address table NC30 MANUAL 46 Chapter 2 Basic Method for Using the Compiler Figure 2 31 is an example of registering the UART1 send interrupt processing function uartirn lword dummy_int uartO trance for user lword dummy_int uartO receive for user glb _uarttrn Process 1 above lword Wartlrn uartl trance for user Process 2 above omitted Figure 2 31 Example Setting of Interrupt Vector Addresses sect30 inc f Setting SPECIAL Page Vector Table When using pragma SPECIAL use sect30 inc to set the special page vector table Figure 2 32 is an example of setting the special page vector table macro is defined in ncrt0 a30 Format SPECIAL number e e e e e SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL SPECIAL Figure 2 32 Example Setting of Special Page Vector Table By default the special page vector table is a comment SPECIAL is a macro whose behavior is associated with the function name defined by pragma SPECIAL To define a special page number you want to use remove the comment for the desired page number Special page numbers do not need to be consecutive but must always be set in de scending order NC30 MANUAL 4
330. s option cannot be speci fied finfo None Outputs the information required for the Inspec tor STK Viewer Map Viewer and utl30 to the ab solute module file x30 In the entry version this option cannot be speci fied fswitch_other_section fSOS This option outputs a ROM table for a switch statement to some other section than a program section fchange_bank_always fCBA This option allows you to write multiple variables to an extended area g Library Specifying Option Table 2 7 lists the startup options you can use to specify a library file Table 2 7 Library Specifying Option Option Function l ibraryfilename_ Specifies a library file that is used by In30 when linking files NC30 MANUAL 18 Chapter 2 Basic Method for Using the Compiler h Warning Options Table 2 8 shows the command line options for outputting warning messages for contra ventions of nc30 language specifications Table 2 8 Warning Options Option Short form Function Wnon_ prototype WNP Outputs warning messages for functions without proto nail type declarations Wunknown_pragma WUP Outputs warning messages for non supported m pragma Wno_ stop Prevents the compiler stopping when an error occurs Wstdout None Outputs error messages to the host machine s standard mi output stdout Werror_file lt file name gt Outputs error messages to the specified file Wstop_at_warning Stops the compiling process when a warning occurs
331. s that the external variable resides in an area where a 1 bit manipulate instruction can be used in 16 bit absolute ad dressing mode i e a variable residing in addresses from 00000H to 01FFFRH Syntax pragma BIT variable name Example pragma BIT bit_data 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 SBDATA Declares that the data uses SB relative addressing Syntax pragma SBDATA variable name Example pragma SBDATA val pragma SECTION Changes the section name generated by NC30 Syntax pragma SECTION section_name new_section_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 TAG1 arrange 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 considered to be equivalent Appendix B 33
332. shows the specifications for coding NC30 C source files Note that estimates are provided for items for which actual measurements could not be achieved TableC 4 Specifications for Coding C Source Files Item Specification Number of characters per line of source 512 bytes characters including the new line file code Number of lines in source file 65535 max Appendix C 2 Appendix C Overview of C Language Specifications c NC30 Specifications Table C 5 to C 5 lists the NC30 specifications Note that estimates are provided for items for which actual measurements could not be achieved Table C 5 NC30 Specifications Item Specification Maximum number of files that can be specified in NC30 Depends on amount of available memory Maximum length of filename Depends on operating system Maximum number of macros that can be specified in nc30 command line option D Depends on amount of available memory Maximum number of directories that can be specified in nc30 command line option l 8max Maximum number of parameters that can be specified in nc30 command line option as30 Depends on amount of available memory Maximum number of parameters that can be specified in nc30 command line option n30 Depends on amount of available memory Maximum nesting levels of compound statements iteration control structures and selection Depends on amount of available memory control structures Maximum nesting levels in conditional compiling Number of pointers mo
333. signed decimal The target parameter must be a pointer to an un signed integer o Converts a signed octal The target parameter must be a pointer to an integer 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 0 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 c 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 0 is not included The target parameter must be a pointer to a character array of sufficient size to store the character string 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 and are input Storing stops when a character other than those between and is input If you specify the circumflex after only character other than those between the circumflex and are legal input characters Storing stops when one of the
334. sing the Compiler 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 the debugger s stack trace function In the entry version this option is always enabled i e assumed to be specified Therefore it cannot be enabled or disabled by specifica tion gno_reg Suppresses the output of debugging information for register variables In the entry version this option cannot be specified gold outputs debugging information for old version debuggers and third party debuggers In the entry version this option cannot be specified e Optimization Options Table 2 5 shows the command line options for optimizing program execution speed and ROM capacity Table 2 5 Optimization Options Option Short form Function O 1 5 Maximum optimization of speed and ROM size OR None Maximum optimization of ROM size followed by OS Maximum optimization of speed followed by ROM size Oconst OC Performs optimization by replacing references to the const qualified external variables with constants Ono_bit ONB Suppresses optimization based on grouping of bit manipulations Ono_break_source
335. sitional 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 subtraction expression expression expressions expression expression Bitwise shift expression expression lt lt expression expression gt gt expression Appendix C 9 Appendix C Overview of C Language Specifications Table C 12 Types of Expressions and Their Elements 2 2 Type of expression Relational expressions Equivalence expression Bitwise AND Bitwise XOR Bitwise OR Logical AND Logical OR Conditional expression Assign expression Comma operator Elements of expression expression expression lt expression expression gt expression expression lt expression expression gt expression expression expression expression expression expression amp expression expression expression expression expression expression amp amp expression expression expression expression expression 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 expr
336. smp c M16C 60 NC30 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED smp c Warning ccom smp c line 3 function must be far Figure B 12 Example Declaration of Function Appendix B 7 Appendix B Extended Functions Reference B 1 9 Function for Specifying near and far in Multiple Declarations As shown in Figure B 13 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 func remainder omitted This declaration is interpreted as the following extern int far idata 10 func remainder omitted Figure B 13 Integrated Function of Function 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 far using a common header file common header file common h extern int far data C source file C source file a c b c include common h include common h main int data 10 data 1 Figure B 14 Example of Common header file Declaration Appendix B 8 Appe
337. 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 n Stores the number of characters already read in format conversion The target param eter must be a pointer to an integer c E f g and G Convert to floating point format If you specify modifier the target parameter must be a pointer to a double type The default is a pointer to a float type Appendix E 61 Appendix E Standard Library Specifying format in scanf form 2 prevents data storage Specifying the asterisk prevents the storage of converted data in the parameter 3 Maximum field width 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 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 l L or h The results of d i o u and x conversion are stored as long int and unsigned long int The results of e E f g and G conversion are stored as double h The results of d i 0 u and x conversion are stored as short int and unsigned short int if or h are specified in other than d i o u or x con
338. sscccanrendncudapcarescciepecemoocstendeserenceaspecmesdaskicbencecssencces 51 5 Selection OT opimum INS EMUICHONTS ecesscrcsccersiccexacsencssanensssvncazeonsneeleoonsenseetecaosesetebestel oy Ee PUI TE a GUAET cissi a aSa 51 3 1 4 Precautions on USING register Variables criinsxxseaiwassinssnsiuncdensniaawinwndsesdnccnsicsssinasteresavederxs 52 OSS ADU SANnUD Handing ssersrereissin ein e Ere 52 a register qualification and fenable_register option cccccecccessececeseeeceeeeeeeeeeeeees 52 b About register qualification and optimization options ssssssssssnesesnnreesrrrssrrressrreene 52 For Greater Code Efficiency sec cccecec sete seccettcceeassnnrnceeesasiexeunsdehieaecscateeees cekawecocanees 53 3 2 1 Programming Techniques for Greater Code Efficiency ccccccccssssssesseeeeeeeeeeeeeeaes 53 as Regarding integers and VaraDibS sasrsirisernipaio ini S 53 B O OT aA iA 53 C A UD SGI eE a etieceumnaisannsiiaiinsanceentennnedestereeneinencinanales 54 d Using Prototype declaration Efficiently nnnnn00nnnnnnnennnnnennnnnnnnnnnnnnnnnnsnnnnnnesrnnnrennene 54 e Using 5B Register Efficiently cic ctisceiecscecce cectasiiede ce vices assent ua aeadew adeno 54 f Compressing ROM Size Using Option fUSRW cece cccccccceeesessseeeeeeeeeeeeeeessesaaeeeeees 55 g Other methodS ocesccscsccccceccsicisssccceactescecessscnnscesonecesesccenecsensnncecosshadecssessbeenecessessdbeseiecsneess 55 3 2 2 Speedin
339. st 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 OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 49 Appendix E Standard Library memcpy Memory Handling Functions Function Copies n bytes of memory Format include lt string h gt void far memcpy s1 s2 n void memcpy s1 s2 n NC308 only Method function Argument void _far s1 Pointer to the memory area to be copied to const void _far 2 Pointer to the memory area to be copied from size_ tn a Number of bytes to be copied ReturnValue Returns the pointer to the memory area to which the characters have been copied Description Copies n bytes from memory S2 to memory S1 When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization 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 Nn Number of bytes to be compared ReturnValue Return Value
340. statement correctly The initial value of the enumerator is incorrectly specified by writing a variable name for example gt Write the initial value of the enumerator correctly An argument which is not included in the argu ment list is declared in argument definition in function definition Declare arguments which are included in the ar gument list The argument of the function is erroneously de clared Write it correctly The function definition contains an error Check the line in error or the immediately preced ing function definition 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 vari able initialized by another variable Write the initialization expression correctly The initialization expression contains an error This error includes a bit field initialize expression described with variables for example Write the initialization expression correctly Appendix F 16 Appendix F Error Messages Table F 16 ccom30 Error Messages 9 14 Error message invalid initializer on array invalid initializer on char array invalid initializer on scalar invalid initializer on struct invalid initializer too many brace invalid lvalue invalid Ilvalue at operator invalid member invalid member used invalid redefined type name of iden
341. sumed Description and countermeasure 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 The variable is defined with different types each time Always use the same type when declaring a vari able twice An initialize expression is described in the vari able declared with typedef gt Delete the initialize expression An incomplete multidimensional array has been accessed to pointer gt Specify the size of the multidimensional array The jump address label for goto is not defined in the function gt Define the jump address label in the function The tag name for union and enumerated types is used as a tag name for structure Change the tag name An argument is specified that is not included in the argument list Check the argument A member is referenced that is not registered as any structure or union members Check the member name The left side expression of gt is not the structure or union type Use struct or union as the left side expression of gt 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 The left side expression of dose not have struct or union Use the struct or union as it An undefined variable name is used in the asm
342. t now nnn bytes Sorry compilation terminated because of these errors in function name Sorry compilation terminated because of too many errors struct or enum s tag used for union struct or union s tag used for enum struct or union enum does not have long or sign switch s condition is floating switch s condition is void switch s condition must integer syntax error System Error Description and countermeasure A maximum of 128 bytes of parameters can be secured on the stack frame Currently nnn bytes have been used Reduce the size or number of parameters The stack frame maximum is follows 64 bytes NC79 255bytes NC30 NC77 and NC79 with fDPO8 option used Currently nnn bytes have been used Reduce the auto variables parameters and other variables stored in the stack frame area An error occurred in some function indicated by function name Compilation is terminated Correct the errors detected before this message is output Errors in the source file exceeded the upper limit 50 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 Type specifiers long or signed are used for the struct union enum type specifiers Write the type specifier corre
343. t cannot be enabled or disabled by specification fnot_reserve_asm fNRA Exclude asm from reserved words Only _asm is valid In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fnot_reserve far_and_near fNRFAN Exclude far and near from reserved words Only _far and _near are valid In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fnot_reserve_inline fNRI Exclude far and near from reserved words Only _inline is made a reserved word In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fextend_to_int FETI Performs operation after extending char type data to the int type Extended according to ANSI standards In the entry version this option is always enabled i e assumed to be specified Therefore it can not be enabled or disabled by specification fchar_enumerator CE Handles the enumerator type as an unsigned char type not as an int type fno_even fNE Allocate all data to the odd section with no sepa rating odd data from even data when outputting ffar_ RAM Changes the default attribute of RAM data to far fnear_ROM FNROM Changes the default attribute of ROM data to near In the entry version this option cannot be speci
344. t of Bitfield 2 2 Note if no sign is specified the default bitfield member type is unsigned Can not specifies bit fields of long long type Appendix D 5 D 2 D 3 D 3 1 Appendix D C Language Specification Rules 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 calculation shown in Figure D 9 func char c1 c2 c3 cl c2 2 c3 Figure D 9 Example of C Program To generate code that maximizes code efficiency and maximizes speed NC30 does not by default extend char types to int types The default can however be overridden using the nc30 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 NC30 are as follows unsigned Char type cccceeeseeees 0 lt 9255 signed char type cccceeeeceeeeeeeees 1286127 Function Call Rules Rules of Return Value When retur
345. tdsncleatnavecoieensucddaduesmadasdenctevextiuchemsctaqenesccasuns 20 221 Sample gi Sten Progra ersinnen nirna e Ronisia ran P E n se 20 22 2 Customizing the Startup Program oecccn cocce ii ceneniersccwics wenccelcan dude naa a diinsiin 32 a Overview of Startup Program Processing ccccccccecsssssseeececeeeseeeeeeeesseeeeeeeeeesaeaaaeeseess 32 b Modifying the Startup Program cccccccccsssseseeceecceeeeeseeeeeeseeeecceeeeessseeaeeeeeeeeeeeesesaaaaas 33 NC30 MANUAL IV 3 2 3 3 c Examples of startup modifications that require caution ccccceeeeceeeeeeeseeeeeeeeeeeeees 33 1 Settings When Not Using Standard I O FUNCTIONS eaannnenannnennnnnnnnnnnnnnnnnnnnna 30 2 Settings When Not Using Memory Management Functions cccccccceeeeeee 34 3 Notes on Writing Initialization Programs sicssdiccscsnesisnciaccstaseveenenstedatvensacensstasncenaadsns 34 d Seiting the Stack Section DIZO wacsccsseonesteacreenseevscamentenaticeateneiseedauunbectdencat nicnecestesstbeieus 35 e Heap ccion ZE seoed aa eaa ere ery aN EEEE 35 f Setting the interrupt vector table a cacinszsiiesaecsavsveasecenveasaeptaconessqeasinteweteatudeaseatauseaccosssnansecs 35 g Setting the Processor Mode Register cccccccccssseesseeeeceeceeeeeeeeueeeeeeceeeeesssaeaaeaeeeess 36 2 2 3 Customizing for NC30 Memory Mapping ccccccceceecsssesseeeeeeceeeeeseeeeeeeeeeeeeeeeseeseaeees of ee IT i SON E OAA A A A
346. ter the minimum number of columns have been processed d The default is 1 e Nothing is output if zero with converted by zero minimum columns Appendix E 55 Appendix E Standard Library Specifying format in printf form s conversion a Represents the maximum number of characters b If the result of conversion exceeds the specified number of characters the remain der is discarded c There is no limit to the number of characters in the default d If you specify an asterisk for the precision the integer of the parameter specifies the precision e If the parameter is a negative value specification of the precision is invalid e E and f conversion n where n is the precision numerals are output after the decimal point g and G conversion Valid characters in excess of n where n is the precision are not output 5 1 Lorh d i 0 u X X and n conversion is performed on long int and unsigned long int parameters h d i 0 u x and X conversion is performed on short int and unsigned short int parameters lf or h are specified in other than d i 0 u x X or n conversion they are ignored L e E f g and G conversion is performed on double parameters 1 In the standard C specifications variables e E f and g conversions are performed in the case of L on long double parameters In NC30 long double types are processed as double types Threfore if you specify L the parameters are pr
347. th no sign it is processed as a signed int or signed short type 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 if the bit field members of a structure are specified with no sign they are processed as unsigned Can not specifies bit fields of long long type Appendix D 1 Appendix 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 Bit Size Range of values float Yes 32 1 17549435e 38F lt 63 40282347e 38F double Yes 64 2 2250 38585072014e 308 long double 1 7976931348623157e 308 NC30 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 the format for binary floating point float data Fixed point location S fixed point part sign 1 bit e characteristic part 8bits m fixed point part 23bits 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 1bit e characteristic part 11bits m fixed point pa
348. that _ are found in the other character string Searches the specified character from a character string strtok Divides some character string from a character string into tokens Length Calculates the number of characters in a character string Convert Converts an error number into a character string Converts a character string using locale information Initialize Initializes a memory area by clearing it to zero Copy Copies characters from a memory area to another Copies characters n bytes from a memory area to another Set a memory area by filling with characters Compare Compares memory areas n bytes memicmp Compares memory areas with alphabets handled as upper case letters Search memchr Searches a character from a memory area time h Function Declares the functions necessary to indicate the current calendar time and defines the type Appendix E 9 E 2 E 2 1 Appendix E Standard Library Standard Function Reference Overview of Standard Library NC30 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 1 0 Functions Functions to input and output characters and character strings These inclu
349. tibyte character string Returns 1 if s does not configure a correct multibyte character string Returns 0 if s indicates a NULL character Appendix E 47 Appendix E Standard Library mbstowcs Multi byte Character Multi byte Character String Manipulate Functions Function Converts a multibyte character string into a wide character string Format include lt stdlib h gt size_t mbstowcs wcs 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 STNG wineries Number of wide characters stored ReturnValue Returns the number of characters in the converted multibyte character string Returns 1 if s does not configure a correct multibyte character string mbtowc Multi byte Character Multi byte Character String Manipulate Functions Function Converts a multibyte character into a wide character Format include lt stdlib h gt int mbtowc wcs 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 SIZ6 T wasaceeenas 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 0 if s indicate
350. tifier invalid return type invalid sign specifier invalid storage class for data invalid struct or union type Description and countermeasure The initialization expression contains an error Check to see if the number of initialize expres sions in the parentheses matches the number of array elements and the number of structure mem bers The initialization expression contains an error Check to see if the number of initialize expres sions in the parentheses matches the number of array elements and the number of structure mem bers The initialization expression contains an error Check to see if the number of initialize expres sions in the parentheses matches the number of array elements and the number of structure mem bers The initialization expression contains an error Check to see if the number of initialization ex pressions in the parentheses matches the num ber of array elements and the number of structure members Too many braces are used in a scalar type initialization expression of the auto storage class Reduce the number of braces used The left side of the assignment statement is not lvalue Write a substitutable expression on the left side of the statement The left side of the assignment statement is not lvalue gt Write a substitutable expression on the left side of the statement The member reference contains an error Write correctly The member
351. tile pointer Description and countermeasure The variable specified in pragma ADDRESS is initialized The specification of pragma AD DRESS will be nullified gt Delete either pragma ADDRESS or the initialize expression The line in which pragma ASM is written ex ceeds the allowable number of characters 1 024 bytes Write it within 1 024 bytes pragma of different functions is specified for one function Write it correctly You have also specified option fDPO8 If you specify both pragma DP n DATA and fDPO8 pragma DP n DATA is invalid Delete the option fDPO8 You have made an error in the format of pragma DP n DATA Correct the format Do not put pragma JSRA inside function scope gt Write pragma JSRA outside a function Do not put pragma JSRW inside function scope gt Write pragma JSRW outside a function The address of function specified pragma PA RAMETER is assigned to the pointer variable gt As don t assign write correctly 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 HANDLER CYCHANDLER or ALMHANDLER An incorrect storage class is used Specify the correct storage class An incorrect storage class is used Specify the correct storage class Specifier typedef is used in argument declaration Specifier typedef will be ignored
352. tion gt Delete the initialize expression A member of struct or union is function type gt Write the members correctly The type of the return value in function declara tion is function type Change the type to pointer to function etc The type of the return value in function declara tion is an array type Change the type to pointer to function etc The function specified by pragma HANDLER is called Be careful not to call a handler The variable is defined more than one time Specify variable definition correctly The struct or union type is used in the expression of the if statement The expression must have scalar type The void type is used in the expression of the if statement gt The expression must have scalar type An inline function is declared in declaration state ment within a function Declare it outside a function An interrupt function is declared in declaration statement within a function Declare it outside a function An attempt is made to reference an array of in complete gt Define size of array An attempt is made to reference an return vari able of incomplete type Check return variable An attempt is made to reference or initialize an array of incomplete structs or unions that do not have defined members gt Define complete structs or unions first An attempt is made to reference an struct mem ber of incomplete
353. tion When referencing a far type array whose total size is unknown when compil ing this option calculates subscripts in 16 bits assuming that the array s total size is within 64 Kbytes 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 bits 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 com piler the subscript j is calculated in 32 bits 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 bits 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 Appendix A 32 Appendix A Command Option Reference fenable_register fER 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 specif
354. tions There fore you need to debug inline functions at the assembly language level Appendix B 31 Appendix B Extended Functions Reference B 6 Extension of Comments NC30 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 Figure B 61 Example Comments 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 Appendix B 32 Appendix B Extended Functions Reference B 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 3 Memory Mapping Extended Functions Extented function Description pragma BIT Declare
355. totype declaration Figure C 5 Format of Declaration Specifier 4 Body of the Program Use the format of body of the program shown in Figure C 6 List of Variable Declarator 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 C 2 5 Statement NC30 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 Appendix C 13 Appendix C Overview of C Language Specifications b Compound Statement Use the format of compound statement shown in Figure C 8 list of declarations list of statements 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 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 Figu
356. ts another functions with good code efficiency by optimization Appendix E 51 Appendix E Standard Library 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 perror Input Output Functions 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 Appendix E 52 Appendix E Standard Library pow Mathematical Functions Function Calculates the power of a number Format include lt math h gt double pow x y Method function Argument double X multiplicand double yY multiplier ReturnValue Returns the multiplicand x raised to the power of y printf 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 sign in the character string given in format has the following meaning
357. two variable name An enumerator has been declared twice Change the name for either of the two enumera tors The function indicated by function name is de fined twice The function can be defined only once Change the name for either of the two functions An enumeration is defined twice Make sure that enumeration is defined only once A structure is defined twice Make sure that a structure is defined only once A union is defined twice Make sure that a union is defined only once An initialize expression is specified twice for the same variable Specify the initializer only once A restrict is defined twice Make sure that a restrict is defined only once 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 The size of void cannot be found Appendix F 19 Appendix F Error Messages Table F 19 ccom30 Error Messages 12 14 Error message Sorry stack frame memory ex haust max 128 bytes but now nnn bytes NC30 NC308 only Sorry stack frame memory ex haust max 64 or 255 bytes bu
358. ubsequent data Appendix E 32 free Appendix E Standard Library Function Format Method Argument Frees the allocated memory area include lt stdlib h gt void free cp function void _far cp Pointer to the memory area to be freed ReturnValue No value is returned Description frexp Frees memory areas previously allocated with malloc or calloc No processing is performed if you specify NULL in the parameter Mathematical Functions Function Format Method Argument Divides floating point number into mantissa and exponent parts include lt math h gt double frexp x prexp function 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 Appendix E 33 fscanf Appendix E Standard Library Function Format Method Argument ReturnValue Description fwrite Input Output Function Reads characters with format from the stream include lt stdio h gt int fscanf stream format argument function FILE _far stream Pointer of stream const char _far format Pointer of the input character string Returns the number of data entries stored in each argument Returns EOF if EOF is input from the stream as data Converts the characters input from the stream as specified in format
359. ules 1 Declaring assembler functions 1 Before a pragma INTCALL 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 inthe pragma INTCALL declaration b You cannot declare the following types in the parameters in the assembler function Structure types and union types double types long long types c You cannot declare the following functions as the return values of assembler functions 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 R38R1 and A1A0 far pointer types 24 bit registers R2RO R3R1 and A1A0 near pointer types 16 bit registers A0 A1 RO R1 R2 and R3 char 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 2 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 param
360. usags 31 small array ASA Y enircnrnrininniinnn aaia aiaia 32 fnot_address_volatile fNAV cccsssssseeccssseeeceeeneeseeeseeeseenseeeseanseessenseeesoaees 32 sic iire le m togistor AEF asss 33 MMO aD AINA an E 33 A N anaE E E E A 34 DE E A E A 34 AO C N ea 35 AUN 120 TAT en E 35 Uae BIN CRUD a A R 36 AIE a cava cecanacaene ine oreuphi cul faacausbsaunesieataduchiecoavoutesaisnactassieiactucnuts tenths cdizietsass 36 fswitch_other_section fSOS sasssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nnmnnn nnna 37 fchange_bank_always fCBA cccccesssssssseeeeseeessseeeeseeeeenseeeeeeeneeneeeessoessseeseseons 37 A 2 7 Library Specifying Option nneenn0000nnnnnnnnnennnnnnnnnnnnnnnnnrnnnnrrrrnrnnnsssnnrrrnrrrenensnnnrnrrrennnnne 38 SUT AL TNT GINS soseri aaia aeaaea 39 A20 WH UPN UC ON Scag sos eee sacesecas scala eTe Te erei 40 WWNOM prot typ WNP J cccecscsrentsctecdsiecdeceonustonemmoncmmertienadcmbancicnertmsmsdernassatioationsacmaten 40 WUNKNOWN pragma WUP jasiksnnsnninncnsniainnsnnssaniiana 41 WNO SIOD WNG scesessisessstcaidaniutniduncasenetinrnssenienisiaaserdasrencduersiveasamusinissoudcecninveunines 41 s 8 oe a aN ee any a On Perea ere eves Oo eo ewe ee perenne eer 42 Werror Tie lt file name gt WEF scessccassiacasccsnacscecacadesseasasisnnudennstsavennscenuaivecncsuecsians 42 Wstop_at_warning WSAW cicescsccccsdctenstiaiantanvensesi
361. ver error messages and their countermea sures Table F 1 nc30 Error Messages 1 2 Error message Arg list too long Cannot analyze error Command file line characters exceed 2048 Core dump command name Exec format error Ignore option illegal option Invalid argument Invalid option Invalid option o Description and countermeasure The command line for starting the respective process ing system is longer than the character string defined by the system Specify a NC30 option to ensure that the number of characters defined by the system is not exceeded Use the v option to check the command line used for each processing block This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp There are more than 2048 characters on one or more lines in the command file Reduce the number of characters per line in the com mand file to 2048 max The processing system indicated in parentheses Caused a core dump The processing system is not running correctly Check the environment variables and the directory containing the processing system If the processing system still does not run correctly Please contact Renesas Solu tions Corp Corrupted processing system executable file Reinstall the processing system You specified an illegal option for NC30 Specify the correct option You specified options greater than 10
362. version they are ignored L The results of e E f g and G conversion are stored as float Appendix E 62 Appendix E Standard Library setjmp Execution Control Functions Function Saves the environment before a function call Format include lt setjmp h gt int setimp 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 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 NULL if information cannot be set or searched Appendix E 63 Appendix E Standard Library SIN Mathematical Functions 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 handled in units of radian sinh Mathematical Functions Function Calculates hyperbolic sine Format include lt math h gt double sinh x Method function
363. via register transfer only when entering prototype declaration i e 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 we recommends using a prototype declaring description format as the standard format to write the C language source files for NC30 Appendix D 7 Appendix D C Language Specification Rules 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 the 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 9 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
364. wice Write the type specifier correctly Only storage class and type specifiers are found Write a declarator Specifiers signed unsigned are described in float or double Write the type specifier correctly The floating point immediate value exceeds the representable range Make sure the value is within the range A bit field of an invalid type is declared Use the integer type to declare a bit field The struct or union type is used in the second expression of the for statement Use the scalar type to describe the second ex pression of the for statement Appendix F 11 Appendix F Error Messages Table F 11 ccom30 Error Messages 4 14 Error message for void statement function initialized function member declared function returning a function de clared function returning an array handler function called identifier variable name is dupli cated if struct union statement if void statement illegal storage class for argument inline ignored illegal storage class for argument interrupt ignored incomplete array access incomplete return type incomplete struct get by incomplete struct member incomplete struct initialized Description and countermeasure The 2nd expression of the for statement has void Use the scalar type as the 2nd expression of the for statement An initialize expression is described for function declara
365. ws you to specify an upper limit for the number of warnings output by ccoms30 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 Note 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 completely suppressed inhibited Wall Function Displays message for all detectable warnings however not including alarms output by Wlarge_to_small WLTS and Wno_used_argument WNUA whi ch are displayed with the Wnon_prototype WNP and Wunknown_pragma WUP options and in the following cases 1 and 2 Note that these warn ings are not all coding errors because they are the compiler s inference Case 1 When the assignment operator is used in the if statement the for statement or acomparison statement with the amp amp or operator Example if i 0 func Case 2 When is written to which should be specified Example 0 Case 3 When function is defined in old format Example func 1 int i omitted Note 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 Appendix A 44 Appendix A Command Option Reference Wmake_tagfile WMT Function Outputs error
366. y absolute addresses for input output variables Facility to declare functions using software interrupts Facility to write interrupt functions Facility to declare assembler functions passed via register Facility to declare special page subroutine call functions Facility to describe alarm handler functions Facility to describe cyclic handler functions Facility to describe interrupt handler functions Facility to describe taskstart functions Facility to describe inline assembler Facility to declare functions calling with JSR A instruction Facility to declare functions calling with JSR W instruction Facility to output PAGE Appendix C 21 Appendix C Overview of C Language Specifications You can only specify the above 17 processing functions with pragma If you specify a character string or identifier other than the above after pragma it will be ignored Always use uppercase to specify the process SECTION INTERRUPT etc By default no warning is output if you specify an unsupported pragma function Warnings are only output if you specify the nc30 command line option Wunknown_pragma WUP Appendix C 22 Appendix C Overview of C Language Specifications if elif else endif E Function Format Description Performs conditional compilation Examines the expression true or false ifAconstant expression Jeiixconsiani expression jasa endii if the value of the constant is true not 0
367. y in sequence if it s not found 1 The directory specified by nc30 s startup option l 2 The directory specified by environment variable INC30 3 If the 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 error ee Function Suspends compilation and outputs the message to the standard output device Format errorAcharacter string Description Suspends compilation lexical string is found this command outputs that character string to the standard output device Appendix C 19 Appendix C Overview of C Language Specifications line SSS Le Function Changes the line number in the file Format lineAintegerA file name Description Specify the line number in the file and the filename You can change the name of the source file and the line No fassert Ue Function Issues a warning if a constant expression results in zero 0 Format assertAconstant expression Description lssues a warning if a constant expression results in zero 0 Compile is contin ued however Warning cpp30 82 x c line xx Jassertion warning Appendix C 20 Appendix C Overview of C Language Specifications pragma SS Ee Function Instructs the system to process NC30 s extended functions Format
368. y ut130 oragma SBDATA Utility 27 SBDATA Size 255 pragma SBDATA data3 pragma SBDATA data2 omitted pragma SBDATA datal size 2 ref 1 End of File 7 Since 2 byte data are SB declared in an assembler routine you subtract 2 bytes of SBDATA declaration from the file generated by ut130 Example pragma SBDATA datal size 2 ref 1 Comments out Figure G 7 Example of adjust the file generated by utl30 Appendix G 12 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl30 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 compiling processed by utl30 the SBDATA Declaration amp SPECIAL Page Function Declaration Utility Figure G 8 shows an example of input for utl30 Figure G 9 shows an example of a SPE CIAL page function declaration file Figure G 10 shows an example of a SPECIAL page vector definition file utl30 sp30 nert0O x30 o special lt RET gt Prompt ncrt0 x30 Name of map file Figure G 8 Example utl30 Command Line oragma SPECIAL PAGE Utility SBDATA Size 255 pragma SPECIAL 255 funcl 100 ref pragma SPECIAL 254 func2 100 ref pr
369. yed 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 argu ments 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 int i j for i 0 i lt 10 i func2 pragma ASM FCLR I This area is output directly to an LOOP1 assembly language file MOV W OFFH RO omitted FSET pragma ENDASM Figure B 81 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 Appendix B 53 Appendix B Extended Functions Reference pragma JSRA Calls a function with JSR A Function Syntax Description Rules Example Calls a function using the JSR A instruction pragma JSRAAfunction name 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 fuUSRW option and that cause errors during linking This preprocessing directive has no effect when the fUSRW option not specified extern void func int i pragma JSRA func void main void Fi

Download Pdf Manuals

image

Related Search

Related Contents

Spec Sheet - The Reynolds Company  Notice Resist - Laboratoire Tilman    Canon PowerShot S230 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file