Home

M3T-NC308 V.5.10 User's Manual

image

Contents

1. Item Specification Maximum number of files that can be specified in NC308 Depends on amount of available memory Maximum length of filename Depends on operating system Maximum number of macros that can be specified in nc308 command line option D Depends on amount of available memory Maximum number of directories that can be specified in nc308 command line option I 16max Maximum number of parameters that can be specified in nc308 command line option as308 Depends on amount of available memory Maximum number of parameters that can be specified in nc308 command line option In308 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 Depends on amount of available memory Number of pointers modifying declared basic types arrays and function declarators Depends on amount of available memory Number of function definitions Depends on amount of available memory Number of identifiers with block scope in one block Depends on amount of available memory Maximum number of macro identifiers that can be simultaneously defined in one source file Depends on amount of available memory Maximum number of macro name replacements Depends on amount of available memory Num
2. 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 Appendix E Standard Library fscanf Input Output Function Function Reads characters with format from the stream Format include lt stdio h gt int fscanf stream format argument Method function Argument FILE _far stream Pointer of stream const char far format Pointer of the input character string ReturnValue Returns the number of data entries stored in each argument Returns EOF if EOF is input from the stream as data Description Converts the characters input from the stream as specified in format and stores them in the variables shown in the arguments Argument must be a pointer to the respective variable Interprets code 0x1A as the end code and ignores any subsequent data Format is specified in the same way as in scanf fwrite Input Output Functions Function Outputs the specified items of data to the stream Format include lt stdio h gt size t fwrite buffer size count stream Method function Argument const void far buffer Pointer of the output data size t SZO riar Number of bytes in one data item Size t COUNT Maximum number of data items FILE far stream Pointer of the stream ReturnValue Returns the number of d
3. sese 56 Gi Oihar methodes apani aane MAGIA LAM IER tO ht eoi semet Gps p S ERE LEUTE 56 3 2 2 Speeding Up Startup Processing essseeeseeeeenene nennen 57 Linking Assembly Language Programs with C Programs sse 58 3 3 1 Calling Assembler Functions from C Programs essen 58 amp Galing Assembler FUNCTIONS ac cu auos cusa cete hare v eap cre at de eram ec nb rette un deoa tede pecie 58 b When assigning arguments to assembler functions essssssessss 59 c Limits on Parameters in pragma PARAMETER Declaration ssssse 60 3 3 2 Writing Assembler Functions sesssesesesesseseeeeneeenneenneennen nennen nnn nnns 60 a Method for writing the called assembler functions sess 60 b Returning Return Values from Assembler Functions eene 61 NC308 MANUAL V C d e 3 3 3 3 4 1 a 3 4 2 a Refeiencing G Vatlable5 zuuu geiscpis ctp a E eae 61 Notes on Coding Interrupt Handling in Assembler Function cccsscceessteeeeeeeees 62 Notes on Calling C Functions from Assembler Functions cccsccessseeeeseteeeeeeeees 63 Notes on Coding Assembler Functions eessessseeseeeeeeeeennnen nennen 64 Notes om Handing B and U Tage irrisa caretes ret ee bei te teta cost note eantaire 64 Notes on Handing FB Fegister ie nin
4. Character to be checked ReturnValue Returns any value other than O 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 Cc Character to be checked ReturnValue 6 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 Character Handling Functions Function Checks whether the character is printable including a blank 0x20 0x7e Format include ctype h int isprint c Method macro Argument int c 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 int c Character to be checked ReturnValue amp Returns any value other than 0 if a punctuation character Returns 0 if not a punctuation character Description De
5. 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 NC308 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 NC308 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 nc308 S smp c M32C 80 M16C 80 Series NC308 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 func 2 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 ther
6. sse 16 C 3 2 Preprocess Commands Reference sssssssssssseeeeeeeerennren ener 16 3 3 BredefinedMa6EOS 212052 itat eia ett iaceo ete c eatem eee eret tte Ee AEE EER EAAS 26 5 3 4 sageof predefined MaBCIOS 3 a iecena coii ot toit tota hte nutus Irt FEE Ee MR nea eaid 26 D 1 D 2 Internal Representation of Dala 3 iter xe Hid eere Abtei dex aaneacieh stand aaet pede daeeetu ds 1 D 1 1 Integral Type rettet t neut lt ra net centri dex aS asan a a UER a canst ceases 1 D 1 2 Floating Type urne eee noa deett b ga erae rto tv tertiae aepo 2 D 1 9 Enutmierator Type ceste reete tente dye cet estaba aE aS pode EROR e edes Rue 3 DA Polpt l TYDOs oii pacer e or tate aeree edere celda ave ede ee he biu see diode 3 Dede Aray TYPOS E 3 DRO Structure types uincere teure ime ins Per een hed d deret tein 3 mM uon EE 4 DAS Bittteld TYPES irse e epu eder entend ene taste lasedeceasnsteasgecagseiesetasesstadevsessiiecteecestecs 5 Sig Extension RUlBS cedar pt oie tee ius Desv aaa dine eese Dic 2 S pn RS EE E des 6 NC308 MANUAL IX TB Fes eel An eld cys S aU gt cee ae ane ER aes eee SU rt EP re eia spp RE EO AER RP AS EEO Ee 6 D 3 1 Rules oft Return Value rre tere beet Eten ente etti erai idii 6 D 3 2 Rules on Argument Transfer corrente testi deat d Dea eoe ceases 7 D 3 3 Rules for Converting Functions into Assembly Language Symbols 8 D 3 4 Interface betw
7. CS glb _ext_val ECTION bss_NE DATA JS val C s name is s val 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 char char char void func void asm bset b s bitl 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 P4 FUNCTION func P9d d ARG Size 0 Auto Size 0 Context Size 4 SECTION program CODE ALIGN file Ukk ce align line 10 4d C SRC glb func funes line 11 C SRC Sb s bitl ASM START bset 1 _s Reference to bitfield bitO of structure s ASM END line 12 C SRC CS SECTION bss_NO DATA glb s Figure B 31 Example of Referencing Bit Field of Symbol When referencing the bit fields of extern or static variables you must confirm that they are located within the range that can be referenced directly using bit operation instructions within 0000H and 1FFFH Appendix B 17 Ap
8. Calls the main function NC308 MANUAL 32 Chapter 2 Basic Method for Using the Compiler b Modifying the Startup Program Figure 2 18 summarizes 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 0g amp 0H 5u Set the interrupt base register Set the processor operating mode 2 2 8 Customizing Memory Allocations ourgoeioes 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 80 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 Initialize standard I O if STANDARD IO 1 glb init call init G jsr a init endif M 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 modif
9. ReturnValue lt 0 The second character string s2 is greater than the other Description Compares each byte of n characters of two character strings ending with NULL However all letters are treated as uppercase letters When you specify options O 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 6 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 O 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 strrchr 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
10. 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 invalid function s argument declara tion The argument of the function is erroneously de clared Write it correctly invalid function declare The function definition contains an error Check the line in error or the immediately preced ing function definition Appendix F 16 Appendix F Error Messages Table F 16 ccom308 Error Messages 9 14 Error message Description and countermeasure invalid initializer 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 invalid initializer of variable name The initialization expression contains an error This error includes a bit field initialize expression described with variables for example Write the initialization expression correctly invalid initializer on array The initialization expression contains an error Check to see if the number of initialize expres sions in the parentheses matches the number of array elements and the number of structure mem bers invalid initializer on char array
11. 3 For bit comparison use amp or in place of amp amp or 4 For a 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 NC308 MANUAL 56 Chapter 3 Programming Technique 3 2 2 Speeding Up Startup Processing The ncrt0 a30 startup program includes routines for clearing the bss area This routine ensures that variables that are not initialized have an initial value of 0 as per the C language specifications For example the code shown in Figure 3 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 NEAR area initialize bss zero clear BZERO bss_SE_top bss_SE BZERO bss SO top bss SO BZERO bss NE top bss NE BZERO bss NO top bss NO Ne Ne Ne Ne Ne Ne Ne Ne o9 omitted FAR area initialize BZERO bss FE top bss FE bss zero clear i BZERO bss FO top bss FO Figure 3 10 Commenting Out Routine to Clear
12. Returns the NULL pointer if an error or the end of the stream is encountered Description Reads character string from the specified stream and stores it in the buffer Input ends at the input of any of the following 1 new line character n 2 n 1 characters 3 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 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 divisor ReturnValue Returns a remainder that derives when dividend x is divided by divisor y Appendix E 30 Appendix E Standard Library fprintf Input Output Functions Function Outputs characters with format to the stream Format include lt stdio h gt int fprintf stream format argument Method function Argument FILE far stream Pointer of stream const
13. address operator amp pointer operator bitwise operator assignment operators gt gt amp x A t amp relational operators gt HE lt gt lt S lt gt gt sizeof operator sizeof f Punctuators NC308 interprets the followings as punctuators e e e e e g Comment Comments are enclosed between and Theycannotbe 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 NC3068 supports the following data type character type integral type e structure e union enumerator type e void floating type b Qualified Type NC308 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 Typ Existence of sign Bitsize Range of values Bool No 8 0 1 char No 8 0 lt 255 unsigned char signed char Yes 8 1284427 int Yes 16 32768432767 short signed int signed short unsigned int No 16 0465535 unsigned short long Yes 32 2147483648421 47483647 signed long unsigned long No 32 044294967295 long long Yes 64 922337203685477 5808 signed long long 9223372036854775807 unsigned long long No 64 184467440737095
14. ccom308 Assembly language source file This file is generated Assembler nc308 command Absolute ppuon as308 module finfo file Relocatable SBDATA definition amp object SPECIAL Page file Function definition linker uti308 utility SBDATA SPECIAL Page SPECIAL Page definition file Function Vector definition file definition file C_D output file of nc308 FigureG 1 NC308 Processing Flow Appendix G 1 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 G 2 Starting utl308 G 2 1 utl308 Command Line Format For starting utl308 you have to specify the information and parameter that required utl3808A command line option A map file name 96 Prompt lt gt Mandatory item Optional item A Space Delimit multiple command line options with spaces Figure G 2 utl308 Command Line Format Before utl308 can be used the following startup options of the compiler must both be specified in order to generate an absolute module file extension x30 9 finfo option to output an inspector information 0 g option to output debugging information The following utl308 options are also specified 0 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 utl308
15. gt This error occurs when the prototype declaration of the function with default arguments and those in the function definition section do not match Make sure they match invalid push An attempt is made to push void type in function argument etc The type void cannot be pushed Appendix F 13 Appendix F Error Messages Table F 13 ccom308 Error Messages 6 14 Error message Description and countermeasure invalid operand 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 invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid amp amp operands The amp amp operation contains an error Check the expressions on the left and right sides of the operator invalid amp operands The amp operation contains an error Check the expression on the right side of the operator invalid amp operands The amp operation contains an error Check the expressions on the left and right sides of the operator invalid operands The expression on the left side of is not a function Write a function or a pointer to the function in the left side expression of invalid operands If multiplication the operation contains an error I
16. operands Use of the unary operator is illegal Check the right side expression of the operator invalid unary operands Use of the unary operator is illegal Check the right side expression of the operator invalid unary operands Use of the unary operator is illegal Check the right side expression of the operator invalid void type The void type specifier is used with long or singed Write the type specifier correctly invalid void type int assumed 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 invalid size of bitfield Get the bitfield size Not write bitfield on this decraration invalid switch statement The switch statement is illegal Write it correctly label label redefine The same label is defined twice within one func tion Change the name for either of the two labels long long type s bitfield 9 Specifies bitfield by long long type Can not specifies bit fields of long long type mismatch prototyped parameter type The argument type is not the type declared in prototype declaration Check the argument type Appendix F 18 Appendix F Error Messages Table F 18 ccom308 Error Messages 11 14 Error message Description and countermeasure No pragma ENDASM pragma ASM does not
17. 2 aceite tede cete ena eroe tiae aedes ERR adeo Educ 15 a Options for Controlling Compile DfiVet 5 3 iis it nie arto tH oet Le RE blotter elias 15 b Options Specifying Output File esses croisiere be ribi ec HLA Ee ieee 15 c Version and command line Information Display Option seseeeee 15 d Options Tor Debggllig x3 oie ipi Erebi eed stats PRO Iedre A ete 16 e Optimization ODOM Sic caeca doe coe CORE Hie ecd E eet eee ee ete 16 f Generated Code Modification Options 2 ca cranes ctos tiet rne ova du Io IUe me qz gi ibrary Speciiyng OPON 23 9 8 9 e Ret C Rp Duende petii bong dpredud t de vp e tee e 18 hc We IG MODUS unes secs assets code dede ted ape cu S USA UIS HIE Ra Im Scd bud aes 19 le JAssemble amdibimk ODpHos dprad ci ed in ex oa dern SR IR tpe doi Uu ee 19 2 2 Preparing the Startup Program sssssssssssssseseee eene enne 20 2 2 1 Sample ot Startup Progra Misses eisean vie ote ete iene ore been 20 2 2 2 Customizing the Startup Progra services torret eni inei eter tort deans 32 a Overview of Startup Program Processing aco cie tape cibo reos petes Une Re ae 32 b Modifying the Startup POE ET dece aee ct EU DUE NOR EROR EUER aed petas o re DOM S a 33 c Examples of startup modifications that require caution ccccceceseeeeeeeeeeteeeeeeeeeeee 33 NC308 MANUAL IV 3 2 3 3 1 Settings When Not Using Standard I O Functions eeseessssss a3 2
18. Appendix D C Language Specification Rules Securing auto Variable Area Variables of storage class auto are placed in the stack of the micro processor Fora C 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 for i20 i 20 i process scope of i abbreviated for j OxFF j lt 0 j process scope ofj abbreviated for k 0 k lt 0 k process 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 3 FUNCTION func HHH FRAME AUTO k size 2 offset 2 HHH FRAME AUTO j size 2 offset 2 VHHE FRAME AUTO i size 2 offset 2 section program file test1 c line 3 glb func func enter 02H remainder omitted As shown by 1 2 and 8 the three auto variables share the FB offset 2 area Figure D 21 Example of Assembly Language Source Program Appendix D 14 Appendix D C Language Specification Rules D 5 Rules of Escaping of the Register The rules of Escaping of the register when call C function as follows 1
19. M 2 1 3 NOteS 12 2 atre niente a adie tdue didi eee 3 1 3 1 Notes about Version up of compller 2 citt taie i t loeo Ine etr tiec eot n 3 1 3 2 Notes about the M16C s Type Dependent Part eese 3 14 Example Program Development e ee but cible aam bores nbd 5 1 5 NG309 Output FIIeS cuia i hit a opa sesl boe expe sacca dean bh toute a ONU REGES 7 1 5 1 Introduction to Output FI es to cett e avin oa einai iis y 1 5 2 Preprocessed C Source Files iiie torti e evertit ite tria ip etes dre per eve Ee rus 8 15 3 Assembly Language Source Files cisnienie e eet te erectae edes 10 2 1 Starting Wp the Compile ersat ener ER e ea Dk aa RR EET Eai 12 2 1 1 6308 Command FOMA s s uico rigent uestra Eee pov a A ands DAE Ser UC ER REOS 12 2 1 2 Command File erii ctr t rb eR mter p Rz BIKE SERA a Aa ER aaie 13 a Command tile input TORIWadt 2 52 55 3 t3 neonne I ADU E UNIS reas tgatas RERUM RS BEAR iai eal tees 13 b huleson command tile descriptio sus ocisocoss tor ee epos ata ehe tena bre set dete iuste 14 c Precautions to be observed when using a command file essssesss 14 2 1 8 Notes on NC308 Command Line Options essessseneeeeeneneem 14 a Notes on Coding nc308 Command Line Options seseseseeeeeee 14 b Priority of Options for Controlling Compile driver eeeeeneeeeee 14 2 1 4 ine308 Command Lime OptlOFrls
20. 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 NC308 is premised on condition that the SB register is used in fixed mode after being initialized by the startup program If you modified the SB register write a statement to restore it at the end of consecutive asm functions as shown in Figure B 37 asm SB 0 asm LDC 0H SB asm MOV W RO port SB SB changed abbreviated asm SB SB y SB returned to original state asm
21. 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 7 pragma Extended Functions B 7 1 Index of pragma Extended Functions Following index tables show contents and formation for pragma extended functions a Using Memory Mapping Extended Functions Table B 3 Memory Mapping Extended Functions Extented function Description pragma ROM Maps the specified variable to rom Syntax pragma ROM variable_name Example pragma ROM val This facility is provided to maintain compatibility with NC77 and NC79 The variable normally must be located in the rom section using the const qualifier pragma SBDATA Declares that the data uses SB relative addressing Syntax pragma SBDATA varia
22. as308 Specifies output of map file extension map at linking In308 ms NC308 MANUAL 12 Chapter 2 Basic Method for Using the Compiler nc308A command line option A assembly language source file name A relocatable object file name A lt C source file name gt Prompt lt gt Mandatory item Optional item A Space Figure 2 1 nc308 Command Line Format 96 nc308 osample as308 I In308 ms ncrt0 a30 sample c lt RET gt RET Return key Always specify the startup program first when linking M Figure 2 2 Example nc308 Command Line 2 1 2 Command File The compile driver can compile a file which has multiple command options written in it i e a command file after loading it into the machine Use of a command file helps to overcome the limitations on the number of command line characters imposed by Windows TM etc a Command file input format nc308A command line option A Gfile name command line option 96 Prompt lt gt Mandatory item Optional item A Space Figure 2 3 Command File Command Line Format di 7 nc308 c test cmd g lt RET gt lt RET gt Return key Always specify the startup program first when linking M Figure 2 4 Example Command File Command Line Command files are written in the manner described below ncrt0 a30 CR sample1 c sample2 r30 lt CR gt
23. extern void func int i pragma JSRW func void main void func 1 Figure B 84 Example of pragma JSRW Note The pragma JSRWis valid only when directly calling a function It has no effect when calling indirectly Appendix B 56 Appendix B Extended Functions Reference pragma PAGE Function Declares new page position in the assembler generated list file Syntax pragma PAGE Description Putting the line pragma PAGE in C source code the PAGE pseudo instruction is output at the corresponding line in the compiler generated assembly source This instruction causes page ejection asesmbler output assembly list file Rules 1 You cannot specify the character string specified in the header of the assembler pseudo instruction PAGE 2 You cannot write a pragma PAGE in an auto variable declaration r Example void func int d yg for i 0 i 10 1i func2 pragma PAGE itt Figure B 85 Example of pragma PAGE Appendix B 57 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 specif
24. ifA definedAidentifier 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 0 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 NC308 M16C80 As for the time of M82 option use M32C80 is defined instead e NC308 C 3 4 Usage of predefined Macros The predefined macros are used to for example use preprocess commands to switch machine dependent code in non NC308 C programs ifdef NC308 pragma ADDRESS portO 2H pragma ADDRESS porti 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 NC308 the extended rules for signs in operations etc and the rules fo
25. 1 Save those registers that may be destroyed at entry of the function 2 Restore the registers at exit of the function NC308 MANUAL 65 Appendix A Command Option Reference Appendix A Command Option Reference This appendix describes how to start the compile driver nc308 and the command line options The description of the command line options includes those for the as308 assem bler and In308 linkage editor which can be started from nc308 A 1 nc308 Command Format a nc308A command line option A assembly language source file name A relocatable object file name A C source file name 96 Prompt lt gt Mandatory item Optional item A Space Figure A 1 nc308 Command Line Format 96 nc308 osample as308 I In308 ms ncrt0 a30 sample c lt RET gt lt RET gt Return key Always specify the startup program first when linking Figure A 2 Example nc308 Command Line Appendix A 1 A 2 A 2 1 Appendix A Command Option Reference nc308 Command Line Options 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 Idirectory Specifies the directory containing the file s specified in include
26. 3 set UARTO level 3 input function ees m ERE _sput0 lt 3 set UARTO level 3 input function ace 96 B8 PN S2 lt 4 set UARTO speed function speed _96 B8 PN _S2 init prsf 2 to 4 correspond to the items in the description of setting above Figure E 6 Modifying the init Function Appendix E 97 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 NC308 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 nc308 c g osample ncrt0 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 make RET Figure E 8 Method of Updating Library Using Modified Source Programs Appendix E 98 Appendix F Error Messages Appendix F This appendix describes the error messages and warning messages output by NC308 and their countermeasures F 1 Message Format If during processing NC308 det
27. Appendix F Error Messages Table F 24 ccom308 Warning Messages 4 11 Warning message Description and countermeasure can t get size of function A function name is used for the operand of the sizeof operator Write the operand correctly can t get size of function unit size 1 assumed The pointer to the function is incremented or decremented Processing will be continued by assuming the increment or decrement value is 1 Do not increment or decrement the pointer to a function char array initialized by wchar_t string The array of type char is initialized with type wchar t Make sure that the types of initializer are matched case value is out of range The value of case exceeds the switch parameter range Specify correctly character buffer overflow The size of the string exceeded 512 characters Do not use more than 511 characters for a string character constant too long There are too many characters in a character constant characters enclosed with single quotes Write it correctly constant variable assignment In this assign statement substitution is made for a variable specified by the const qualifier Check the declaration part to be substituted for cyclic or alarm handler always Bank 0 NC77 NC79 only Function specified in pragma CYCHANDLER or ALMHANDLER are always compiled in bank 0 addresses be
28. Arrays whose size is zero cannot be members of a structure function name is resursion then inline is ignored 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 ccom308 Warning Messages Tables F 21 to F 30 list the ccom308 compiler warning messages and their countermeasures Table F 21 Warning message ccom308 Warning Messages 1 11 Description and countermeasure pragma pragma name amp HAN DLER both specified Both pragma pragma name and pragma HAN DLER are specified in one function Specify pragma pragma name and pragma HANDLER exclusive to each other pragma pragma name amp INTER RUPT both specified Both pragma pragma name and pragma INTER RUPT are specified in one function Specify pragma pragma name and pragma IN TERRUPT exclusive to each other pragma pragma name amp TASK both specified Both pragma pragma name and pragma TASK are specified in one function gt Specify pragma pragma name and pragma TASK exclusive to each other pragma pragma name format error The pragma pragma name is erroneously written Processing will be continued Write it correctly pragma pragma name format error ignored The pragma pragma name is erroneously written
29. Facility to declare Assembler macro function 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 nc308 command line option Wunknown_pragma WUP Appendix C 22 Appendix C Overview of C Language Specifications if elif else endif a a eS ee See Function Format Description Performs conditional compilation Examines the expression true or false ifAconstant expression selicdhistant expression weiss endif If the value of the constant is true not 0 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 ope
30. TEXT Stdaux mod BIN stdprn mod TEXT stdin func in sget stdout func in NULL Stdaux func in sget stdprn func in NULL stdin func out sput stdout func out sput Stdaux func out sput Stdprn func out pput ifdef UARTO speed _96 B8 PN _S2 else speed 96 B8 PN _S2 endif init prn Figure E 5 Source file of init function init c Appendix E 96 Appendix E Standard Library In systems using the two M16C 80 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 sgetO sputO 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 used for standard auxiliary I O used by UARTO Therefore only use functions that take streams as parameters Figure E 6 shows how to change the init func tion void init void omitted REN _IORW 2 set read write mode nae eas _TEXT lt 2 set text mode omitted Sih a ened _sget0 lt
31. func proto enter 02H mov w RO 2 FB H X ox line 5 C_SRC return i j k mov w 2 FB RO i add w 8 FB RO ME add w 10 FB RO NEA exitd El 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 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 r RJ MD FRAME i size offset 8 44 FRAME 3 size offset 10 FRAME i offset 12 Auto Size 0 Context Size 8 align line Il 4 C SRC glb _func_no_proto _func_no_proto enter 00H line 12 C SRC return i j k mOV W 8 FB RO fe od add w 10 FB RO i j add w 12 FB RO dk exitd E2 11 This passes all arguments via a stack t2 This is the start address of function func no proto Figure D 12 Compile Result of Sample Program sample c 2 3 Appendix
32. ii use of 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 Technol
33. omitted Assembler function GLB counter External declaration of C program s asm func global variable omitted MOV W 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 gd _fune int func pushm R0 R1 R2 R3 A PNSh registers MOV B 01H ROL omitted popm R0 R1 R2 R3 OPW registers rele Return to C program END Figure 3 18 Example Coding of Interrupt Processing Assembler Function NC308 MANUAL 62 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 When calling C language function RO register and register which used for return value are not saved in the C language function Therefor when calling C language function from Assemble language function
34. 2 int flag flag 0 3 printf flag d n flag 4 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 NC308 MANUAL 9 Chapter 1 Introduction to NC308 1 5 8 Assembly Language Source Files The assembly language source file is a file that can be processed by AS308 as a result of the compiler ccom308 converting the preprocess result C source file The output files are assembly language source files with the extension a30 Figures 1 9 and 1 10 are examples of the output files When the nc308 command line option dsource dS is specified the assembly language source files contain the contents of the C source file as comments LANG Cl UXs RX XK REV X H NC308 C Compiler OUTPUT ccom308 Version X XX XX T COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED 7 Compile Start Time Thu April 10 18 40 11A 1995 1996 1997 1998 1999 2000 2001 2002 2003 COM
35. Alarm for standard libraries which do not have prototype declaration Wno used argument WNUA Outputs a warning for unused argument of functions i Assemble and Link Options Table 2 9 shows the command line options for specifying as308 and In308 options Table 2 9 Assemble and Link Options Option Function as308A option Specifies options for the as308 link command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified In808A option Specifies options for the In308 assemble command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified NC308 MANUAL 19 dd Zeek Chapter 2 Basic Method for Using the Compiler Preparing the Startup Program For C language programs to be burned into ROM NC308 comes with a sample startup program written in the assembly language to initial set the hardware M16C 80 locate sections and set up interrupt vector address tables etc This startup program needs to be modified to suit the system in which it will be installed The following explains about the startup program and describes how to customize it Sample of Startup Program The NC308 startup program consists of the following two files 1 ncrt0 a30 Write a program which is executed immediately after reset T 2 sect308 inc Included from ncrt0 a30 this file defin
36. Examples SEIHOE BUT Member name Type Size Mapped location offset int d A i E i int 16 bits 0 int j C char 8 bits 2 H j int 16 bits 3 Figure B 66 Example Mapping of Structure Members 1 1 Inhibiting packing This NC308 extended function allows you to control the mapping of structure mem bers Figure B 67 is an example of mapping the members of the structure in Figure B 66 using pragma STRUCT to inhibit packing SHEuCEe Ed Member name Type Size Mapped location offset int dg char es l int 16 bits 0 int j C char 8 bits 2 k j int 16 bits 3 Padding char 8 bits Figure B 67 Example Mapping of Structure Members 2 As shown Figure B 67 if the total size of the structure members is an odd number of bytes 2pragma 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 Appendix B Extended Functions Reference Description 2 Arranging members This NC308 extended function allows you to map the all odd sized structure members first followed by even sized members Figure B 68 shows the offsets when the structure shown in Figure B 66 is arranged using pragma STRUCT Va E E 2 Membername Type Size Mapped location offset zu o i int 16 bits 0 int j j int 16 bits 2 lg C char 8 bits 4 Figure B
37. G 5 Example of utl308 use G 5 1 Generating a SBDATA declaration file a Generating a SBDATA declaration file You can output a SBDATA declaration file by means of causing the SBDATA declaration utility utl308 to process files holding information as to the state of using variables Fig G 4 shows an example of making entries in utl308 and Fig G 5 shows an example of SBDATA declaration file ut1308 ncrt0 x30 osbdata RET Prompt ncrt0 x30 Name of map file Figure G 4 Example utl308 Command Line pragma SBDATA Utility SBDATA Size 255 pragma SBDATA data3 Size 4 ref 2 pragma SBDATA data2 Size 1 ref 1 pragma SBDATA datal Size 2 ref 1 End of File 7 Size is size of data ref is 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 ina SBDATA Appendix G 11 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 b Adjustment in an instance in which SB declaration is made in asesembler If the SB area is used as a result of the sbsym declaration in an assembler routine you need to adjust the file generated by utl308 assem
38. INAV 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 fER Make register storage class available fno_align INA 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 fuse_DIV fUD This option changes generated code for divide operation In the entry version this option cannot be speci fied finfo None Outputs the information required for the Inspec tor STK Viewer Map Viewer and utl308 to the absolute module file x30 In the entry version this option cannot be speci fied fswitch table FST Generates a ROM table for a switch statement M82 None Generates object code for M32C 80 Series 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 llibraryfilename Specifies a library file that is used by In308 when linking files NC308 MANUAL 18 Chapter 2 Basic Method for Using the Compiler h Warning Op
39. If possible do not use gt or amp for comparing signed variables Use and for conditional judgements b fartype 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 option before compiling This helps to increase the code efficiency of the program extern int far array Size is unknown so subscripts are calculated as 32 bit values extern int far array 10 Size is within 64KB so access is more efficient Figure 3 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 NC308 MANUAL 54 Chapter 3 Programming Technique c Array Subscripts Array subscripts are type extended during operations according to th
40. 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 utl1308 sb308 ncrt0 x30 o sample M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED S type sample h pragma SBDATA Utility E SBDATA Size 255 pragma SBDATA z size 2 ref 2 omit pragma SBDATA vx size 2 ref 1 Output SPECIAL page Function declaration utl1308 sp308 ncrt0 x30 o sample M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED type sample h pragma SPECIAL PAGE Utility xy pragma SPECIAL 255 func size 200 ref 2 omit pragma SPECIAL 254 funcl size 200 ref 1 Appendix G 6 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 all Makes all gobal variables vaild Function When used simultaneously with the sb308 option Because the usage frequency is low SBDATA de
41. Register which should escaping in the calling function 1 Register RO 2 Register which use to return value 2 Register which should escaping in the entrance procedure of the called function Register use in called function neither RO nor use to return value Appendix D 15 Standard Librar E ET E 1 2 Appendix E Standard Library Standard Header Files When using the NC308 standard library you must include the header file that defines that function This appendix details the functions and specifications of the standard NC308 header files Contents of Standard Header Files NC308 includes the 15 standard header files shown in Table E 1 Table E 1 List of Standard Header Files Header File Name Contents assert h Outputs the program s diagnostic information ctype h Declares character determination function as macro errno h Defines an error number float h Defines various limit values concerning the internal representation of floating points limits h Defines various limit values concerning the internal processing of compiler locale h Defines declares macros and functions that manipulate program localization math h Declares arithmetic logic functions for internal processing setjmp h Defines the structures used in branch functions signal h Defines declares necessary for processing asynchronous interrupts stdarg h Defines declares the functi
42. String Handling Functions Function Compares character strings Format include lt string h gt int stremp s1 s2 Method macro or 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 Usually the program code described by macro is used for this function In using the function in a library please describe it as undef strcmp after description of include lt string h gt Example include lt string h gt undef strcmp lt By description of undef strcmp use of a library function becomes effective static char a macro static char b function void func void int result result strcmp b a Compares each byte 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 Appendix E 70 Appendix E Standard Library strcoll String Handling Functions Function Compares character strings using locale information Format include lt string h gt int strcoll s1 s2
43. 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 LANG 1C X XX XX REV X NC308 C Compiler OUTPUT ccom308 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 11A 1
44. This line will be ignored Write it correctly pragma pragma name not function ignored A name is written in the pragma pragma name that is not a function gt Write it with a function name pragma pragma name s function must be predeclared ignored A function specified in the pragma pragma name is not declared For functions specified in a pragma pragma name write prototype declaration in advance pragma pragma name s function must be prototyped ignored 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 pragma pragma name s function return type invalid ignored The type of return value for a function specified in the pragma pragma name is invalid Make sure the type of return value is any type other than stOect union or double pragma pragma name unknown switch ignored The switch specified in the pragma pragma name is invalid Write it correctly Appendix F 23 Appendix F Error Messages Table F 22 ccom308 Warning Messages 2 11 Warning message Description and countermeasure pragma pragma name variable initialized initialization ignored The variable specified in Zpragma pragma name is initialized The specification of pragma pragma name will be nullified Delete either pragma pragma name or the initial iz
45. after optimization val 20e250 M w 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 19 Appendix A Command Option Reference Ono stdlib ONS Function Suppresses inline padding of standard library functions modification 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 memopy 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 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 f
46. arbitrary real number ReturnValue Returns the square root of given real number x Appendix E 67 Appendix E Standard Library srand Integer Arithmetic Functions Function Imparts seed to a pseudo random number generating routine Format include lt stdlib h gt void srand seed Method 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 sscanf Input Output Functions Function Reads data with format from a character string Format include lt stdio h gt int sscanf string format argument Method function Argument const char far string Pointer of the input character string const char far format Pointer of the format specifying character string ReturnValue 6 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 68 Appendix E Standard Library strcat String Handling Functions Function Concatenates character strings Format include lt string h gt char far strcat s
47. argument You also cannot declare the functions returning structure or union types as the function s return values NC308 MANUAL 64 Chapter 3 Programming Technique 3 4 Other 3 4 1 Precautions on Transporting between NC Series Compilers NC3068 basically is compatible with Renesas 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 near far far Fixed NC79 near near far NC77 near near far 3 4 2 Precautions on Transporting between NC308 and NC30 a Differences in calling convention In NC308 the operation to save registers when calling a function is performed on the function calling side whereas this operation in NC308 is performed on the called side body of the function Therefore when calling an assembler function from a C language function in NC308 follow the procedure described below Conditions If there are some registers that may be destroyed by an assembler function
48. includeA lt file name gt 2 includeA file name 3 includeAidentifier Description t Takes in file name gt from the directory specified by nc308 s command line option I Searches file name from the directory specified by environment variable INC308 if it s not found 2 Takes in file name from the current directory Searches file name from the following directory in sequence if it s not found 1 The directory specified by nc308 s startup option l 2 The directory specified by environment variable INC308 3 lf the macro expanded identifier is 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 eee 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 ae ees 64 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 ftassert LEE NUN SM aa Function Issues a warning if a constant e
49. mOV W 4 SO s val Reference to static variable line 13 C SRC asm 3 Q f val r val mov w 2 FB R1 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 t does not restrict being assigned to a register even if it specifies a register qualified Appendix B 18 Appendix B B 2 6 Selectively suppressing optimization Extended Functions Reference In Figure B 34 the dummy asm function is used to selectively suppress a part of optimi zation 3 pragma ADDRESS port 02H struct port char bit0 1 char bitil char bit2 1 char bit3 1 char bit4 1 char bit5 1 char bitos1 char bit7 1 port Optimization results in any steps ae to set the two port bits separately being combined as one Step port bitO 0x01 port bitl 0x01 Optimization or b 03H _port port bit0 0x01 Optimization is suppressed Optimization gt iiia eet port bitl 0x01 Figure B 34 Example of Suppressing Optimization by Dummy asm Appendix B 19 Appendix B Extended Functions Reference B 2 7 Notes on the asm Function a Extended Features Concerning asm functions When using the asm function for the following processing be sure to use the format shown in the coding examples 1 Do not spe
50. monadic expression expression monadic expression lt lt expression monadic expression gt gt expression monadic expression amp expression monadic expression expression monadic expression expression assignment expression Comma operator expression monadic expression Appendix C 10 Appendix C Overview of C Language Specifications C 2 4 Declaration There are two types of declaration Variable Declaration Function 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 NC308 supports the following storage class specifiers extern auto typedef static egister 2 Type Declarator NC308 supports the type declarators e Bool char Qint short long ong long loat double unsigned signed struct union enum 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 2 in NC308 Declarator Pointer declarator2 Declarator2 identifier declarator declarator2 constant expression 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 A
51. 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 50 Appendix B Extended Functions Reference Appendix B Extended Functions Reference To facilitate its use in systems using the M16C 80 series NC308 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 Description near far qualifi 1 Specifies the addressing mode to access data ers 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 asm function Assembly language can be directly included in C programs It can also be included outside functions Example asm MOV W 0 RO 2 You can specify variable names within functions only Example 1 asm MOV W RO FB Example 2 asm MOV W RO s Example3 asm MOV W RO f 3 You can include dummy asm functions as a means of partially suppressing optimization within functions only Example asmi Japanese 1 Permits you to use Japanese characters in character strings characters Example LF 2 Permits
52. software int 18 UARTO receive interrupt lword dummy int uartl trance software int 19 UART1 send interrupt lword dummy int uartl receive software int 20 UARTl receive interrupt lword dummy int TIMER BO software int 21 Timer B0 interrupt omitted lword dummy int INT5 software int 26 External interrupt INT5 lword dummy int INT4 software int 27 External interrupt INT4 omitted lword dummy int uart2 trance NACK software int 33 UART2 NACK send interrupt lword dummy int uart2 receive ACK software int 34 amp UART2 ACK receive interrupt omitted lword dummy int Software int 63 dummy int is a dummy interrupt processing function Figure 2 30 Interrupt Vector Address Table sect308 inc The contents of the interrupt vectors varies according to the machine in the M16C 80 series See the User Manual for your machine for details Change the interrupt vector address table as follows 1 Externally declare the interrupt processing function in the GLB as308 pseudo in struction The labels of functions created by NC308 are preceded by the under score Therefore the names of interrupt processing functions declared here should also be preceded by the underscore 2 Replace the names of the interrupt processing functions with the names of inter rupt processing functions that use the dummy interrupt function name dummy int corresponding to the appropriate interrupt table in the v
53. statement The 2nd expression of the for statement has void Use the scalar type as the 2nd expression of the for statement function initialized An initialize expression is described for function declaration Delete the initialize expression function member declared A member of struct or union is function type Write the members correctly function returning a function de clared The type of the return value in function declara tion is function type gt Change the type to pointer to function etc function returning an array The type of the return value in function declara tion is an array type gt Change the type to pointer to function etc handler function called The function specified by pragma HANDLER is called Be careful not to call a handler identifier variable name is dupli cated The variable is defined more than one time Specify variable definition correctly if struct union statement The struct or union type is used in the expression of the if statement The expression must have scalar type if void statement The void type is used in the expression of the if statement The expression must have scalar type illegal storage class for argument inline ignored An inline function is declared in declaration state ment within a function Declare it outside a function illegal stora
54. 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 Examples pragma STRUCT TAG unpack struct TAG int a char Cy V Figure B 69 Example of 4pragma STRUCT Declaration Appendix B 41 Appendix B Extended Functions Reference B 7 3 Using Extended Functions for Target Devices NC308 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 nameAabsolute address Description The absolute address specified in this declaration is expanded as a character string in an assembler file and defined in pseudo instruction EQU The format for writing the numerical values therefore depends on the assembler as follows Append B or b to binary numbers Append O 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 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 valid for previously declared
55. Command File description _ gt g as308 I lt CR gt 0 lt CR gt sample lt CR gt lt CR gt Denotes carriage return Figure 2 5 Example Command File description NC308 MANUAL 13 2 1 3 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 No command file can be specified in another command file Multiple command lines can be written in a command file New line characters in a command file are replaced with space characters 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 In308 whose file name extension is cm are automatically gener ated in order for specifying files when linking Therefore existing files with the file name extension cm if any will be overwritten Do not use files which bear the file name extension cm along with this compiler You cannot specify two or more command files simultaneously If multiple files are specified the compiler displays an error message Too many co
56. 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 sym bol 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 P4 d FUNCTION main 44 d FRAME AUTO sum size 2 offset 2 pt d ARG Size 0 Auto Size 2 Context Size 8 align line 16 SHE C SRC glb main main enter 02H line 18 rx C SRC 2 sum func proto l 2 3 push w 0003H push w 0002H mov w 0001H RO jsr S func proto add 1 04H SP 11 12 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 assembly language program that is produced when the program shown in Figure D 14 is compiled int funnel ant int pint void main void int i 0x1234 lt Argument to func int 0x5678 lt Argument to func j int k 0x9abc Argument to func k f
57. Depends on amount of available memory Maximum number of parameters per function call and per function Depends on amount of available memory Maximum number of parameters or macro call parameters per macro 31max Maximum number of characters in character string literals after concatenation Depends on amount of available memory Maximum size in bytes of object Depends on amount of available memory Maximum number of members per structure union Depends on amount of available memory Maximum number of enumerator constants per enumerator Depends on amount of available memory Maximum number of levels of nesting of structures or unions per struct declaration list Depends on amount of available memory Maximum number of characters per character string Depends on operating system Maximum number of lines per file Depends on amount of available memory Appendix C 3 Appendix C Overview of C Language Specifications C 2 Standard Language Specifications The chapter discusses the NC308 language specifications with the standard language specifications C 2 1 Syntax This section describes the syntactical token elements In NC308 the following are processed as tokens Key words Identifiers Constants Character literals Operators e Punctuators Comment a Key Words NC308 interprets the followings as key words Table C 6 Key Words List _asm default int switch _far do long
58. Example 1 int far ptrl Example 2 int far ptr2 Figure B 7 Example of Declaring a Pointer Type Variable 1 2 As explained earlier unless near and far is specified the compiler handles the variable location as near and the variable type as far Therefore Examples 1 and 2 respectively are interpreted as shown in Figure B 8 Example 1 int far near PEEL Example 2 int far 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 4 byte variable that indicates the int type variable located in the far area The variable itself is located in the far area Memory mappings for Examples 1 and 2 are shown in Figure B 9 int far ptri int far ptr2 tr1 n si Abytes l 4bytes far area far area E M a 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 and far Control by nc308 Command Line Options NC3068 handles functions as
59. JC 5 JC 0 L 3S JC 1 2 L E JC 2 L JC 3 L BR 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 NC308 allows you to define default values for the arguments of functions in the same way as with the C facility This chapter describes NC308 s facility to declare the default arguments of functions B 4 1 Overview of Default Argument Declaration of Function NC308 allows you to use implicit arguments by assigning parameter default values when declaring a function s prototype By using this facility you can save the time and labor that would otherwise be required for writing frequently used values when calling a 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 specifierAType 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 sh
60. M32C 80 M16C 80 Series NC308 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 85308 N N neort0 a30 sample c Cpp308 sample c o sample i DM16C DNC308 ccom308 sample i o sample a30 g as308 N N sample a30 1n308 ncrt0 r30 sample r30 G MS ms o sample omitted ls sample W r r 1 toolusr 2850 Aug 17 14 51 sample c Ewer 1 toolusr 44040 Aug 17 15 47 sample x30 o 1 toolusr 8310 Aug 17 15 47 sample map e Na Notes Do not specify the In308 options G O ORDER L T V or file Appendix A 48 Command Option Reference Appendix A For reference the following table lists the options for In308 which is part of the AS308 package Option 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 AS308 in a batch file etc Do not specify this option in the option In308 E Specifies the start address of an absolute object module G Outputs source debug information to an absolute file Do not specify this option L Specifies the library file name to be referenced 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
61. MR908 Extended FUNCIONS cs iouis pid iebaeides Rageitaneme cheat at ote 35 d The Other Extensions sxc seer fete RM dnce dee DER pedo via ec euin 35 B 7 2 Using Memory Mapping Extended Functions ssssseeennem 36 B 7 3 Using Extended Functions for Target Devices eene 42 B 7 4 Using MR308 Extended Functions ote rrr terret tpe etui p ines 50 B 7 5 The OUSMEXTSNSIONS 525 titio ene e doct atu tfesh andi etude cute reed 54 B 8 assembler Macro FUICHOL iiic nienean te deseti d sieut e diese ao 59 B 8 1 Outline of Assembler Macro Function essessseseeeeeeeneeenneeenneenennene 59 B 8 2 Description Example of Assembler Macro Function seee 59 NC308 MANUAL VIII B 8 3 Commands that Can be Written by Assembler Macro Function sssss 60 C 1 C 2 C 3 Pertormiance SpeclfiGallOgiS eus atr pa na e Mega Doy a ve seruus Fa pde te ences Heat 1 C 1 1 Overview of Standard Specifications sse 1 C 1 2 Introduction to NC308 Performance essssssssssseeeeeeeee teens 2 FECE Sec E 2 b C SolfceTile Coding Specifications crei ect E ni 2 es INGSOB SDEGIIDAIOUISkessr ia iuastt iot et e N Eana 3 Standard Language SpecifICatioriS rasiri erais oneni ater e tna Egan Leer egg 4 72 1 SSVTILaX coder iom ires die cde fiiam rere cc HT opc fedet ree teeter ert 4 a Key VWODUSi enituit at Mt OA iip nU Duce stu Lu d
62. Modifiers For the M16C 80 series microcomputers the addressing modes used for referencing and locating data vary around the boundary address OFFFFH NC308 allows you to control addressing mode switching by near and far qualifiers B 1 1 Overview of near and far Modifiers The near and far qualifiers select an addressing mode used for variables or functions near modifier Area of 000000H to OOFFFFH far modifier Area of 000000H to OFFFFFFH The near and far modifiers are added to a type specifier when declaring a variable or function If you do not specify the near or far modifiers when declaring variables and func tions NC308 interprets their attributes as follows Variables e onere coe desees near attribute const qualified constants far attribute Functions eeeeeR mme far attribute Furthermore NC308 allows you to modify these default attributes by using the startup options of compile driver nc308 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
63. Module Converter 1mc308 for M32C 80 M16C 80 Series Version K XX XX core X XX XX Cross Referencer xrf308 for M32C 80 M16C 80 Series Version X XX XX Absolute Lister abs308 for M32C 80 M16C 80 Series Version X XX XX D MTOOL nc308wa 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 using this option the package may not have been installed correctly See the M3T NC308WA Guide for details of how to install the NC308 package Notes 1 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 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
64. Output the absolute module file nc308 ncrt0 a30 finfo sample c lt RET gt M32C 80 M16C 80 Series NC308 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 utl308 sb308 ncrt0 x30 o sample lt RET gt M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Output SPECIAL page Function declaration utl308 sp308 ncrt0 x30 o sample lt RET gt M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED RET Means entering the return key Figure G 3 Example utl308 Command Line G 2 2 Selecting Output Informations To select outputs between SBDATA declaration and SPECIAL page function declara tion in utl308 specify the options described below If neither option is specified an error is assumed for utl308 1 Output SBDATA declaration Option sb308 2 Output SPECIAL page Function declaration Option sp308 Table G 3 shows the sbutl command line options Appendix G 3 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 G 2 3 utl308 Command Line Options The follow
65. P opt Only the first array can be omitted from constant expressions showing the number of arrays opt indicates optional items The list of dummy arguments is replaced by a list of type declarators in a prototype declaration Figure C 5 Format of Declaration Specifier 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 NC308 supports the following Labelled Statement Compound Statement Expression Null Statement Selection Statement iteration Statement Jump Statement Assembly Language Statement a Labelled Statement Use the format of labelled statement shown in Figure C 7 Identifier statement case constant statement default statement Figure C 7 Format of Labelled Statement 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 p 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 o
66. 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 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 amp a test1 int bj p 9 a 10 b p 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 15 Appendix A Command Option Reference O125 Notes When the O5 optimizing options is used the compiler generates in some cases BTSTC or BTSTS bit manipulation instructions In M16C the BTSTC and BTSTS bit manipulation instructions are prohibited from rewriting the con tents of the interrupt control
67. 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 amp When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization strtoul Character String Value Convert Function Function Converts a character string into an unsigned long type integer Format Hinclude 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 DASE ntt 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 81 Appendix E Standard Library strxfrm Character String Value Convert Functions Function Converts a character string using locale information Format Hinclude lt string h gt size_t strxfrm s1 s2 n Method function Argument char far s1 P
68. Settings When Not Using Memory Management Functions 34 8 Notes on Writing Initialization ProgfFalYis esci eter coepto ementi ie ttes 34 d SEUNG INE Stack SectiomuelZG cu sadip cc DER DER IER I Ep iu pe I ucc Erie 35 Gs Heap Secim SZE EET 35 f Setting th intetrupt Vector table ciprian itani a 35 q Seting the Processor Mode Register sssssssisisisisnssnuiiinssis antesthewiashenegaaieastaisonts 36 2 2 3 Customizing for NC308 Memory Mapping cscccesceeeeeceseeceeeeeaeeseeeeeaeeeeaeeeaeeseeeeenees 37 a SSUMUCTURS OLS SCUOMS iu ee Eq Free HE Swed aged HD coed cates HIS qu SER eap S OTRE 37 b QOutline oft memory mapping setup TS ssiri etr tnr eter thee terroir E 41 c Moditylagrthie Sect 0B TIO uisi ripa eres id cc antacid Sp res Pat repo teed dapes tee HEP E 41 d Mapping and Order Sections and Specifying Starting Address 42 1 Rules for Mapping Sections to MeMONy ernearen eset meti tras i drops 42 2 Example Section Mapping in Single Chip Mode sees 44 e Sening Interr pt Vector Table uci orare nan ctore eo De even dete tree yeh Eanna 47 t Setting SPEGIAL Page Vector Table rei eere cti foo ecce voter tries 48 iore 49 3 1 1 Notes about Versionsup of compiler cidit ttr tri rte er tiis r Ensin 49 3 1 2 Notes about the M16C s Type Dependent Part 50 9 44 89 AboUPODLUTIZAOE s icio eril imet oen EO nM erre meridie i
69. TION uses interrupt A section name interrupt cannot be used Change it to another sorry get stack s address but DT not 0 NC77 NC79 only 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 Declare the variable as a far type size of incomplete type 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 size of incomplete array type An attempt is made to find sizeof of an array of unknown size This is an invalid size Specify the size of the array size of void An attempt is made to find the size of void This is an invalid size gt The size of void cannot be found standard libraly ifunction name i need iinclude file name This standard library function is used without its header file included Be sure to include the header file static valuable in inline function static data is declared within a function that is declared in storage class inline Do not declare static data in an inline function string size bigger than array size The size of the initialize expres
70. You can specify up to 16 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 Short form dS Generates an assembly language source file extension a30 with a C language source list output as a comment Not deleted even after assembling dsource_in_list Short form dSL In addition to the dsource function generates an assembly lan guage list file Ist 1 If you do not specify command line options c E P or S nc308 finishes at and output files up to the absolute load module file 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 kamola nc308 c sample c exa ple M32C 80 M16C 80 Series NC308 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 rw r 1 toolusr 450 Aug 17 11 28 sample r30 P Notes If this op
71. acters 85 redefined A previously defined macro was redefined with different contents Check the contents against those in the previous definition 87 within comment A comment includes Do not nest comments 88 Environment variable NCKIN must be SJIS or EUC Environment variable NCKIN is not valid Set SJIS or EUC to NCKIN Appendix F 8 Appendix F Error Messages F 5 ccom308 Error Messages Tables F 8 to F 20 list the ccom308 compiler error messages and their countermeasures Table F 8 ccom308 Error Messages 1 14 Error message Description and countermeasure pragma PRAGMA name function name redefined The same function is defined twice in pragma name Make sure that pragma name is declared only once pragma PRAGMA name function argument is long long or double 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 name Use other types pragma PRAGMA name amp func tion prototype mismatched The function specified by pragma PRAGMA name does not match the contents of argument in prototype declaration Make sure it is matched to the argument in proto type declaration pragma PRAGMA name s function a
72. 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 mapfile xx map M82 Generates object code for M32C 80 Series NOSTOP Outputs all encountered errors to the screen O Specifies an absolute file name Do not specify this option in the option In308 ORDER Specifies the addresses of sections and the order in which they are ar ranged Do not specify this option in the option In308 T Outputs a link error tag file Do not specify this option in the option In308 V Displays the version of the linkage editor Do not specify this option in the option In308 file Specifies command file Do not specify this option in the option In308 You can specify the assembler s option to use option In308 using nc308 In this case do not specify the In308 options G O ORDER L T V or file Appendix A 49 Appendix A Command Option Reference A 3 Notes on Command Line Options A 3 1 Coding Command Line Options The NC308 command line options differ according to whether they are written in 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 NC308 command line the S option takes
73. after You specified a space between the option and its parameter Delete the space between the option and its param eter Invalid option o No output filename was specified after the o option Specify the name of the output file Do not specify the filename extension Appendix F 2 Appendix F Error Messages Table F 2 nc308 Error Messages 2 2 Error message Description and countermeasure Invalid suffix xxx You specified a filename extension not recognized by NC308 other than c i a30 r30 x30 Specify the filename with the correct extension No such file or directory The processing system will not run Check that the directory of the processing system is correctly set in the environment variable Not enough core 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 Permission denied The processing system will not run Check access permission to the processing systems Or if access permission is OK check that the direc tory of the processing system is correctly set in the environment variable can t open command file Can not open the command file specified by Specify the correct input file too many options This error message is not normally displayed It is an in
74. and conversion Interprets code 0x1A as the end code and ignores any subsequent data Appendix E 62 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 ei Converts signed decimal octal and hexadecimal input Octals start with O Hexadecimals start with Ox or OX The target parameter must be a pointer to an integer eu Converts an unsigned decimal The target parameter must be a pointer to an un signed integer eo Converts a signed octal The target parameter must be a pointer to an integer ex 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 0 The target parameter must be a pointer to a character array of sufficient size to store the character string includ ing the null character O If input stops when the maximum field width is reached the character string stored consists of the characters to that point plus the ending null character ec 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 O is not included The target parameter must be a pointer to a character array of sufficient s
75. attached to M3T NC308WA Professional version Professional use compiler for full scale programming Entry version Simplified compiler included in the starter kit etc Description of Symbols The following symbols are used in the NC308 manuals Symbol Description Root user prompt 96 UNIX prompt A gt MS Windows TM prompt lt RET gt Return key lt gt Mandatory item Optional item A Space or tab code mandatory A Space or tab code optional Indicates that part of file listing has been omitted omitted Additional descriptions are provided where other symbols are used NC308 MANUAL XII NC308 User s Manual NC308 MANUAL XIII 1 1 Chapter 1 Introduction to NC308 Chapter 1 Introduction to NC308 This chapter introduces the processing of compiling performed by NC308 and pro vides an example of program development using NC308 NC308 Components NC308 consists of the following eight executable files Nec dan Compile driver ROPP SOG Preprocessor 3 660Il9UB r oa ates saepe EM EM Compiler LE PD Assembler Optimizer 5 StkViewer amp stk esses STK viewer amp stack size calculation Utility StkViewer is a GUI Graphical User Interface Utility 6 utl308 SBDATA declaration a
76. between pragma ASM and pragma ENDASM that is processed by the C preprocessor Appendix B 54 Appendix B Extended Functions Reference pragma JSRA Function Calls a function using the JSR A instruction Syntax pragma JSRAAfunction name Description Calls all functions declared using pragma JSRA using the JSR A instruction pragma JSRA can be specified to avoid errors in the case of functions that include code generated using the fUSRW option and that cause errors during linking Rules This preprocessing directive has no effect when the fJSRW option not specified Example extern void func int i pragma JSRA func void main void func 1 M Figure B 83 Example of pragma JSRA Appendix B 55 Appendix B Extended Functions Reference pragma JSRW Function Calls a function using the JSR W instruction Syntax pragma JSRWAfunction name Description By default the JSR A instruction is used when calling a function that in the same file has no body definition However the pragma JSRw declared function are always called using JSR W This directive helps reduce ROM size Rules 1 You may NOT specify pragma JSRW for static functions 2 When function call with the JSR W instruction does not reach pragma JSRW de clared function an error occurs at link time In this case you may not use pragma JSRW Example
77. can be represented 37 as a float type floating point numeric value FLT_MIN_EXP Maximum value of the power of the radix that can be repre 125 sented as a float type floating point numeric value FLT_RADIX Radix of exponent in floating point representation 2 FLT ROUNDS Method of rounding off a floating point number 1 Rounded to the nearest whole number Appendix E 3 limits h Appendix E Standard Library Function Defines the limitations applying to the internal processing of the compiler The following lists the macros that define these limits Macro name Contents Defined value MB LEN MAX Maximum value of the number of multibyte charac 1 ter type bytes CHAR BIT Number of char type bits 8 CHAR MAX Maximum value that a char type variable can take 255 on as value CHAR MIN Minimum value that a char type variable can take 0 on as value SCHAR MAX Maximum value that a signed char type variable 127 can take on as value 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 32767 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 as value SHRT MAX Maximum value that a short int type variable can 32767 take on as value SHRT MIN Minimum value that a short int type variable can 32768 take
78. char far format Pointer of the format specifying character string Return Value Returns the number of characters output Returns EOF if a hardware error occurs Description Argument is converted to a character string according to format and output to the stream Interprets code 0x1A as the end code and ignores any subsequent data Format is specified in the same way as in printf fputc Function Outputs one character to the stream Format include lt stdio h gt int fputc c stream Method function Argument int C eeeeeeeees Character to be output FILE far stream Pointer of the stream ReturnValue 6 Returns the output character if output normally Returns EOF if an error occurs Description 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 frea
79. character string to be concatenated from Sizet Dcautetnia is Number of characters to be concatenated ReturnValue Returns a pointer to the concatenated character string area Description Concatenates character strings si and n characters 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 75 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 tn Number of characters to be compared ReturnValue 6 ReturnValue 0 The two character strings are equal e Return Value 0 The first character string s1 is greater than the other e ReturnValue oO 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
80. ck ck ck ck kk kk kk Sk KKK kk kk kk ck ck oko ck ck koc koc kk kc Sk ck kk kk ck ck ck ck ko kk kk C COMPILER for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED H Written by X XXXXXXXX sect308 inc section definition This program is applicable when using the basic I O library H Id sect308 inc v 1 11 20xx 06 18 10 08 54 XXXXXX Exp skikt KK KK KK KK KK KK KK KK KK KK KK KK kk KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KK KKK SBDATA area Section data SE DATA org 400H data SE top Section bss SE DATA ALIGN bss SE top Section data SO DATA data SO top Section bss SO DATA bss SO top near RAM area Section 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 ALIGN blkb STACKSIZE align Stack top blkb ISTACKSIZE align istack top if HEAP 1 section heap DATA heap_top blkb HEAPSIZE endif Figure 2 27 Listing of sect308 inc in Single Chip Mode 1 3 NC308 MANUAL 44 Chapter 2 Basic Method for Using the Compiler Section rom NE ROMDATA ALIGN rom NE top Section rom NO ROMDATA rom NO top SBDATA area for pragma SBl6DATA section data_SE DATA You can re i 0rg 10000H move this part n encnT
81. dec laration Write it correctly pragma JSRA illegal location ignored NC30 NC308 only Do not put pragma JSRA inside function scope Write pragma JSRA outside a function pragma JSRW illegal location ignored NC30 NC3068 only Do not put pragma JSRW inside function scope Write pragma JSRW outside a function pragma PARAMETER function s address used The address of function specified pragma PA RAMETER is assigned to the pointer variable As don t assign write correctly Appendix F 24 Appendix F Error Messages Table F 23 ccom308 Warning Messages 3 11 Warning message Description and countermeasure pragma control for function dupli cate ignored NC30 NC308 only 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 pragma unknown switch ignored Invalid switch is specified to pragma pragma declaration is ignored Write switch correctly auto is illegal storage class An incorrect storage class is used Specify the correct storage class register is illegal storage class An incorrect storage class is used Specify the correct storage class argument is define by typedef typedef ignored Specifier typedef is used in argument declara tion Specif
82. declaration for the C function You may NOT specify registers Calling the C function Figure B 74 Example of pragma INTCALL Declaration C language functuion 2 Appendix B 46 Appendix B Extended Functions Reference pragma INTERRUPT pragma INTF Function Declares an interrupt handler Syntax pragma INTERRUPTA B E F Ainterrupt handler name Description By using the above format to declare interrupt processing functions written in C NC308 generates the code for performing the following interrupt processing at the entry and exit points of the function In entry processing all registers of the Micro Procesor are saved to the stack In exit processing the saved registers are restored and control is returned to the calling function by the REIT instruction 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 sur
83. entry when calling the function Always put the prototype declaration for the assembler function before the pragma Rules PARAMETER declaration If you fail to make the prototype declaration a warning is output and pragma PARAMETER is ignored 2 Follow the following rules in the prototype declaration a Note also that the number of parameters specified in the prototype declaration must match that in the pragma PARAMETER declaration b The following types cannot be declared as parameters for an assembler function in a pragma PARAMETER declaration 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 pragma PARAM tz TE ER in C language Example int asm_func unsigned int unsigned int Prototype declaration for pragma PARAMETER asm func RO R1 the assembler function void main int dy i Ox7FFD j 0x007F asm func i j Calling the assembler function M Figure B 76 Example of pragma PARAMETER Declaration Appendix B 48 Appendix B Extended Functions Reference pragma SPECIAL Function Declares a special page subroutine call JSRS instruction function Syntax pragma SPECIA
84. example macro definitions NC308 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 nc308 c silent sample c example sample c Appendix A 6 Appendix A Command Option Reference dsource dS 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 Function n addition to the 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 In
85. find the size of void This is an invalid size The size of void cannot be found Sorry stack frame memory ex haust max 128 bytes but now nnn bytes NC30 NC308 only 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 Sorry stack frame memory ex haust max 64 or 255 bytes but now nnn bytes The stack frame maximum is follows 64 bytes NC79 255bytes NC308 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 Sorry compilation terminated because of these errors in function name An error occurred in some function indicated by function name Compilation is terminated Correct the errors detected before this message is output Sorry compilation terminated because of too many errors Errors in the source file exceeded the upper limit 50 errors Correct the errors detected before this message is output struct or enum s tag used for union The tag name for structure and enumerated type is used as a tag name for union Change the tag name struct or union s tag used for enum The tag name for structure and union is used as a tag name for enumerated type Change the tag name struct or union enum does not have long or sign Type
86. function called The function specified by pragma HANDLER is called Be careful not to call a handler handler function can t return value The function specified by pragma HANDLER is using a returned value The function specified by pragma HANDLER cannot use a returned value Delete the return value handler function has argument The function specified by pragma HANDLER is using an argument The function specified by pragma HANDLER cannot use an argument Delete the argument hex character is out of range The hex character in a character constant is ex cessively long Also some character that is not a hex representation is included after V Reduce the length of the hex character identifier member name is dupli cated this declare ignored The member name is defined twice or more This declaration will be ignored Make sure that member names are declared only once identifier variable name is duplicate The variable name is defined twice or more This declaration will be ignored Make sure that variable names are declared only once identifier variable name is shad owed The auto variable which is the same as the name declared as an argument is used Use any name not in use for arguments illegal storage class for argument extern ignored An invalid storage class is used in the argument list of function definition Specify t
87. 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 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 17 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 1
88. gt char far strncpy s1 s2 n Method function Argument char far s1 Pointer to the character string to be copied to const char far s2 Pointer to the character string to be copied from Size tn Number of characters to be copied ReturnValue 6 Returns a pointer to the character string at the destination of copy Description Copies n characters from character string s2 to area s1 If character string 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 76 Appendix E Standard Library strnicmp 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 T M etas 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
89. 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 option when you want the RAM data to be located in other areas than the near area 64 Kbyte area Appendix A 29 Appendix A Command Option Reference fnear_ROM NROM Function Change the default attribute of RAM data to far In the entry version this option cannot 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 fnear pointer fNP Function Specified the default attribute of the pointer type variables to near This option specifies the 16 bits size data to pointer type In the entry version this option cannot be specified Supplement The pointer size of C language pointer type variables by default is 32 bits 24 bits in effect Use this option when you want to change the pointer size to 16 bits B
90. 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 intb 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 These sections are mapped to memory according to the settings in the startup pro gram include file sect308 inc You can modify the include file to change the mapping NC308 MANUAL 38 Chapter 2 Basic Method for Using the Compiler Figure 2 24 1 2 shows the how the sections are mapped according to the sample startup program s include file sect308 inc Also Figure 2 24 2 2 shows the how the sections are mapped according to the sample startup program s include file sect308 inc used pragma SB16DATA Extended Func tions See the B 7 pragma Extended Functions and 2 2 1 f pragma SB16DATA for the pragma SB16DATA Extended Functions 000
91. more than twice Write near correctly Appendix F 9 Appendix F Error Messages Table F 9 ccom308 Error Messages 2 14 Error message Description and countermeasure static is illegal storage class for argument An appropriate storage class is used in argument declaration gt Use the correct storage class volatile is duplicate volatile is described more than twice Write the type qualifier correctly can t read C source from filename line number for error message 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 can t open C source filename for error message The source file in error cannot be opened Check whether the file exists argument type given both places Argument declaration in function definition over laps an argument list separately given Choose the argument list or argument declara tion for this argument declaration array of functions declared The array type in array declaration is defined as function Specify scalar type struct union for the array type array size is not constant integer The number of elements in array declaration is not a constant Use a constant to describe the number of ele ments asm s string must have only 1 b b is describ
92. ncrt0 a30 sample c M32C 80 M16C 80 Series NC308 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 2 9 ls total 65 drwxr x 2 toolusr 512 Aug 17 16 13 drwxrwxrwx 11 toolusr 3584 Aug 17 16 14 rw r 1 toolusr 44040 Aug 17 16 14 ncrt0 a30 n this example the option is used to specify that ncrt0 a30 are output to directory test sample 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 command 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 nc308 c v sample c examp
93. 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 fCE 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 fFRAM Changes the default attribute of RAM data to far 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 NC308 MANUAL 17 Chapter 2 Basic Method for Using the Compiler Table 2 6 2 2 Generated Code Modification Options Option Short form Description fnear ROM INROM Changes the default attribute of ROM data to near In the entry version this option cannot be speci fied fnear pointer fNP Specified the default attribute of the pointer type variables to near In the entry version this option cannot be speci fied fconst_not_ROM fCNR Does not handle the types specified by const as ROM data fnot address volatile
94. number of specified characters that are found in the other character string strstr Searches the specified character from a character string strtok Divides some character string from a character string into tokens Length strlen Calculates the number of characters in a character string Convert strerror Converts an error number into a character string strxfrm Converts a character string using locale information Initialize bzero Initializes a memory area by clearing it to zero Copy bcopy Copies characters from a memory area to another memcpy Copies characters n bytes from a memory area to another memset Set a memory area by filling with characters Compare memcmp 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 per T P Function Declares the functions necessary to indicate the current calendar time and defines the type Appendix E 9 E2 E 2 1 Appendix E Standard Library Standard Function Reference Overview of Standard Library NC308 has 119 Standard Library items Each function can be classified into one of the following 11 categories according to its function 1 String Handling Functions Functions to copy and compare character strings etc 2 Character Handling Functions Functions to judge letters and decimal characters etc and to co
95. of stream ReturnValue 6 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 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 Function Reads one character from the stream Format include lt stdio h gt int fgetc stream Method function Argument FILE far stream Pointer of stream ReturnValue Returns the one input character Returns EOF if an error or the end of the stream is encountered Description Reads one character from the stream Interprets code 0x1A as the end code and ignores any subsequent data Appendix E 28 Appendix E Standard Library fgets 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 JL VS esses eee ec eraut 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
96. optimizing program execution speed and ROM capacity Table 2 5 Optimization Options 1 2 Option Short form Function O 1 5 None Maximum optimization of speed and ROM size OR None Maximum optimization of ROM size followed by speed OS None 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_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 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 Oloop_unroll oop 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 ONA Inhibits starting the assembler optimizer aopt308 Ocompare byte to word OCBTW _ Compares consec
97. 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 Cannot analyze error This error message is not normally displayed It is an internal error Contact Renesas Solutions Corp Command file line characters exceed 2048 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 Core dump command name 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 Exec format error Corrupted processing system executable file hReinstall the processing system Ignore option You specified an illegal option for NC308 9Specify the correct option illegal option You specified options greater than 100 characters for as308 or In308 Reduce the options to 99 characters or less Invalid argument This error message is not normally displayed It is an internal error OContact Renesas Solutions Corp Invalid option The required parameter was not specified in option Specify the required parameter
98. 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 c1 c2 2 C3 Figure D 9 Example of C Program To generate code that maximizes code efficiency and maximizes speed NC308 does not by default extend char types to int types The default can however be overridden using the nc308 compile driver command line option fansi or fextend to int fETI to achieve the same sign extension as in standard C If you do not use the fansi or fextend to int fETI option and your program assigns the result of a calculation to a char type as in Figure D 9 make sure that the maximum or minimum value for a char type does not result in an overflow in the calculation 1 The ranges of values that can be expressed as char types in NC308 are as follows unsigned char type 09255 signed char type sssss 128 127 Function Call Rules Rules of Return Value When returning a return value from a function the system uses a register to return that value for the integer pointer and floating point types Table D 4 shows rules on calls regarding return values Table D 4 Return Value related Calling Rules Type of Return Value Rules
99. 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 after 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 57 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 c 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 Lorh d i 0 u x X and n conversion is performed on long int and unsigne
100. redefine function function name The function indicated by function name is defined twice The function can be defined only once Change the name for either of the two functions redefinition tag of enum tag name An enumeration is defined twice Make sure that enumeration is defined only once redefinition tag of struct tag name A structure is defined twice Make sure that a structure is defined only once redefinition tag of union tag name union is defined twice Make sure that a union is defined only once reinitialized of variable name An initialize expression is specified twice for the same variable Specify the initializer only once restrict is duplicate A restrict is defined twice Make sure that a restrict is defined only once Appendix F 19 Appendix F Error Messages Table F 19 ccom308 Error Messages 12 14 Error message Description and countermeasure size of incomplete array type An attempt is made to find sizeof of an array of unknown size This is an invalid size Specify the size of the array size of incomplete type 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 gt Define the structure or union first size of void An attempt is made to
101. 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 BTSTC instruction is generated at compilation which prevents an interrupt request bit from being processed correctly resulting 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 0055h M16C 80 MCU s Timer A0 interrupt control register struct char ILVL 3 char IR EMO An interrupt request bit char dmy 4 TAOIC void wait until IR is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 Please compile after taking the following measures if the manipulation 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 16 Appendix A Command Option Reference OR Function Optimizes ROM size in preference to speed This option can be specified with
102. result strcpy b a 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 may selects functions with good code efficiency by optimization Appendix E 72 Appendix E Standard Library strcspn 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 s 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 73 Appendix E Standard Library stricmp String Handling Functions Function Compares character strings All alohabets 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 a
103. save RO register and register which used for return value befor calling C language func tion 3 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 NC308 MANUAL 63 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 function from which it was called c Notes on Handling General purpose and Address Registers When changing the contents of general purpose registers R1 R2 and R3 except for RO and the address registers AO and A1 in an assembler function it is necessary to save them on the stack at the beginning procedure of the assembler functi
104. searched in Int 362 ela niis animales Character to be searched for ReturnValue Returns the position of character c that is last encountered in character string s Returns NULL when character string s does not contain character c Description amp Searches for the character specified in c from the end of area s You can search for O When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization strspn 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 s 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 6 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 O When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 78 Appendix E Standard Library strstr String Handling Functions Function Searches the specified character from a character strin
105. specifiers long or signed are used for the struct union enum type specifiers gt Write the type specifier correctly switch s condition is floating The float type is used for the expression of a switch statement gt Use the integer type or enumerated type switch s condition is void The void type is used for the expression of a switch statement gt Use the integer type or enumerated type switch s condition must integer Invalid types other than the integer and enumer ated types are used for the expression of a switch statement gt Use the integer type or enumerated type Appendix F 20 Appendix F Error Messages Table F 20 ccom308 Error Messages 13 14 Error message Description and countermeasure syntax error This is a syntax error Write the description correctly System Error t does not normally occur This is an internal error This error may occur pursuant to one of errors that occurred before it f this error occurs even after eliminating all er rors that occurred before it please send the con tent of the error message to Renesas Solutions Corp as you contact too many storage class of typedef Storage class specifiers such as extern typedef static auto register are described more than twice in declaration Do not describe a storage class specifier more than twice type redeclaration of variable name The variable is de
106. sssseeeeeeenene 23 B 3 4 Using Japanese Characters as Character Constants ssssssssesss 24 B 4 Default Argument Declaration of Function essent 25 B 4 1 Overview of Default Argument Declaration of Function sees 25 B 4 2 Format of Default Argument Declaration of Function sse 25 B 4 3 Restrictions on Default Argument Declaration of Function ssseseess 27 BS inline F ncdon Declaran insegni ent ado qe i eec Poi ded o ea p erae 28 B 5 1 Overview of inline Storage Class nennen nnne 28 B 5 2 Declaration Format of inline Storage Class seen 28 B 5 3 Restrictions on inline Storage Class teni iiec ceca tdisa ck ecdi tc eonennet 30 B6 EXTENSION of COMMONS nus oectursascia tee coctus tede nee a ee oc toan duane 32 B 6 1 Overview Of COMMEN S ieies eared edie ie e Pee eels 32 B 6 2 Comment V OMA ze cire riter oreet arean Te eaae ne HE vanes ceases EE ERR Ce ER eet E FED SESS 32 B 6 9 Pronty ol 390g 4 8 cessi acuti Dorskeseete scents state ins deat int e RSEN er aed AERE ict es uiu Tera 32 B f Zpiagma Extended FUNCIONS eoo oiii are ties aoaaa 33 B 7 1 Index of pragma Extended Functions eesessssesseseeeeeeeneeeneennnenne 33 a Using Memory Mapping Extended Friction s suo cios inttr Ere obe cote Aloe atedede 33 b Using Extended Functions for Target DeviQes eooie oreet teni es 33 Gc Using
107. standard include files Appendix E 6 stdio h Appendix E Standard Library Function Defines the FILE structure stream name and declares I O function prototypes Proto type declarations are made for the following functions Type Function Contents Initialize init Initializes M16C 80 family input outputs clearerr Initializes clears error status specifiers Input fgetc Inputs one character from the stream getc Inputs one character from the stream getchar Inputs one character from stdin fgets Inputs one line from the stream gets Inputs one line from stdin fread Inputs the specified items of data from the stream scanf Inputs characters with format from stdin fscanf Inputs characters with format from the stream sscanf Inputs data with format from a character string Output fputc Outputs one character to the stream putc 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 fflush Flushes the stream of an output buffer fprintf Outputs characters with format to the stream sprintf Writes text with format to a character string vfprintf Output to a stream with format vprintf Output to stdout with forma
108. the sample program smp c is compiled using NC308 and the assembly language source program Introduction to Output Files With the specified command line options the nc308 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 AS308 User Manual for the relocatable object files extension r30 print files extension Ist and map files extension map output by as308 and In308 C language source file Preprosesser nc308 command option nc308 command option Assembly language source file Assembler nc308 command option Relocatable object file Linker Absolute module file C D output file of nc308 Figure 1 5 Relationship of nc308 Command Line Options and Output Files NC308 MANUAL 7 Chapter 1 Introduction to NC308 include lt stdio h gt define CLR 0 define PRN I 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 cpp308 processes preprocess commands starting with Such operations include header file contents macro expansion and judgements on conditional compiling The C source files output by the preprocessor include the results of cpp308 processing of the C source files Therefore do not contain preprocess lines
109. these materials If 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 XSUPPORTXProduct nameYSUPPORT TXT Renesas Tools Homepage http www renesas com en tools NC308 User s Manual AN Contents NC308 MANUAL III Contents TA NG308 Gompolenls itae Ee HERE rod t tee pito SOS HEAR RE ii aaa det mens 1 1 2 NG308 Processing EloW ziii t ERIT E EIS EH THER UI tee Uc H Leste oL IET ee 1 M2 MC SOG ust trt eret teta tette s mtsstetircond ent id cic ee tenido a tec onn tole eccrs 2 22 CPP SOS n 2 peces E 2 LAA APIS cased 2 1 2 5 SIKVIOeWer Se SIK iii aie edt EE E b ECOL Ride he Abe 2 1 276 61308 ie bre n AE EE S UE EHDOI RR II A A A A EE 2 12 7 EDIT e
110. 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 Return Value 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 If memory areas have been freed with free 1 1 If the amount of memory to be secured is smaller than that freed the area is secured from the high address of the contiguously empty area created by free toward the low address Heap area Freed area Unused area Unused area Unused area 1 2 lf 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 Unused area Appendix E 46 malloc Appendix E Standard Library 2 If no memory area has been freed with free 2 1 If there is any unused area that can be secured the area is secured from the lowest address of the unused memory toward the high address Heap area Unused area Unused area
111. to the stream x sprintf Writes text with format to a character string x vfprintf Output to a stream with format x vprintf Output to stdout with format x vsprintf Output to a buffer with format x Return ungetc Sends one character back to the input stream x Determi ferror Checks input output errors x nation feof Checks EOF End of File x d Memory Management Functions The following lists memory management functions Table E 5 Memory Management Functions Function Contents Reentrant calloc Allocates a memory area and initializes it to zero 0 x free Frees the allocated memory area x malloc Allocates a memory area x realloc Changes the size of an allocated memory area x Appendix E 13 Appendix E Standard Library e Memory Handling Functions The following lists memory handling functions Table E 6 Memory Handling Functions Type Function Contents Reentrant Initialize bzero Initializes a memory area by clearing it to zero O Copy bcopy Copies characters from a memory area to another O memcpy Copies characters n bytes from a memory area O to another memset Set a memory area by filling with characters O Compare memcmp Compares memory areas n bytes O memicmp Compares memory areas with alphabets handled O as upper case letters Move memmove Moves the area of a character string O Search memchr Searches a character from a memory
112. 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 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 80 MCU s Timer AO interrupt control register struct char ILVL 3 char IR 1 An interrupt request bit char dmy 4 TAOIC void wait until IR is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 NC308 MANUAL 50 Chapter 3 Programming Technique 3 1 3 About Optimization a Regular optimization The following are always optimized regardless of whether optimization options are specified or not 1 Meaningless variable ac
113. used for this function In using the function in a library please describe it as undef memset after description of include lt string h gt Example include lt string h gt undef memset lt By description of undef memset static int a 10 use ofa library function becomes effective void func void char result result memset void a a 10 Sets n bytes of data c in memory s When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization Appendix E 53 Appendix E Standard Library modf Mathematical Functions Function Calculates the division of a real number into the mantissa and exponent parts Format include math h 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 Hinclude lt stdio h gt void perror s Method function Argument const char far s Pointer to a character string attached before a message ReturnValue amp No value is returned Appendix E 54 Appendix E Standard Library pow Mathematical Functions Function Calculates the power of a number Format include math h dou
114. 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 specify ing Ono_stdlib Such suppression of optimization is necessary when you use a user function that bear the same name as one of the standard library functions 1 Inline padding of functions Regarding functions strcpy and memcpy the system performs inline padding of 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 sample Second argument string constant memcpy First argument far pointer memopy str sample 6 Second argument far pointer memopy str fp 6 Third argument constant Appendix E 88 E 3 E 3 1 Appendix E Standard Library Modifying Standard Library The NC308 package includes a sophisticated function library which includes functions such as the scanf and printf I O functions These functions are normally called high level l O functions These high level I O functions are combinations of hardware dependent low level I O functions In M16C 80 series application programs the I O functions may need to be modified ac cording to the ta
115. you to use Japanese characters for character constants Example L 788 3 Permits you to write Japanese characters in comments Example RF 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 ment declaration Example 1 extern int func int 1 char 0 for function 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 Inline storage Functions can be inline developed by using the inline storage class class specifier Example inline func int i Always be sure to define the body of an inline function before using the inline function Default argu 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 80 series in C language macro assebler You can describe some assembler command as the function of C function language Exampe char dadd b char val char val2 Example int dadd w int val1 int val2 B 1 Near and far
116. 0 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 fields 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 3 to 5 or OR or OS Appendix A 18 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
117. 000H A OFE0000H 7 rom FE section g rom FO section 000400H data SE section j Dss SE section data SEI section i j 0 tius saul z data SOI section bss SO section data_NE section i data NEI section bss NE section S D data_NO section J data NOI section bss NO section x 3 data FEI section stack section D 3 data FOI section 2 2 interrupt section E f OFF0000H program section 010000H m NIB program S section x oro 020000H D vector section data_FE section 3 OFFFDFFH 3 E bss FE section E fvector section 9 Include special data FO section page bss FO section OEFFFFH OFFFFFFH M P d Figure 2 24 Example Section Mapping 1 2 NC308 MANUAL 39 Chapter 2 Basic Method for Using the Compiler 000000H 1 OFEOO00H g 000400H data NE section data SEI section OSS NE Seo data SOI section data NO seein z data 6El section bss NO section data 60l section 2 data NEI section slace section data NOI section g data_FEl section data FOI section interrupt section program section BAR data SE section 1 Ss bss_SE section s m INTB program Section data SO section 9 OFFFDOOH bss_SO section B 5 l data 6E section g VERD SeClOD bss_6E section OFFFDFFH data 6O section 5 n 0 p oooooou 559 80 dd I fvector section data_FE section Include special bss FE section page data FO section OEFFFFH bss FO section OFFFFFFH eaJe WOH leuu Figure 2 24 Example S
118. 08 1 s sample c M32C 80 M16C 80 Series NC308 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 Cpp308 sample c o sample i DM16C DNC308 ccom308 sample i o sample a30 as308 N 1 s sample a30 ls sample rw r r 1 toolusr 2850 Aug 17 14 51 sample c rw r 1 toolusr 10508 Aug 17 15 43 sample lst c rw r 1 toolusr 587 Aug 17 15 43 sample r30 Aen Note Do not specify the as308 options C M O P T V or X Appendix A 46 Appendix A Command Option Reference For reference the following table lists the AS308 options Option 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 AS308 in a batch file etc Do not specify this option in the option as308 C Displays the content of a command line when as308 starts up mac308 and asp308 Do not specify this option in the option as308 D Sets a constant to a symbol F Fixes the file name of FILE development to a source file name H Header information is not output to an assembler list file The include file specified by INCLUDE that is written in the source file is searched from a specified directory L Generates an assembler list file extension Ist M Generates structured de
119. 1 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 Searches 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 Ic rere eer errr rrerrerrrrerrereerts Character to be searched for ReturnValue Returns the position of character c that is first encountered in character string Hw 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 69 Appendix E Standard Library strcmp
120. 23 A 2 6 Generated Code Modification Options sse 24 PANS ase Ln 26 fnot reserve asm fNRA un ecssseeesseeenseeeeesseeeeseneeeuseeesesseeeseseeesaseeeeaseceeessoeesenenes 26 fnot reserve far and near fNRFAN eeeeeeseeeeeeseeeeeeeenen enne nnne 27 afnot reserve mline ANRI i5uieiniiciii eot orietur eerta acres kie etnies 27 fextend to int AETI aiiis rasi aaas 28 fchar en merator GE eee rire eicere eene 28 fno even CINE icnsscisccccevesicracscatensecedeatedusievdccvsncaistauath sasdeessscwideadsdeiscuciessdecstencsnasducd 29 Har RAM C AERAM oie tieieiii eoo EE EE IR ERERE Eea EIER CP EIS ERSTES pie raai 29 shear ROM CHNROM oiii etai trac euo din eoo E deo Ie eese oae s retours 30 tiear pointer ANP uiceeinicesiesaciaccoiriscusec ioca sus ccvicicnasece 22s evaccaticienaeeacociic 30 fconst not ROM fGNH uiiueisceezucuic cac ioci iocis cona cr eccaa dc Lcx c rods eus Im nep opes IvuD 31 fnot address volatile INAV 2 rocieie ccce sasocc cce es iesuc rere nansunceconisnisicecc 31 fsmallitartiay CASA E 32 fenable register TER ierit eter Dice er souteneavsssevaadixacetacesedzxis 32 Ei ID NES m PR 33 Si M M M 33 SUSE DIV CBU iari corsa a Erie Diner e ludo nnnaeca Un Ote mie Diener eA EU 34 ID aoao a EP
121. 24 NE S AS NC308 V 5 10 C Compiler for M32C 80 M16C 80 M16C 70 Series User s Manual Rev 1 00 May 1 2003 Renesas Technology REJ10J0021 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
122. 30 relocatable object files extension r30 absolute module files extension X30 or other files output by ccom308 as308 or In308 are generated 2 The file extension i generated by this option does not include the line command generated by the preprocessor To get a result that includes line try again with the E option Compile driver control Function Creates assembly language source files extension a30 and ext and stops processing Execution nc308 S sample c example 555 50 w16c 80 series NC308 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 CIEWIDI 1 toolusr 2059 Aug 17 11 30 sample a30 rw r r 1 toolusr 2835 Aug 17 11 28 sample c A Notes When this option is specified no relocatable object files extension r30 abso lute module files extension x30 or other files output by as308 or In308 are generated Appendix A 5 Appendix A Command Option Reference Upredefined macro Function Undefines predefined macro constants Syntax nc308A U predefined macroA lt C source file gt Execution example nc308 c UNC308 UM16C sample c M32C 80 M16C 80 Series NC308 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
123. 308 This option can also be used to specify the destination directory This option can also be used to specify the file name includes the path Do not specify the filename extension dir Specifies the destination directory of the file s absolute module file map file etc generated by In308 0 filename Function Specifies the name s of the file s absolute module file map file etc gener ated by In308 This option can also be used to specify the file name includes the path You must NOT specify the filename extension Syntax nc308A o filenameA lt C source file gt Execution nc308 o test sample ncrt0 a30 sample c example M32C 80 M16C 80 Series NC308 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 od test ls total 65 drwxr x 2 toolusr 512 Aug 17 16213 af drwxrwxrwx 11 toolusr 3584 Aug 17 16 14 rw r 1 toolusr 44040 Aug 17 16 14 sample x30 n this 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 Function Syntax Execution example Note Output file specification This option allows you to specify an output destination directory for the output file nc308A dir directory name E nc308 dir test sample o
124. 4 SPECIAL 223 Figure 2 13 Startup Program List 8 sect308 inc 4 8 NC308 MANUAL 27 Chapter 2 Basic Method for Using the Compiler SPECIAL 222 SPECIAL 221 SPECIAL 220 SPECIAL 219 SPECIAL 218 SPECIAL 217 SPECIAL 216 SPECIAL 215 SPECIAL 214 SPECIAL 213 SPECIAL 212 SPECIAL 211 SPECIAL 210 4 SPECIAL 209 SPECIAL 208 SPECIAL 207 SPECIAL 206 H SPECIAL 205 SPECIAL 204 SPECIAL 203 SPECIAL 202 SPECIAL 201 SPECIAL 200 SPECIAL 199 Pi SPECIAL 198 SPECIAL 197 SPECIAL 196 SPECIAL 195 SPECIAL 194 SPECIAL 193 SPECIAL 192 SPECIAL 191 SPECIAL 190 SPECIAL 189 SPECIAL 188 SPECIAL 187 SPECIAL 186 SPECIAL 185 SPECIAL 184 SPECIAL 183 SPECIAL 182 SPECIAL 181 SPECIAL 180 SPECIAL 179 SPECIAL 178 SPECIAL 177 SPECIAL 176 SPECIAL 175 SPECIAL 174 SPECIAL 173 SPECIAL 172 SPECIAL 171 SPECIAL 170 7 SPECIAL 169 SPECIAL 168 SPECIAL 167 SPECIAL 166 SPECIAL 165 SPECIAL 164 SPECIAL 163 SPECIAL 162 SPECIAL 161 SPECIAL 160 SPECIAL 159 SPECIAL 158 SPECIAL 157 P SPECIAL 156 SPECIAL 155 SPECIAL 154 SPECIAL 153 SPECIAL 152 SPECIAL 151 SPECIAL 150 SPECIAL 149 SPECIAL 148 Figure 2 14 Startup Program List 9 sect308 inc 5 8 NC308 MANUAL 28 Chapter 2 Basic Method for Using the Compiler SPECIAL 147 SPECIAL 146 SPECIAL 145 SPECIAL 144 SPECIAL 143 SPE
125. 43 Wno used argument WNUA eeeeeeeeeeeeeeenee eee en nennt annees 44 A 2 9 Assemble and Link OptiomS sc uitio cente ea toit ec th uto is panneadeteiaieiges tances cR RM Snai 45 385308 ODIOD uiis cocci ie Pv ed Ern a brvks ice ebd iS re tini ELE ee E SE CLu anc Ha sU pU Edessa o GE 46 museum 48 A 3 Notes on Command Line OpIIONS rote brat retire de o ans ected te ele ieu dus 50 A331 Coding Command Line OptiOnSs 52i tecee ta cic ceet upbeat dot ak rep aaa iaaii 50 ASZ Pronty of Options Tor COBEFOllitiQ ssa aeta eite eae en chatte pesii 50 Appendix B Extended Functions Reference Bi Near anditar Modifiers iode rdc rores gestes eine E erts coude ante nhvariadice 2 B 1 1 Overview of near and far Modifiers sessssssssssssseeeeeeeeneene enne 2 B 1 2 Format of Variable Declaration cisien aori eene 3 NC308 MANUAL VII B 1 9 Formatof Pointer type Variable iso tt pnto ERU eO Pn ER tune EN 4 B 1 4 Format of Function Declaratio rn Re ett ER Hr SEE Reo eR erus 6 B 1 5 near and far Control by nc308 Command Line Options seeee 6 B 1 6 Function of Type conversion from near to far sssssssseeeeenme 6 B 1 7 Checking Function for Assigning far Pointer to near Pointer ssesssss 6 BS DEClANING TUFICHOFIS ccoccon once tertereccauessattacuctatse aee ons c AE ATE nete iie ee ius 7 B 1 9 Function for Specifying near
126. 51615 float Yes 32 1 17549435e 38F lt 8 40282347e 38F double Yes 64 2 2250738585072014e 308 long double 1 7976931348623157e 308 near pointer No 16 O lt OxFFFF far pointer No 32 0 lt 9xFFFFFFFF Appendix C 8 Appendix C Overview of C Language Specifications e The _Bool type can not specify to sign If a char type is specif ied 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 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 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 Postpositional e
127. 8 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 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 consu
128. 995 1996 1997 1998 1999 2000 2001 2002 2003 COMMAND LINE ccom308 D MTOOL nc308wa5 TMP sss i o smp a30 ds Normal Optimize ROM size Optimize Speed Optimize Default ROM is Default RAM is GLB SB SB SB FB 0 FUNCTION func FUNCTION main FRAME AUTO S size 2 offset 4 FRAME AUTO i size 2 offset 2 ARG Size 0 Auto Size 4 Context Size 8 SECTION program CODE ALIGN file smp c align line 7 PES C SRC glb main main enter 04H pushm R1 line C oSRE mov w 4 FB R0 line 2 C SRC Inline storage class have codes Rove RO SAER embedded directly line 3 CESRC return i mov w RO R1 add w 0001H RO line 9 C_SRC mov w R1 4 FB line 10 C_SRC popm R1 exitd END Compile End Time Tue Jul 16 13 12 00 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 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 t
129. 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 H1 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 e Variable name Array name integer Struct name member name not including bit field members int idata int a 3 struct TAG int int 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 static variable asm mov w S01H S ext val asm mov w 01H S5 s_val Assembly language source file compile result glb _func _func line C SRC asm mov w 01H S ext val ASM START mov w 01H ext val Move to ext val line 8 C SRG asm mov w 01H SS s val mov w 01H S0 s val Move to SO s val ASM END line C SRC
130. Boll ROL Register char int RO Register near pointer float Least significant 16 bits returned by storing in RO register Most long significant 16 bits returned by storing in R2 register far pointer double Values are stored in 16 bits beginning with the high order bits long double sequentially in order of registers R3 R2 R1 and RO as they are returned long long Values are stored in 16 bits beginning with the high order bits sequentially in order of registers R3 R1 R2 and RO as they are returned Structure Type Union Type 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 NC308 uses registers or stack to pass arguments to a function 1 Passing arguments via register When the conditions below are met the system uses the corresponding Registers Used listed in Table D 5 and D 6 to pass arguments Function is prototype declared 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 Argumen
131. CIAL 142 SPECIAL 141 SPECIAL 140 SPECIAL 139 T SPECIAL 138 SPECIAL 137 SPECIAL 136 SPECIAL 135 SPECIAL 134 7 SPECIAL 133 SPECIAL 132 SPECIAL 131 H SPECIAL 130 SPECIAL 129 SPECIAL 128 SPECIAL 127 SPECIAL 126 SPECIAL 125 SPECIAL 124 SPECIAL 123 SPECIAL 122 SPECIAL 121 SPECIAL 120 SPECIAL 119 SPECIAL 118 SPECIAL 117 SPECIAL 116 SPECIAL 115 SPECIAL 114 SPECIAL 113 SPECIAL 112 SPECIAL 111 SPECIAL 110 SPECIAL 109 SPECIAL 108 SPECIAL 107 SPECIAL 106 H SPECIAL 105 SPECIAL 104 SPECIAL 103 SPECIAL 102 SPECIAL 101 SPECIAL 100 T SPECIAL 99 A SPECIAL 98 SPECIAL 97 SPECIAL 96 SPECIAL 95 SPECIAL 94 SPECIAL 93 SPECIAL 92 SPECIAL 91 SPECIAL 90 SPECIAL 89 H SPECIAL 88 SPECIAL 87 SPECIAL 86 H SPECIAL 85 SPECIAL 84 SPECIAL 83 SPECIAL 82 SPECIAL 81 SPECIAL 80 SPECIAL 79 SPECIAL 78 SPECIAL 77 SPECIAL 76 SPECIAL 75 SPECIAL 74 SPECIAL 73 SPECIAL 72 Figure 2 15 Startup Program List 10 sect308 inc 6 8 NC308 MANUAL 29 Chapter 2 Basic Method for Using the Compiler SPECIAL 71 H SPECIAL 70 SPECIAL 69 SPECIAL 68 SPECIAL 67 SPECIAL 66 SPECIAL 65 SPECIAL 64 SPECIAL 63 SPECIAL 62 SPECIAL 61 SPECIAL 60 SPECIAL 59 Fi SPECIAL 58 SPECIAL 57 SPECIAL 56 SPECIAL 55 SPECIAL 54 H SPECIAL 53 SPECIAL 52 SPECIAL 51 F SPECIAL 50 SPECIAL 49
132. Ck Sk Ck Ck CK Ck Ck C Ck Ck Ck Ck Sk Ck Ck Ck Ck Sk Ck Sk Ck Sk Ck Sk Ck ck Ck ck Ck Ck Ck Ck Ck Sk Ck Sk Ck Sk Ck KKK KKK KKK kk kk kk kk kk Sk Sk ck Sk ck Sk kk 08 C COMPILER for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Ne Ne Ne Ne Ne Ne Ne Ne Ck Kock ck Ck Sk Ck KKK KK KKK KKK KKK KKK KKK KKK KK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KK KKKKKKKKKKKKKH 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 NC308 MANUAL 23 Chapter 2 Basic Method for Using the Compiler EY SRA Ue ANRC Be ANA eH pe ok Oo oae UC OE eei Ue voe pese c o ue eo ue dee oe ese Hk o eK ng e PRS OA A ARE C Compiler for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Fi Written by X XXXXXXXX sect308 inc section definition This program is applicable when using the basic I O library H Id sect308 inc v 1 11 20
133. DLERAcyclic 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 pragma _ ASMMACROAfunction name Register name Facility to arrange in the rom section Facility to describe variables using SB relative addressing Facility to describe variables using SB relative 16 bit displacement addressing Facility to alter the section base name Facility to control the array of structures Facility to specify absolute addresses for input output variables Facility to specify absolute with bit position addresses for input output variables Facility to specify absolute addresses for input output variables Facility to declare functions using software interrupts Facility to write interrupt functions 11 12 13 14 15 16 17 18 19 20 21 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
134. EE 4 IAEE Saai IM ET 4 e CONS ANIS ieecim ies order uio dele b eme ets ous e S 5 d Character Literals oio eint resti cete orte e ep cade bt basate tede Cle b ee erbe 6 er OPS RAO NS usn stes eris eceeem debitus NS 7 fo ale ae UES No t T o Pro ELTE 7 C22 TYDE nseries nonr a a iubet su pens cria Use N AR easet e ede Wea aieiaa 8 as Data Ty OG ER 8 Bi MUSING TyBe aisi ep ER PEE IEEE tue ela ie ened aa Ide eb N a 8 Cs Data TY Pesan SIZ eniai eee Kin A 8 C29 IEXPEESSIONS ecco cniin edere reet ben cuca e Ere iore tU dra E ENRE 9 Gr MMBMEICue e 11 ai Uue XBI leF ir uoln eet m 11 b juhnguomDeclatauopiassseoc anu cxe deco itae euer hene e desepu a ak d duce eie Qon 12 C215 SCIEN 13 a abelled SIatemelit zzi n iru eter ERES E ep EUER errr Scd EUG a edes rr 13 b Compound SISIell Cllb 635p Do Heb E Io de EU bep tat depre co EE a 14 amp Expression Bull Statemokll zu cucie orioneu sap icc it eevee fuer tare xt eine EITEN 14 di SeleotloF State WIBfIU cci cto eset et itta tmb iet toot 2a seh eia otis sp Ite DE aiei ce dat desee tere 14 G dOrauoP State TION us coste anaien OE a bat to ops Fa GS NR ebd nui Eoo ia us to tastes 14 fe JU DS COEOITIG N asaan bead freti tont rame E b otav E aacesesdalancumipeusabcdbassuedsbatterades 15 d Assembly Language Statement iode ree rore ODE Ear aE ye E E ESRB FERRE R 15 Preprocess Gomimalids ote tod i tec i iis tob Dea tust aena 16 C 3 1 List of Preprocess Commands Available
135. EXP Maximum value of the power of 10 that can be represented 308 as a double type floating point numeric value DBL_MAX_EXP Maximum value of the power of the radix that can be repre 1024 sented as a double type floating point numeric value DBL_MIN Minimum value that a double type variable can take on as 2 225073858507201 4e 308 value DBL MIN 10 EXP Minimum value of the power of 10 that can be represented 307 as a double type floating point numeric value DBL MIN EXP Minimum value of the power of the radix that can be repre 1021 sented as a double type floating point numeric value 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 float type floating point value is matched to the radix in its representation 24 FLT MAX Maximum value that a float type variable can take on as value 3 40282347e438F FLT MAX 10 EXP Maximum value of the power of 10 that can be represented as a float type floating point numeric value 38 FLT MAX EXP Maximum value of the power of the radix that can be repre 128 sented as a float type floating point numeric value FLT MIN Minimum value that a float type variable can take on as 1 17549435e 38F value FLT MIN 10 EXP Minimum value of the power of 10 that
136. Functions Function Calculates the absolute value of a long type integer Format include lt stdlib h gt long labs n Method function Argument long n 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 Calculates the power of a floating point number include lt math h gt double ldexp x exp function double x Float point number int exp Power of number ReturnValue Returns x exp power of 2 Idiv Integer Arithmetic Functions Function Format Method Argument 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 of the division Description amp Returns the quotient derived by dividing number by denom and the remainder of the division in the structure ldiv t div 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
137. Generating a SBDATA declaratio file 2 iube rtod i c tee iio teste tee ceo bet abii 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 ssessssss 13 a Generating a SPECIAL Page Function declaration file essssusss 19 USUSE mo MGSSAG CS usu ertet reuera ter s epe visa orn nu EAEE Fe RR Iud 14 3 6 Error Mes sag88 csi pri aeter Eo Eb eei oe Rois E ESS Ee EE cH pete c tas tons do catis iste tesc ceu utr desse tee 14 G62 Warning Messages sitet tutior espe teriet iiie iuit ti iced cdit esee eames ete 15 NC308 MANUAL XI Preface NC308 is the C compiler for the Renesas M32C 80 Series and M16C 80 M16C 70 Series NC308 converts programs written in C into assembly language source files for the M32C 80 Series and M16C 80 M16C 70 Se ries You can also specify compiler options for assembling and linking to generate hexadecimal files that can be written to the microcomputer Please be sure to read the precautions written in this manual before using NC308 Terminology The following terms are used in the NC308 User Manuals Term Meaning NC308 Compiler package included in M3T NC308WA nc308 Compile driver and its executable file AS308 Assembler package included in M3T NC308WA as308 Relocatable macro assembler and its executable file TM Integrated development environment be
138. IS ID LIBI UL DLL LE 34 Iswitch table ST dicii ciiin torto aa 35 d Lr m 35 A 2 7 ibrary Specityllig Opio Meseres iiceoe i enap eroa Ea AEn itoi 36 llibraryfilenaime iere tereti ritenere erret nie teretes niens 36 A 2 9 Warning ODHOTIS oic cce oar dies sense scxscen tess cant eiua corp eise oa d Re 2 Rack ii cud rd pv aaia 37 Wron prototype WNP iccscssaccesstecisedecssccncccasctiaiatieisancdepscictiadaciadiacdsseaaccarcuneiaadeucs 37 Wunknown pragma WIUP s sccsssissccuscacissiapsccatsscsssecsssssaccenssccnssseasisaceersssoestscterdsazeer 38 WHO STOP WNS iiie eot einer eet ied eio dioe De epi or ria eis anD EaR 38 SW SUCO e 39 Werror_file lt file name gt WEF eain cheers o eevesbendeads 39 Wstop at warning WSAW 2 5 1 cicriecccistr eiii uccesec uda ninien iaaa 40 Whesting comment WN 5 iiiniucciiiicoenacaoaccici acci duo cta cz ida dece turca coe goecuada 40 Wccom max warnings Warning Count WCMW eene 41 2Walli 3 iiiter E MEI RE IE II M EIE 41 Wimake tagfile WMT iii iet reiecit seite reis tette etsi ettet rbi er RE 42 Wuninitialize variable WUV eeeeeeeeeeeeeeeeeene enne nennen nnn nnn 42 Wlarge to small WETS iioii eicit ioni eee eine crc i e eR c raices 43 Wrno warning stdlib WNIWS iciaiei iic toner ciui dd aceto troi ees cai etur
139. JSR A Syntax Example a JS a JS pragm pragm as the JSR instruction RA function name RA func pragma JSRW Calls functions using JSR W as the JSR instruction Syntax pragma JSRW function name Example pragma JSRW func pragma PAGE _ Indicates a new page point in the assembler listing file Syntax pragma PAGE Example pragma PAGE pragma PAGE _ Declares defined a function by assembler macro Syntax pragma __ASMMACROAfunction name register name Example pragma __ASMMACRO mul RO R1 Appen dix B 35 Appendix B Extended Functions Reference B 7 2 Using Memory Mapping Extended Functions NC308 includes the following memory mapping extended functions pragma ROM Function Maps specified data variable to rom section Syntax pragma 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 0 if you do not include an initialization expression Example C language source program pragma ROM i unsigned int i Variabl
140. LA CJAnumberAfunction 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 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 Functions declared using pragma SPECIAL are mapped to the program S section Be sure to map the program S section between OF0000H and OFFFFFH Calls are numbered between 18 and 255 in decimal only 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 Co N Example pragma SPECIAL 20 func void func unsigned int unsigned int void main int dg ol i Ox7FFD j 0x007F func i j special page subroutine call Figure B 77 Example of pragma SPECIAL Declaration 1 f you 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 NC308 User s Manual Appendix B 49 Appendix B Extended Functions Reference B 7 4 Using MR308 Extended Functions NC308 has the following extended functions which suppor
141. LDC amp SB SB Figure B 37 Restoring Modified Static Base SB register Furthermore pay careful attention to the functions that will be called while the SB regis ter 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 NC308 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 NC308 allows you to include Japanese characters in your C source programs This chapter describes how to do so B 3 1 Overview of Japanese Characters In contrast to the letters in the alphabet and other characters represented using one byte Japanese characters require two bytes NC308 allows such 2 byte characters to be used in character strings character constants and comments The following character types can be included e kanji hiragana full size katakana half size katakana Only the following kanji code s
142. MAND LINE ccom308 D MTOOL nc308wa5 TMP smp i o smp a30 dS H Normal Optimize OFF 1 H ROM size Optimize OFF H Speed Optimize OFF Default ROM is far H Default RAM is near GLB SB SB __SB__ FB 0 PES d FUNCTION main Pd d FRAME AUTO flag size 2 offset 2 ptt d ARG Size 0 Auto Size 2 Context Size 8 SECTION program CODE ALIGN _file smp c align line 6 7 C SRC glb main main enter 02H line 8 7 C SRC flag CLR Figure 1 9 Example Assembly Language Source File smp a30 1 2 NC308 MANUAL 10 Chapter 1 Introduction to NC308 mov w 40000H 2 FB flag line ul 7 C_SRC printf flag d n flag push w 2 FB flag push 1 TO Jer printf add 1 06H SP line 3 Peg C SRC exitd omitted glb _sscanf glb _fflush glb _clearerr glb _perror glb init dev glb speed omitted SECTION rom FO ROMDATA EDU byte 66H KET byte 6cH VM byte 61H L a byte 67H H tg byte 20H n byte 3dH byte 20H Et byte 25H Ss byte 64H g Ed byte OaH byte 00H END Compile End Time Mon Jun 17 14 40 21 20xx 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 optio
143. 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 amp Returns a value in the range from r to x radian Appendix E 19 Appendix E Standard Library atof Character String Value Convert Functions Function Converts a character string into a double type floating point number Format include lt stdlib h gt double atof s Methog function Variable const char far s Pointer to the converted character string ReturnValue Returns the value derived by converting a character string into a double precision floating point number atol Character String Convert Functions Function Converts a character string into an int type integer Format include lt stdlib h gt int atoi s Method function Variable const char _far s Pointer to the converted character string ReturnValue 6 Returns the value derived by converting a character string into an int type integer Appendix E 20 atol Appendix E Standard Library Character String Convert Functions Function Format Method Variable Converts a character string into a long type integer include lt stdlib h gt long atol s function const char far s Pointer to the converted character string ReturnValu
144. 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 71 Appendix E Standard Library strcpy Function Copies a character string Format include lt string h gt char far strcpy s1 S2 Method macro or function Argument char far s1 Pointer to the character string to be copied to const char far s2 Pointer to the character string to be copied from ReturnValue Returns a pointer to the character string at the destination of copy Description Usually the program code described by macro is used for this function In using the function in a library please describe it as undef strcpy after description of include lt string h gt Example include lt string h gt undef strcpy lt By description of tundef strcpy use of a library function becomes effective static char _far a macro void func void char result char b 5
145. ON 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 FOW 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 utl308 G 3 Notes In using utl308 sbsym declared in files described in assembler cannot be counted For this reason you need to make adjustment if a sbsym declared in assembler is present so that the results effected after having executed utl308 are put in the SB area In using utl308 SPECIAL Page Function declared in files described in assembler cannot be counted For this reason you need to make adjustment if a SPECIAL Page Function declared in assembler is present so that the results effected after having executed utl308 are put in the SPECIAL Page area G 4 Conditions to establish SBDATA declaration amp SPECIAL Page Function declaration G 4 1 Conditions to establish SBDATA declaration Only global variables are valid in using utl308 Types of variables are as follows 1 variables of Bool 2 variables of unsigned
146. 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 static unsigned char rorc_b unsigned char val When calculated in 8 bits static unsigned int rorc_w unsigned int val When calculated in 16 bits Appendix B 63 Appendix B Extended Functions Reference ROT Function The value of val is returned after rotating it as many times as indicated by count Syntax include lt asmmcaro h gt static unsigned char rot_b signed char count unsigned char val When calculated in 8 bits static unsigned int rot_w signed char count unsigned int val When calculated in 16 bits SHA Function The value of val is returned after arithmetically shifting it as many times as indicated by count Syntax include lt asmmacro h gt static unsigned char sha_b signed char count unsigned char val When calculated in 8 bits static unsigned int sha w signed char count unsigned int val When calculated in 16 bits static unsigned long sha l signed char count unsigned long val When calculated in 24 bits SHL Function The value of val is returned after logically shifting it as many times as indicated by count Syntax include lt asmmacro h gt static unsigned char shl_b signed char count unsigned char val When calculated in 8 bits static un
147. SPECIAL 48 SPECIAL 47 SPECIAL 46 SPECIAL 45 SPECIAL 44 SPECIAL 43 SPECIAL 42 SPECIAL 41 SPECIAL 40 SPECIAL 39 SPECIAL 38 SPECIAL 37 SPECIAL 36 SPECIAL 35 SPECIAL 34 7 SPECIAL 33 SPECIAL 32 SPECIAL 31 SPECIAL 30 SPECIAL 29 SPECIAL 28 SPECIAL 27 SPECIAL 26 SPECIAL 25 SPECIAL 24 SPECIAL 23 SPECIAL 22 SPECIAL 21 SPECIAL 20 SPECIAL 19 SPECIAL 18 org OFFFFDCh UDI lword dummy int OVER FLOW lword dummy int BRKI lword dummy int ADDRESS MATCH lword dummy int SINGLE STEP lword dummy int WDT lword dummy int DBC lword dummy int NMI lword dummy int RESET lword start Figure 2 16 Startup Program List 11 sect308 inc 7 8 NC308 MANUAL 30 Chapter 2 Basic Method for Using the Compiler eo Ck CK Ck Sk Ck Sk Ck Ck Ck Ck Ck Ck Ck Ck Ck Ck Ck Ck Ck Ck Sk Ck Sk Ck Sk Ck Ck ck Ck Ck Ck Ck Ck Sk Ck Sk Ck Sk Ck Sk KKK KKK Ck ck kk Sk Sk Ck Ck Sk Ck kk ck Sk ko Sk ck ko Sk kk 8 C Compiler for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED GER CH KO e RR DEOR AAAI UK OK ROR OEC e e oko ode AA o oko OE IER kc e ege ok oe ek ok e RS KIER RRR HE OK SR RRL AR IM Figure 2 17 Startup Program List 12 sect308 inc 8 8 NC308 MANUAL 31 Chapter 2 Basic Method for Using the Compiler 2 2 2 Customizing the Startup Program
148. TCALLA 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 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 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 in the pragma INTCALL declaration b You cannot declare the following types in the parameters in the assembler function Structure types and union types double 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 32 bit registers R2RO and R3R1 far pointer types 24 bit registers A0 A1 R2R0 and R3H1 near pointer types 16 bit registers A0 A1 R0 R1 R2 and R3 char types and _Bool types 8 bit registers ROL ROH R1L and R1H There is no differentiatio
149. The C source program AA c is compiled using nc308 then assembled using as308 to create the relocatable object file AA r30 2 The startup program ncrt0 a30 and the include file sect308 inc which contains infor mation 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 ncrtO0 a30 4 The two relocatable object files AA r30 and ncrt0 a30 are linked by the linkage editor In308 which is run from nc30 to create the absolute module file AA x30 2 Figure 1 2 Program Development Flow NC308 MANUAL 5 Chapter 1 Introduction to NC308 Figure 1 3 is an example make file containing the series of operations shown in Figure 1 2 AA x30 ncrt0 a30 AA r30 nc308 oAA ncrt0 r30 AA r30 ncrt0 r30 ncrt0 a30 as308 ncrt0 a30 AA r30 AA c nc308 c AA c Figure 1 3 Example make File Figure 1 4 shows the command line required for nc308 to perform the same operations as in the makefile shown in Figure 1 3 Pa nc308 oAA ncrt0 a30 AA c RET 96 Indicates the prompt RET Indicates the Return key Specify ncrt0 a30 first when linking Figure 1 4 Example nc308 Command Line NC308 MANUAL 6 1 5 1 5 1 Chapter 1 Introduction to NC308 NC308 Output Files This chapter introduces the preprocess result C source program output when
150. 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 invalid initializer on scalar 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 invalid initializer on struct 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 invalid initializer too many brace Too many braces are used in a scalar type initialization expression of the auto storage class gt Reduce the number of braces used invalid Ivalue The left side of the assignment statement is not Ivalue Write a substitutable expression on the left side of the statement invalid Ivalue at operator The left side of the assignment statement is not Ivalue Write a substitutable expression on the left side of the statement invalid member The member reference contains an error Write correctly invalid member used The member reference contains an error Write correctly invalid redefined type name of identifier The same identifier is defined mor
151. The left side expression of dose not have struct or union Use the struct or union as it unknown variable variable name used in asm An undefined variable name is used in the asm statement Define the variable Appendix F 21 Appendix F Error Messages Table F 21 ccom308 Error Messages 14 14 Error message Description and countermeasure unknown variable variable name An undefined variable name is used Define the variable unknown variable variable name used An undefined variable name is used Define the variable void array is invalid type int array assumed An array cannot be declared as void Processing will be continued assuming it has type int Write the type specifier correctly void value can t return The value converted to void by cast is used as the return from a function Write correctly while struct union statement struct or union is used in the expression of a while statement Use scalar type while void statement void is used in the expression of a while state ment Use scalar type multiple pragma EXT4MPTR s pointer ignored A pointer variable decleared by pragma EXT4MPTR is duplecate Declare the variable only one time zero size array member the array which size is zero Declare the array size The structure members include an array whose size is zero
152. UE because it is un Section bss_SE DATA ALIGN necessary bss SE top In this case you Section data SO DATA need to remove data SO top the initialize pro i gram in the far p Section bss SO DATA bss SO top area of ncrt0 a30 i SOm g Section data 6E DATA ALIGN data 6R cop 8 Section bss_6E DATA ALIGN Hoss Sim 3EGIOS gj Section data 60 DATA acids et GO NIS ODE Section bss 60 DATA TE SIGNO ONES C TOI Section data FE DATA rO 20000H data _FE_tOp Section bss FE DATA ALIGN DSS RET ITO section data_FO DATA data_FO_top Section bss FO DATA DESTO TOP section rom_FE ROMDATA org OFEOOOOH 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 SOI top H Section data 6EI ROMDATA data 6EI top E Section data 60I ROMDATA data 601 top Figure 2 28 Listing of sect308 inc in Single Chip Mode 2 3 NC308 MANUAL 45 Chapter 2 Basic Method for Using the Compiler Section data NEI ROMDATA data NEI top Section data NOI ROMDATA data NOI top Section data FEI ROMDATA data FEI top Section data FOI ROMDATA data FOI top Section interrupt ALIGN Section program ALIGN section program S org OFF0000H Section vector ROMDATA variable vector table org VECTOR ADR lword dummy int BRK
153. Unused area High 2 2 If 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 Format Method Argument ReturnValue Calculates the length of a multibyte character string include lt stdlib h gt int mblen s n function const char far s Pointer to a multibyte character string SIZG T D escas cierre Number of searched byte Returns the number of bytes in the character string if s configures a correct multibyte character string Returns 1 if s does not configure a correct multibyte character string 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 Format Method Argument ReturnValue Converts a multibyte character string into a wide character string include lt stdlib h gt size t mbstowcs wcs s n function wchar t far wcs Pointer to an area for storing conversion wide character string const char far s Pointer to a multibyte characte
154. WRT 2 Write only flag fine _IOEOF 4 End of file flag fine _IOERR 8 j Error flag fine IORW 1 Read and write flag fine _NFILE 4 Stream number fine _TEXT 1 Text mode flag fine _BIN 2 Binary mode flag remainder omitted Figure E 4 Stream Definition in stdio h Let s look at the elements of the file structures shown in Figure E 4 Items 1 to 6 correspond to 1 to 6 in Figure E 4 Appendix E 94 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 3 int _ flag Stores the read only flag IOREAD the write only flag IOWRT the read write flag _IORW the end of file flag IOEOF and the error flag IOERR 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 EOF 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
155. 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 Sets the processor s operating mode Initializes the stack pointer ISP Register and USP Register Initializes SB register Initializes INTB register Initializes the data near area 1 Default bss NE bss NO bss SE and bss SO sections are cleared to 0 Also the initial values in the ROM area data NEI data NOI data SEI data SOI are transferred to RAM data NE data NO data SE and data SO 2 pragma SB16DATA Extended Functions bss NE and bss NO sections are cleared to 0 Also the initial values in the ROM area data NEI data NOI are transferred to RAM data NE data NO Initializes the data far area 1 Default bss FE and bss FO sections are cleared to 0 Also the initial values in the ROM area data FEI data FOI storing them are transferred to RAM data FE data FO 2 pragma SB16DATA Extended Functions bss SE bss SO bss 6E and bss 60 sections are cleared to 0 Also the initial values in the ROM area data SEI data SOI data 6EI data 6Ol stor ing them are transferred to RAM data SE data SO data 6E data 60 Initializes the heap area Initializes the standard I O function library Initializes FB register
156. acit transfer of variables in 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 WNUA Outputs a warning for unused argument of functions Wnon prototype WNP 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 37 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 this 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 suppl
157. acter string Returns NULL if information cannot be set or searched Appendix E 65 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 6 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 Argument double x arbitrary real number ReturnValue 6 Returns the hyperbolic sine of given real number x Appendix E 66 Appendix E Standard Library sprintf i Dh 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 sqrt x Method function Argument double x
158. ad 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 Lorh 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 o 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 conversion they are ignored L The results of e E f g and G conversion are stored as float Appendix E 64 Appendix E Standard Library setjmp Execution Control Functions Function Saves the environment before a function call Format include lt setjmp h gt int setjmp env Method function Argument jmp_buf env Pointer to the area where environment is saved ReturnValue Returns the numeric value given by the argument of longjmp Description amp Saves the environment to the area specified in env setlocale Function Sets and searches the locale information of a program Format include locale h 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 char
159. adecimal char O acter tolower Converts the character from an upper case to a lower O case 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 Function Contents Reentrant Initialize init Initializes M16C series s input outputs x clearerror Initializes clears error status specifiers x Input fgetc Inputs one character from the stream x getc Inputs one character from the stream x getchar Inputs one character from stdin x fgets Inputs one line from the stream x gets Inputs one line from stdin x fread Inputs the specified items of data from the stream x scanf Inputs characters with format from stdin x fscanf Inputs characters with format from the stream x sscanf Inputs data with format from a character string x Output fputc Outputs one character to the stream x putc Outputs one character to the stream x putchar Outputs one character to stdout x fputs Outputs one line to the stream x puts Outputs one line to stdout x fwrite Outputs the specified items of data to the stream x perror Outputs an error message to stdout x printf Outputs characters with format to stdout X fflush Flushes the stream of an output buffer x fprintf Outputs characters with format
160. al purpose registers R2RO R3R1 16 bit general purpose registers RO R1 R2 R3 or 8 bit general purpose registers ROL ROH R1L R1H and address registers AO A1 The following shows the sequence of operations for calling an assembler function using pragma PARAMETER 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 in pragma PARAMETER asm func R amp Parameters are passed via the RO and R1 registers to the assembler function void main 3 mit i 0x02 int J 0x05 asm func i Calling assembler function Figure 3 13 Example of Calling Assembler Function With Parameters smp2 c glb main main enter 04H pushmR1 line 6 C SRC int i 0x02 mov w 0002H 4 FB i line 7 C SRC int j 0x05 ov w 0005H 2 FB J line 9 C SRC asm func i j 3 mov w 2 FB R1 j Parameters are passed via the RO and R1 mov w 4 FB RO i registers to the assembler function isr asm func Calls assembler function preceded by _ line 10 SES 4 CO SRC popm R1 exitd Figure 3 14 Comp
161. ample pragma SPECIAL 30 func Appendix B 34 Appendix B c Using MR308 Extended Functions Extended Functions Reference Table B 5 Extended Functions for MR308 Extended function Description pragma ALMHANDLER Declares the name of the MR308 alarm handler function Syntax pragma ALMHANDLER function name Example pragma ALMHANDLER alm func pragma CYCHANDLER Declares the name of the MR308 cycle start handler function Syntax pragma CYCHANDLER function name Example pragma CYCHANDLER cyc func pragma INTHANDLER Declares the name of the MR308 interrupt handler function pragma HANDLER Syntax1 pragma INTHANDLER function name Syntax2 pragma HANDLER function name Example pragma INTHANDLER int_func pragma TASK Declares the name of the MR308 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 not be concerned with it d The Other Extensions Table B 6 Extended feature Using Inline Assembler Description Function Description pragma ASM pragma ENDASM Specifies an area in which statements are written in assembly language Syntax pragma ASM pragma Example pragma ASM ENDASM mov w RO R1 add w R1 02H pragma ENDASM pragma JSRA Calls functions using
162. and far in Multiple Declarations essess 8 B 1 10 Notes on near and far Attributes ccccssccsecssecttccsnactdacecescees donid irin isnad i aeaiia 9 a Notes on near and far Attributes of Functions ssenari 9 b Noteszon near and far Modifier Syntak iscsi ien ete etti tee en erre tete ten seta renti chases tied 9 B2 asm FUCO sorisa lea Toce ridet oi edet Dedi calidi ame et ran o b dti Macs 10 B 2 1 OVERVIEW OF ASIN FUNCHON resson nengeri a nanea aaa EaR NERE 10 B 2 2 Specifying FB Offset Value of auto Variable 11 B 2 3 Specifying Register Name of register Variable essen 14 B 2 4 Specifying Symbol Name of extern and static Variable eee 15 B 2 5 Specification Not Dependent on Storage Class sse 18 B 2 6 Selectively suppressing optimization 19 B 2 7 Notes on the asm FUnctlOri uou ci ritratto or beo gancennecetuanstensaivte N EEEE 20 a Extended Features Concerning asm functions eeeeeeeeeeeee 20 Be About Regte s necs sepsis sped e E LUN HEP cease even DupaNdD 21 o Notes on abele cc steil ncmo pear esti a iee Roa iced Rusia 21 B 3 Description of Japanese Characters sse 22 B 3 1 Overview of Japanese Characters ssssssesssseeeeeeneenne enne nnne nennen 22 B 3 2 Settings Required for Using Japanese Characters sse 22 B 3 3 Japanese Characters in Character Strings
163. ani 64 Notes on Handling General purpose and Address Registers susuuss 64 Passing Parameters to an Assembler Function 0 ccceeececceeeeeeeeeneeeeeseeenaeeeeeeees 64 TEM MILI II LIU OI UU E A E 65 Precautions on Transporting between NC Series Compilers sssssuss 65 Dirterenceonmdersultnear Tal x 3 ai cciracease ERO Eder scans cana eda EE E degen Reve i S USER 65 Precautions on Transporting between NC308 and NC30 sss 65 Ditferenmces ini Gall NG CONnVENtlO Mi ccie ssstcstas otc o bci h e tot erue Io Ero soacebetes tap ss sepas 65 Aj mesos Command FORI al dieat eco esset E Side oce mat ioed e ev PEOR Ie leases 1 A 2 nc309 Command Ele Options eiie ter ta ets Cornet pe a Et Leer P Pc a 2 A 2 1 Options for Controlling Compile Driver 2 LIII I DIDIT E E A D 3 SIBI METTI EDDIE 3 Der enai I 4 j X 4 5 LI 5 xuugcnmnEurpme A 6 EJ e 6 SOURCE OS eR 7 GSOUNCEIMANISE ASL unii rete treten eter ete ie loei tie Sie uice inis 7 A 2 2 Options Specifying Output Files io ccr rne eter c te rre eee cus 8 EODEM E 8 Glr directory NAME ee TET 9 A 2 3 Version Informat
164. 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 NC308 M16C80 As for the time of M82 option use M32C80 is defined instead NC308 You can use the token string operator and token concatenated operator with tokens as shown below define debug s t printf x s d x t 2 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 ne ee 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 a X Function Takes in the specified file Format 1
165. area O f Execution Control Functions The following lists execution control functions Table E 7 Execution Control Functions Function Contents Reentrant abort Terminates the execution of the program O longjmp Performs a global jump 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 Function Contents Reentrant acos Calculates arc cosine O asin Calculates arc sine O atan Calculates arc tangent O atan2 Calculates arc tangent O ceil Calculates an integer carry value O cos Calculates cosine O cosh Calculates hyperbolic cosine O exp Calculates exponential function O fabs Calculates the absolute value of a double precision float O ing point number floor Calculates an integer borrow value O fmod Calculates the remainder O frexp Divides floating point number into mantissa and exponent O parts labs Calculates the absolute value of a long type integer O Idexp Calculates the power of a floating point number O log Calculates natural logarithm O log10 Calculates common logarithm O modf Calculates the division of a real number into the mantissa O and exponent parts pow Calculates the power of a number O sin Calculates sine O sinh Calculates hyperbolic sine O s
166. 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 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 51 Appendix E Standard Library memmove Function Format Method Argument ReturnValue Moves the area of a character string include lt string h gt void _far memmove s1 s2 n function void far s1 Pointer to be moved to const void far s2 Pointer to be moved from SIZE LE Ai Saee it ttu Number of bytes to be moved 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 Appendix E 52 Appendix E Standard Library memset Memory Handling Functions Function Set a memory area Format include lt string h gt char far memset s c n Method macro or function Argument void far s Pointer to the memory area to be set at Ini 36 cocta de Data to be set size t n Number of bytes to be set ReturnValue Returns the pointer to the memory area which has been set Description Usually the program code described by macro is
167. argument jsr Sfunc 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 funcl int i int j 1 int k 2 correct void func2 int i int j int k 2 correct void func3 int i 0 int j int k incorrect void func4 int i 0 int j int 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 Appendix B 27 Appendix B Extended Functions Reference B 5 inline Function Declaration NC308 allows you to specify the inline storage class in the similar manner as in C By specifying the inline storage class for a function you can expand the function inline
168. 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 Idexp 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 0 D 3 o Function Defines the structures used in branch functions Function Contents longjmp Performs a global jump setjmp Sets a stack environment for a global jump signal h Function Defines declares necessary for processing asynchronous interrupts stdarg h Function Defines declares the functions which have a variable number of real arguments o r Q Q D Function Defines the macro names which are shared among
169. asm fNRA 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 26 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 handled 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 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 n ANSI standards the char type or singed char type data is always ex
170. assumed when testing performance TableC 2 shows the standard PC environment TableC 1 Standard EWS Environment Item Type of EWS 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 Item Type of PC 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 Item Type of PC OS Version PC environment Type of CPU IBM PC AT or compatible Turbo Linux 7 0 Intel Pentium II Memory 128MB min b C Source File Coding Specifications Table C 4 shows the specifications for coding NC308 C source files Note that estimates are provided for items for which actual measurements could not be achieved TableC 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 C Appendix C NC308 Specifications Overview of C Language Specifications Table C 5 to C 5 lists the NC308 specifications Note that estimates are provided for items for which actual measurements could not be achieved Table C 5 NC308 Specifications
171. ata items output Description Outputs data with the size specified in size to the stream Data is output by the number of times specified in count f 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 Description Reads one character from the stream Interprets code 0x1A as the end code and ignores any subsequent data getchar Function Reads one character from stdin Format include lt stdio h gt int getchar void Method macro Argument No argument used ReturnValue Returns the one input character Returns EOF if an error or the end of the file is encountered Description Reads one character from stream stdin Interprets code 0x1A as the end code and ignores any subsequent data 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 locati
172. auses 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 F Ainterrupt handling function name Example pragma INTERRUPT int func Example pragma INTERRUPT B int func Example pragma INTERRUPT E int func Example pragma INTERRUPT F int func K pragma INTF can also be used for maintaining compatibility with C77 pragma PARAMETER Declares that when calling an assembler function the parameters are passed via specified registers By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the function Syntax fpragma PARAMETERA C Afunction name register name Example pragma PARAMETER asm func RO R1 Example pragma PARAMETER C asm func RO R1 3 Always be sure to declare the prototype of the function before entering this declaration pragma SPECIAL Declares special page subroutine call functions By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the func tion Syntax pragma SPECIALA C Anumber function name Ex
173. 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 NC308 s command line options allow you to modify the default attributes of functions and variables data These are listed in the table below Table B 1 nc308 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 _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 parameter at the function call Figure B 10 Type conversion from near to far When converting type into far 0 zero is expanded as high order address B 1 7 Checking Function for Assigning far Pointer to near Pointer When compiling the warning message assign far pointer to near pointer bank value ignored is output for the code shown in Figure B 11 to show that the high part of the address the bank value has been lost Appendix B 6 Appendix B Extended Functions Reference int func int near int far f_ptr int near n_ptr main
174. ber of logical source lines in input program Depends on amount of available memory Maximum number of levels of nesting include files 40max Maximum number of case names in one switch statement with no nesting of switch state Depends on amount of available memory ment Total number of operators and operands that can be defined in if and elif Depends on amount of available memory Size of stack frame that can be secured per function in bytes 64K max Number of variables that can be defined in pragma ADDRESS Depends on amount of available memory Maximum number of levels of nesting parentheses Depends on amount of available memory Number of initial values that can be defined when defining variables with initialization expres Depends on amount of available memory sions Maximum number of levels of nesting modifier declarators Depends on stack size of YACC Maximum number of levels of nesting declarator parentheses Depends on stack size of YACC Maximum number of levels of nesting operator parentheses Depends on stack size of YACC Maximum number of valid characters per internal identifier or macro name Depends on amount of available memory Maximum number of valid characters per external identifier Depends on amount of available memory Maximum number of external identifiers per source file Depends on amount of available memory Maximum number of identifiers with block scope per block Depends on amount of available memory Maximum number of macros per source file
175. ble name Example pragma SBDATA val pragma SB16DATA Declares that the data uses SB relative addressing of 16bit displacement Syntax pragma SBDATA variable name Example pragma SBDATA val pragma SECTION Changes the section name generated by NC308 Syntax pragma SECTION seclion name new seclion 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 b Using Extended Functions for Target Devices Table B 4 1 2 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 port0 2H K pragma EQU can also be used for maintaining compatibility with C77 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 upperca
176. ble pow x y Method function Argument double x multiplicand double y multiplier ReturnValue 6 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 96 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 flag minimum field width precision modifier 1 L or h conversion specification character Example format 05 8ld ReturnValue amp 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 55 Appendix E Standard Library Specifying format in printf format 1 Conversion specification symbol ed i Converts the integer in the parameter to a signed decimal eu Converts the integer in the parameter to an unsigned decimal eo Converts the integer in the parameter to an unsigned octal e x Converts the integer in the parameter to an unsigned hexadecimal Lowercase ab
177. bler routine sbsym _sym ommit glb sym sym blkb 2 generated file by ut1308 pragma SBDATA Utility SBDATA Size 255 pragma SBDATA data3 size 4 ref 2 pragma SBDATA data2 size 1 ref 1 omitted pragma SBDATA datal size 2 ref 1 End of File Since 2 byte data are SB declared in an assembler routine you subtract 2 bytes of SBDATA declaration from the file generated by ut1308 Example pragma SBDATA datal size 2 ref 1 Comments out Figure G 7 Example of adjust the file generated by utl308 Appendix G 12 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 G 5 2 Generating a SPECIAL Page Function declaration file a Generating a SPECIAL Page Function declaration file It is possible to output SPECIAL page function declaration and SPECIAL page vector definition files by having the absolute module file generated by using the option finfo when compiling processed by utl308 the SBDATA Declaration amp SPECIAL Page Function Declaration Utility Figure G 8 shows an example of input for utl308 Figure G 9 shows an example of a SPECIAL page function declaration file Figure G 10 shows an example of a SPECIAL page vector definition file utl308 sp308 ncrt0 x30 o special lt RET gt 96 Prompt ncrt0 x30 Name of map file Figure G 8 Example utl308 Com
178. bles 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 Frame Base Register FB They may be mapped to registers as a result of optimization The auto variables which are mapped to the stack can be used in the asm function by writing the program as shown in Figure B 18 below asm op code R1 FB variable name Figure B 18 Description Format for Specifying FB Offset Only two variable name can be specified by using this description format The following types are supported fo
179. bss Area 1 The external variables in RAM which do not have initial values are referred to as bss NC308 MANUAL 57 3 3 3 3 1 Chapter 3 Programming Technique Linking Assembly Language Programs with C Programs 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 _ How ever 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 asm_func void Assembler function extern void near prototype declaration void main omitted asm func Calls assembler function Figure 3 11 Example of Calling Assembler Function Without Parameters smp1 c glb main main omitted asm f amp Galls assembler function preceded by jsr rus Figure 3 12 Compiled result of smp1 c smp1 a30 NC308 MANUAL 58 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 gener
180. c utl308 Error Messages Error Messages Table G 2 lists the utl308 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 utl308 Specify a proper option Illegal file extension XXX Extension of input file is illegal Specify a proper file No input x30 file specified No map file specify map file cannot open x30 file file name Map file not found Specify the correct input map file cannot close file file name 0 input file cannot be closed 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 utl308 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
181. cannot be cast to any other type it can neither be cast from the structure or union type nor can it be cast to the structure or union type Write the expression correctly invalid asm s argument 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 invalid bitfield declare The bit field declaration contains an error Write the declaration correctly invalid break statements The break statement is put where it cannot be used Make sure that it is written in switch while do while and for invalid case statements The switch statement contains an error Write the switch statement correctly invalid case value The case value contains an error Write an integral type or enumerated type con stant invalid cast operator Use of the cast operator is illegal Write the expression correctly invalid continue statements The continue statement is put where it cannot be used gt Use it in a while do while and for block invalid default statements The switch statement contains an error Write the switch statement correctly invalid enumerator initialized The initial value of the enumerator is incorrectly specified by writing a variable name for example Write the initial value of the enumerator correctly invalid function argument
182. catable macro assembler and four for the In308 linkage editor by including the as308 and In308 command line options when you start nc308 cpp308 cpp308 is the executable file for the preprocessor cpp308 processes macros starting with de fine include etc and performs conditional compiling if else endif etc ccom308 ccom308 is the executable file of the compiler itself C source programs processed by cpp308 are converted to assembly language source programs that can be processed by as308 aopt308 aopt308 is the assembler optimizer It optimizes the assembler codes output by ccom308 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 could 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 compilin
183. cdef are equivalent to OAH to OFH ex Converts the integer in the parameter to an unsigned hexadecimal Uppercase ABCDEF are equivalent to OAH to OFH ec Outputs the parameter as an ASCII character es 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 ep Outputs the parameter pointer all types in the format 24 bits address en Stores the number of characters output in the integer pointer of the parameter The parameter is not converted ec Converts a double type parameter to the exponent format The format is d dddddde ad et Same as e except that E is used in place of e for the exponent ef Converts double parameters to d dddddd format 99 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 eG Same as g except that E is used in place of e for the exponent 1 In the standard library included with your product the character string pointer is a far pointer All printf functions handle 96s with a far pointer Note that scanf functions use a near pointer by default Appendix E 56 Appendix E Standard Library Specifying format in printf form 2 Flags e Left aligns the result of conversion in the minim
184. cess For example the variable port shown below does not use the readout results so that readout operations are deleted extern int port funC port 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 func port Figure 3 2 Example of a Meaningless Variable Access Optimization Suppressed 2 Meaningless comparison int func char c int i if c 1 i 1 else i 0 return i 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 NC308 MANUAL 51 Chapter 3 Programming Technique 3 Programs not executed No assembler codes are generated for programs which logically are not executed void func int i func2 i return i 10 lt Fragment not executed Figure 3 4 Program Not Executed 4 Operation betw
185. char and signed char type 3 variables of unsigned short and signed short type 4 variables of unsigned int and signed int type 5 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 utl308 and variables to be allocated are picked out of the remainder of the SB area G 4 2 Conditions to establish SPECIAL Page Function declaration The functions to be processed by utl308 are only those external functions that are listed below 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 ult308 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 declaration Utility utl308
186. cify 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 bitO 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 NC308 When register class variables are compiled with option fenable register fER use the format shown in Figure B 36 for register variables in asm functions asm MOV W 0H i 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 registers 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 func tion 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 compiler 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
187. claration is output in the form of a comment for even the variables that are not placed in the SB area When used simultaneously with the sp308 option Because the usage frequency is low SPECIAL declaration is output in the form of a comment for even the functions that are not placed in the SPECIAL page area Execution Output SBDATA declaration example utl1308 sb308 all ncrt0 x30 M16C 80 UTILITY UTL308 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 aA SBDATA Size 255 pragma SBDATA z size 2 ref 2 omit pragma SBDATA vx size 2 ref 1 Output SPECIAL page Function declaration utl1308 sp308 all ncrt0 x30 M16C 80 UTILITY UTL308 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 pragma SPECIAL 255 func size 200 ref 2 omit pragma SPECIAL 254 funcl size 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 at tention because such functions are indicated to ha
188. 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 tunction name The function shown here is declared in multiple files with different storage classes types etc Check how this function is declared Appendix G 15 MEMO NC308 V 5 10 User s Manual Rev 1 00 May 1 2003 REJ10J0021 0100Z COPYRIGHT 2003 RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED 24 N SAS RenesasTechnology Corp 2 6 2 Ote machi Chiyoda ku Tokyo 100 0004 Japan
189. d The include file could not be opened The include files are in the current directory and that specified in the option and environment variable Check these directories 22 illegal file name error e Illegal filename 9Specify 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 assert operation expression Rewrite operation expression correctly 27 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 Oorrect the source file Appendix F 5 Appendix F Error Messages Table F 5 cpp308 Error Messages 3 4 No Error message Description and countermeasure 31 EOF in prepr
190. d buffer size count stream Method function Argument void far buffer Pointer of the location to be stored in size t Size sesssssss Number of bytes in one data item size t COUNTS Maximum number of data items FILE far stream Pointer of stream ReturnValue Returns the number of data items input Description amp 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 If 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 subsequent data Appendix E 32 Appendix E Standard Library free Memory Management Function Function Frees the allocated memory area Format include lt stdlib h gt void free cp Method function Argument void far cp Pointer to the memory area to be freed ReturnValue amp No value is returned Description amp Frees memory areas previously allocated with malloc or calloc No processing is performed if you specify NULL in the parameter frexp Mathematical Functions Function Divides floating point number into mantissa and exponent parts Format include lt math h gt double frexp x prexp Method function Argument double x
191. d long int parameters h d i 0 u x and X conversion is performed on short int and unsigned short int parameters 9 if or h are specified in other than d i o 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 NC308 long double types are processed as double types Threfore if you specify L the parameters are processed as double types Appendix E 58 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 sees Character to be output FILE far stream Pointer of the stream ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to the stream putchar Function Outputs one character to stdout Format include lt stdio h gt int putchar c Method macro Argument int c Character to be output ReturnValue Returns the output character if output normally Returns EOF if an error occurs Description Outputs one character to stdout Appendix E 59 Appendix E Standard Library puts Input Output Functions Function Outpu
192. direction There is no return value Syntax static void sin b char _far pl char far p2 unsigned int count When calculated in 8 bits static void sin w int far pl int far p2 unsigned int count When calculated in 16 bits Appendix B 62 Appendix B Extended Functions Reference o O c Function Strings are transferred in the address incrementing direction from the source address indicated by p1 to the destination address indicated by p2 as many times as indicated by count There is no return value Syntax static void sout b char far pl char far p2 unsigned int count When calculated in 8 bits static void sout w int far pl int far p2 unsigned int count When calculated in 16 bits o o J 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 static void sstr_b char val char _far p unsigned int count calculated in 8 bits static void sstr w int val int _far p unsigned int count calculated in 16 bits ROLC Function The value of val is returned after rotating it left by 1 bit including the C flag Syntax include lt asmmacro h gt static unsigned char rolc_b unsigned char vall When calculated in 8 bits static unsigned int rolc_w unsigned int vall When calculated in 16 bits
193. e Returns the value derived by converting a character string into an long type bcopy integer Memory Handling Functions Function Format Method Variable Copies characters from a memory area to another include lt string h gt void bcopy src dtop size function 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 ReturnValue 6 No value is returned Description Copies the number of bytes specified in size from the beginning of the area specified in src to the area specified in dtop Appendix E 21 Appendix 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 Size t Sizo rniga anii Element size int Cmpa nas 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 Ini
194. e SB register based addressing mode you can reduce the size of your applica tion program ROM size NC308 allows you to declare variables that use the SB regis ter 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 NC308 MANUAL 55 Chapter 3 Programming Technique pragma SBDATA val int val 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 NC308 the function is called with the JSR A instruction However if the program is not too large most functions can be called with the JSR W instruction In this case ROM size will be reduced by doing as follows First Compile with the fJSRW option and check functions which are indicated as errors at link time Then change declarations for the error functions only into declarations using pragma JSRA function name 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
195. e 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 com mon 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 Appendix 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 NC308 will output a warning when you declare the near attribute for a function b Notes on near and far Modifier Syntax Syntactically the near and far modifiers are identical to the const modifier The following code therefore result
196. e character string Format include lt stdlib h gt size_t far wcstombs s wcs n function Method char far s eeeee Pointer to an area for storing conversion Argument multibyte character string const wchar t far wcs Pointer to a wide character string SIZezt Dianae eat a rdv hs Number of wide characters stored ReturnValue Returns the number of stored multibyte characters if the character string was converted correctly Returns 1 if the character string was not converted correctly Appendix E 86 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 6 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 87 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
197. e expression pragma ASM line too long then cut 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 directive conflict pragma of different functions is specified for one function Write it correctly pragma DP n DATA format error ignored NC79 only 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 pragma DMAC duplicate The same pragma DMAC is defined twice Write it correctly pragma DMAC variable must be far pointer for variable name ignored e Variable declared by pragma DMAC needs to be a far pointer DMAC declaration is ignored Write it correctly pragma DMAC variable must be unsigned int for variable name ignored e Variable declared by pragma DMAC needs to be unsigned int type DMAC declaration is ig nored Write it correctly pragma DMAC s variable must be pre declared ignored Variable declared by pragma DMAC needs a type declaration Write it correctly pragma DMAC register conflict e Multiple variables are allocated to the same reg ister Write it correctly pragma DMAC unknown register name used Unknown register is used in pragma DMAC
198. e i which satisfies condition 1 void func static int i 20 Variable i which satisfies condition 2 remainder omitted Assembly language source program Section rom NE ROMDATA 80 i C s name is i Variable i which satisfies word 0014H condition 2 gib m _i Variable i which satisfies condition 1 byte 00H byte 00H Figure B 62 Example Use of pragma ROM Declaration Note This facility is provided to maintain compatibility with NC77 and NC79 The variable normally must be located in the rom section using the const modifier Appendix B 36 Appendix B Extended Functions Reference pragma SBDATA Function Declares that the data uses SB relative addressing Syntax pragma SBDATAAvaluable name Description The M16C 80 series allows you to choose instructions that 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 The variable declared to be pragma SBDATA is declared by the assembler s pseudo instruction SBSYM 2 If pragma SBDATA is specified for anything other than a variable it is ignored as invalid 3 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 wh
199. e 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 NC308 allows you to accomplish an efficient function call by declaring the prototype of a function This means that unless a function is declared of its prototype in NC308 arguments of that function are placed on the stack following the rules listed in Table 3 1 when calling the function Table 3 1 Rules for Using Stack for Parameters Data type s Rules for pushing onto stack char Expanded into the int type when stacked signed char float Expanded into the double type when stacked otherwise Not expanded when stacked For this reason NC308 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 th
200. e specific to that function If while that function is called and is being executed an interrupt occurs and that same function is called by the interrupt processing program the global variables used by the function when first called may be overwritten This does not occur to global variables of functions with reentrancy indicated by a O in the table However if the function does not have reentrancy indicated by a X in the table care must be taken if the function is also used by an interrupt processing program Appendix E 11 Appendix E Standard Library b Character Handling Functions The following lists character handling functions Table E 3 Character Handling Functions Function Contents Reentrant isalnum Checks whether the character is an alphabet or nu O meral isalpha Checks whether the character is an alphabet O iscntrl Checks whether the character is a control character O isdigit Checks whether the character is a numeral O isgraph Checks whether the character is printable except a O blank islower Checks whether the character is a lower case letter 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 line isupper Checks whether the character is an upper case letter O isxdigit Checks whether the character is a hex
201. e than once in typedef Write the identifier correctly Appendix F 17 Appendix F Error Messages Table F 17 ccom308 Error Messages 10 14 Error message Description and countermeasure invalid return type The type of return value of the function is incor rect Write it correctly invalid sign specifier 9 Specifiers signed unsigned are described twice or more Write the type specifier correctly invalid storage class for data The storage class is erroneously specified Write it correctly invalid struct or union type Structure or union members are referenced for the enumerated type of data Write it correctly invalid truth expression The void struct or union type is used in the first expression of a condition expression Use scalar type to write this expression invalid type specifier The same type specifier is described twice or more as in int int i or an incompatible type specifier is described as in float int i Write the type specifier correctly invalid type s bitfield A bit field of an invalid type is declared gt Use the integer type for bit fields invalid types specifier long long long 9 Specifiers long are described thrice or more Check the type invalid unary operands Use of the unary operator is illegal Check the right side expression of the operator invalid unary
202. e 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 75 Example of pragma INTERRUPT Declaration Note For compatibility with C77 versions prior to V 2 10 before can accept files that include pragma INTF Appendix B 47 Appendix B Extended Functions Reference pragma PARAMETER Function Declares an assembler function that passes parameters via registers Syntax pragma PARAMETERA C Aassembler function name register name register name Description This extended function declares that when calling an assembler function its param eters are passed via registers float types long types 32 bit registers R2RO and R3R1 far pointer types 24 bit registers R2RO R3HR1 A1 and AO near pointer types 16 bit registers A0 A1 R0 R1 R2 and R3 char types and _Bool types 8 bit registers ROL ROH R1L and R1H Register names are NOT case sensitive C By specifying switch c it is possible to generate code to need the register to saving it to a stack at
203. ection Ns P Figure 2 22 Example Setting of Section Starting Address sect308 inc If no starting address is specified for a section that section is mapped immediately after the 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 data 6E section bss 6E section data 60 section bss 60 section stack section heap section b Sections mapped to ROM rom NE section data SEI section rom NO section data SOI section rom FE section data NEI section rom FO section data NOI section data FEI section program section data FOI section interrupt section data 6El section fvector section data 60 section NC308 MANUAL 42 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 sec
204. ection Mapping 2 2 NC308 MANUAL 40 Chapter 2 Basic Method for Using the Compiler b Outline of memory mapping setup file About sect308 inc This program is included 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 Sets the interrupt vector table Sets the fixed vector table c Modifying the sect308 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 m O e C2 e Map order each section and set starting addresses v Set the interrupt vector table wv Set the special page vector table ourgogioes Figure 2 21 Example Sequence for Modifying Startup Programs NC308 MANUAL 41 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 sect308 inc include file of the startup program The sections are mapped to memory in the order they are defined in sect308 inc Use the as308 pseudo instruction ORG to specify their starting addresses Figure 2 22 is an ex ample of these settings section program S ORG OFF0000H Specifies the starting address of the program s
205. ector address table NC308 MANUAL 47 Chapter 2 Basic Method for Using the Compiler Figure 2 31 is an example of registering the UART1 send interrupt processing function uarttrn lword dummy int uartO trance for user lword dummy int uartO receive for user gib _uarttrn Process 1 above lword uarttrn uartl trance for user Process 2 above omitted Figure 2 31 Example Setting of Interrupt Vector Addresses sect308 inc f Setting SPECIAL Page Vector Table When using pragma SPECIAL use sect308 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 SPECIAL 42 SPECIAL 41 SPECIAL 40 30 05 U H d Q D L 22 L 21 20 L 19 NnNnnnn wn U U UU t J B pm om m a poppe E 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 NC308 MANUAL 48 Chapter 3 Programming Technique Chapter 3 Programming Technique This chapter describes precautions to be observed when programming with
206. ects an error it displays an error message on the screen and stops the compiling process The following shows the format of error messages and warning messages nc308 error message Figure F 1 Format of Error Messages from the nc308 Compile Driver Error cpp308 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 cpp308 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 cpp308 mes sages are listed according to their Nos The messages output by other programs are listed alphabetically 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 F 2 Appendix F Error Messages nc308 Error Messages Tables F 1 and F 2 list the nc308 compile driver error messages and their countermea sures Table F 1 nc308 Error Messages 1 2 Error message Description and countermeasure Arg list too long The command line for starting the respective process ing system is longer than the character string defined by the system Specify a NC308
207. ed more than twice in asm state ment Make sure that b is described only once asm s string must not have more than 3 or or is described more than thrice in asm statement Make sure that is described only twice auto variable s size is zero An array with 0 elements or no elements was declared in the auto area gt Correct the coding bitfield width exceeded 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 bitfield width is not constant integer The bit width of the bit field is not a constant Use a constant to write the bit width can t get bitfield address by amp operator The bit field type is written with the amp operator Do not use the amp operator to write the bit field type can t get inline function s address by amp operator The amp operator is written in an inline function Do not use the amp operator in an inline function can t get size of bitfield The bit field type is written with the sizeof opera tor Do not use the sizeof operator to write the bitfield type Appendix F 10 Appendix F Error Messages Table F 10 ccom308 Error Messages 3 14 Error message Description and countermeasure can t get void value An attempt is made to get void type data as in cases where the ri
208. een FUNCIONS xa oce ee Ev Free eode a ceo pee ethene 11 DA Securing auto Vartable ATG8 iion ioci tese acq hide 14 DS Rules of Escaping of the REGIST Lost trn te ridet deer ee tn Pee tes 15 Appendix E Standard Library E 1 Standard Header Piles sii db tte aiaia iaa a essai iadaaa AEs 1 E 4 4 Contents of Standard Header Fil6S n cpi petiere rto ead tees inte per utres stars 1 E 1 2 Standard Header Files Reference essssssessssseseeenenneen nennen nnns 1 E 2 Standard Function Reference raisses ai nnne nnns nte 10 E 2 1 Overview of Standard LIDraly uci cct aes tese b creed Ec ca isole E 10 E 2 2 Listof Standard Library Functions by F nctilOn unit teer 11 a Sing Handling FPUNCHONS scc eeu ertt cx be algo decus M Eau acacia 11 Character Handling fMWnellofiS 2 poscis deo o ep Rar acd sede t Ane bien 12 es Iiriput Out pul FUNCION Sarassa teca oso n E erin ce b e eae nite i eto rt dan 13 d Memor Management Bellis ecce cium oat ia apres p cetac eub eee sa oL BI Pop Peto t visu P rtis ence ees 13 e Memory Handig FUNCIONS coi oact s tete abis obo cenextatsnbis sebo tetto aer E Te Feb S tar AE 14 i gt Execution CORMOIIEU MCHONS atari eni tcu oiti beso test Eo eret d sehe tot Ib fe ure sas tob ahis iee 14 d Mathemancal E UFIGHOTIS ssa ico iac obtu eo terea ote PHP PE Aaaa 15 li nteger Anthimene FRUNCHONS sus eccesso rico Ente ta emend Pe top saveuadiens TA N E 15 i Character String Value Conve
209. een constants Operation between constants is performed when compiling void func int i int i 1 2 Operation on this part is performed when compiling return i Figure 3 5 Program Not Executed b Selection of optimum instructions Selection of optimum instructions as when using the STZ instruction or outputting shift instructions for division multiplications is always performed regardless of whether optimization options are specified or not b About the volatile qualifier Use of the volatile qualifier helps to prevent the referencing of variables the order in which they are referenced the number of times they are referenced etc from being affected by optimization However avoid writing statements like those shown below which will be interpreted ambiguously int a int volatile b c a b oc whether a c or a b a b whether a b or a b 1 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 NC308 MANUAL 52 Chapter 3 Programming Technique 3 1 4 Precautions on Using register Variables a register quali
210. ef ifndef Use elseif or else only after if ifdef ifndef 54 endif not exist No endif to match if ifdef ifndef Add endif to the source file 55 endif sequence error endif was used without if ifdef ifndef Use endif only after if ifdef ifndef Appendix F 6 Appendix F Error Messages Table F 6 cpp308 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 cpp308 Warning Messages Table F 7 shows the warning messages output by cpp308 and their countermeasures Table F 7 cpp308 Warning Messages No Warning Messages Description and countermeasure 81 reserved id used You attempted to define or undefine one of the following macro names reserved by cpp308 FILE LINE DATE TIME Use a different macro name 82 assertion warning The result of an assert operation expression was 0 Check the operation expression 83 garbage argument Characters other than a comment exist after a preprocess command Specify characters as a comment string after the preprocess command 84 escape sequence out of range for character An escape sequence in a character constant or character string constant exceeded 255 charac ters Reduce the escape sequence to within 255 char
211. embers appear Note that you can also use the nc308 command line option fchar_enumerator fCE to force enumerator types to have the same internal representation as unsigned char types D 1 4 Pointer Type Table D 3 shows the number of bytes used by pointer type data Table D 3 Data Size of Pointer Types Type Existence of Sign Bit Size Range near pointers None 16 0 OxFFFF far pointers None 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 c int i s addres s higher Figure D 4 Example of Placement of Structure 1 2 Appendix D 3 Appendix D C Language Specification Rules Normally 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 o
212. ement M82 Function Generates object code for M32C 80 Series Appendix A 35 Appendix A Command Option Reference A 2 7 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 llibraryfilename Specifies a library file that is used by In308 when linking files Mibraryfilename Function Specifies a library file that is used by In308 when linking files The file exten sion can be omitted Syntax nc308A lfilenameA lt C source file name gt Execution nc308 v lusrlib ncrt0 a30 sample c example M32C 80 M16C 80 Series NC308 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 as308 N ncrt0 a30 sample c Cpp308 sample c o sample i DM16C DNC308 ccom308 sample i o sample a30 main as308 N sample a30 1n308 ncrt0 r30 sample r30 1l usrlib o ncrt0 In this example the option is used to specify a library named usrlib lib X Notes 1 In file specification the extension can be omitted If the extension 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 NC3068 links by default a library nc308lib lib in the directory that is speci fied in environment variable LIB308 If you
213. ement 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 38 Appendix A Command Option Reference Wstdout Function Outputs error messages to the host machine s standard output stdout Execution A nc308 c Wstdout sample c gt err doc example A type err doc M32C 80 M16C 80 Series NC308 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 port00 gt port00 0x00 Sorry compilation terminated because of these errors in main A gt XR Supplement Use this option to save error output etc to a file by using Redirect in the MS Windows95 version personal computer version Note In this Compiler for MS Windows version personal computer version errors from as308 and In308 invoked by the compile driver are output to the standard output regardless of this opt
214. en allocating memory for it 5 As opposed to the same variable 4pragma SBDATA pragma SB16DATA cannot be specified simultaneously 6 If pragma SBDATA is declared for ROM data the data is not placed in a SBDATA attribute section Example pragma SBDATA sym data struct sym data har bitO0 har bitl har bit2 har bit4 har bit5 har bit6 e c e char bit3 e c e char bit7 sym data func void sym_data bitl 0 omitted V Figure B 63 Example Use of pragma SBDATA Declaration 1 Do not write a pragma SBDATA declaration for ROM data Appendix B 37 Appendix B Extended Functions Reference pragma SB16DATA SB Relative Addressing Using of 16bit displacement Variable Description Function Function Declares that the data uses SB relative addressing of 16bit displacement Syntax pragma SBDATAAvaluable name Description The M16C 80 series allows you to choose instructions that can be executed efficiently by using SB relative addressing Section accessed by SB relative addressing When it has arranged to the far area pragma SB16DATA declares that SB relative addressing of 16bit displacement can be used for the variable when referencing data This facility helps to generate ROM efficient code Rules 1 Section accessed by SB relative addressing when using pragma SB16DATA It is necessary to arrange to a far domain Therefore it is necessary to change
215. ent 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 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 format Pointer of the format specifying character string va list api sienne Pointer of argument list ReturnValue 6 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 85 Appendix E Standard Library vsprintf Function Output to a buffer with format Format Hinclude stdarg h include lt stdio h gt int vfprintf s format ap Method function Argument char far S esiseina Pointer of the location to be store const char far format Pointer of the format specifying character string Va list ap iet ciere Pointer of argument list ReturnValue Returns the number of characters output Description amp 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 multibyt
216. er 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 aS GLB asm func ECTION program asm func omitted MOV I 01A000H R2RO FCLR D B FSET U RTS END Figure 3 16 Example of Coding Assembler Function to Return long type Return Value c Referencing C Variables Because assembler functions are written in different files from the C program only the C global variables can be referenced When including the names of C variables in an assembler function precede them with an underscore Also in assembler language programs external variables must be de clared 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 NC308 MANUAL 61 Chapter 3 Programming Technique C program unsigned int counter C program global variable main
217. es 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 Section 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 Attribute Meaning Target section base name Section containing initial values of data data N F S 6 N near attribute data bss rom F far attribute S SBDATA attribute data bss 6 SB16DATA attribute data bss E O E Even data size data bss rom O Odd data size 1 near and far are NC308 modifiers used to clarify the addressing mode near accessible from 000000H to OOFFFFH far accessible from 000000H to OFFFFFFH NC308 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
218. es 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 sect308 inc source program list ek ck ck ck ck ck kk kk ck Ck ck Ck ck Ck Ck Sk ck Sk ck ck ck ck ck ck ck ck koc ck ck kk kk KKK KKK kc Sk ck kk ck oko ck ck ck koc koc kk koc ko ck kk kk ko ko ko Sk ko Sk ok kk C COMPILER for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED This program is applicable when using the basic I O library r r E f E ts H ncrt0 a30 NC308 startup program r F Id ncrt0 a30 v 1 17 20xx 06 18 10 08 54 XXXXXXXX Exp a ek Ck ck KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KK KKK ck Sk kk ok ko ko Sk ok ko ke ko VECTOR_ADR equ Offfd00h 4 1 defines the heap size 2 defines the user stack size 3 defines the interrupt stack size i 4 defines the start address of interrupt vector table Figure 2 6 Startup Program List 1 ncrt0 a30 1 4 NC308 MANUAL 20 Chapter 2 Basic Method for Using the Compiler macro define for special page Format H SPECIAL number SPECIAL macro NUM org OFFFFFEH NUM 2 glb SPECIAL NUM word SPECIAL QNUM amp OFFFFH endm list OFF list ON when copy less 64K byte BZERO macro TOP_ SECT_ mov b 00H ROL mov l TOP_ A1 mov w si
219. es 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 le nc308 E sample c example M32C 80 M16C 80 Series NC308 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED line 1 sample c omitted line 1 usr3 tool toolusr work308 inc308 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 ccom308 as308 or In308 are generated Appendix A 4 Appendix A Command Option Reference Compile driver control Function Invokes only preprocess commands creates a file extension i and stops processing Execution nc308 P sample c example M32C 80 M16C 80 Series NC308 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 1 toolusr 2835 Aug 17 11 28 sample c rw r 1 toolusr 2322 Aug 17 11 30 sample i M Notes 1 When this option is specified no assembly source file extensions a
220. ether the character is an alphabet A Z a z Format include ctype h int isalpha c Method macro Argument int c Character to be checked Return Value 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 Ox1f 0x7f Format include lt ctype h gt int iscntrl c Method macro Argument int c Character to be checked ReturnValue 6 Returns any value other than 0 if a numeral Returns 0 if not a control character Description Determines the type of character in the parameter isdigit Character Handling Functions Function Checks whether the character is a numeral 0 9 Format include ctype h int isdigit c Method macro Argument int c Character to be checked ReturnValue amp 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
221. 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 44 5 6 7 processing to call function func and construct stack frames used in function func is shown in Figure D 17 Processing 8 49 1 0J 1 1 processing to return from function func to function main is shown in Figure D 18 Variable j Variable k OLD FB 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 Return Return address address vi yj Variable j Variable j Variable Variable k Old FB Old FB Old FB Stack usage state of 3 4 Stack usage state of 5 Stack usage state of 6 Stack usage state of 7 When PUSH instruction When JSR instruction When ENTER instruction completed completed completed Figure D 18 Calling Function func and Entry Processing Return value of func Return addres S Argument y j Argument Z k Variable i Variable j Variable j Old FB Old FB Stack uage state of 8 Stack usage state of 9 Stack usage state of 10 11 When EXITD instruction completed Figure D 19 Exit Processing of Function func Appendix D 13 D 4
222. f is the pointer operator the right side expres sion is not pointer type For a multiplication check the expressions on the left and right sides of the operator For a pointer check the type of the right side expression invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operator contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid lt lt operands The lt lt operation contains an error Check the expressions on the left and right sides of the operator invalid operands The lt lt 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 ccom308 Error Messages 7 14 Error messa
223. f 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 Figure C 10 Format of Selection Statement e Iteration Statement Use the format of iteration statement shown in Figure C 11 while expression statement do statement while expression for expression expression _ expression statement opt opt 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 C 3 1 Cee Preprocess commands start with the pound sign and are processed by the cpp308 preprocessor This chapter provides the specifications of the preprocess commands List of Preprocess Commands Available Table C 13 lists the preprocess commands available in NC308 Table C 13 Li
224. f mapping Example pragma STRUCT TAG zi unpack struct TAG char c 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 Cc int T 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 Bitfield Types Bitfield types are mapped from the least significant bit Figure D 7 is an example of mapping Example raa char b1 1 char b2 1 char b3 1 char b4 1 char b5 1 char b6 1 char b7 1 js 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 Js address higher Figure D 8 Example of Placement 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 DSi Appendix D C Language Specification Rules Sign Extension Rules Under the ANSI and
225. far if data func remainder omitted Figure B 2 Example of Variable Declaration b near area far area df d ata 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 far type 4 byte variable A declaration ex ample of pointer type variables is shown in Figure B 4 Example int ery Figure B 4 Example of Declaring a Pointer Type Variable 1 2 Because the variables are located near and take on the pointer variable type far the description in Figure B 4 is interpreted as in Figure B 5 Example int far near ptr Figure B 5 Example of Declaring a Pointer Type Variable 2 2 The variable ptr is a 4 byte variable that indicates the int type variable located in the far area The ptr itself is located in the near area Memory mapping for the above example is shown in Figure B 6 Figure B 6 shows memory maps for above examples near area _ Pt qd ars po 1 ptr 2bytes Y Figure B 6 Memory Location of Pointer type Variable Appendix B 4 Appendix B Extended Functions Reference When near and far is explicitly specified determine the size of the address at which to store the variable and function that is written on the right side A declaration of pointer type variables that handle addresses is shown in Figure B 7
226. fication 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 exam ine 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 register qualified 3 1 5 About Startup Handling Startup may need to be modified depending on the type of microcomputer you are using or depending on your application system For modifications pertinent to the type of microcomputer consult the data book etc for your microcomputer and correct the startup file included with the compiler package be fore use NC308 MANUAL 53 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 data types 2
227. fined with different types each time Always use the same type when declaring a vari able twice typedef initialized An initialize expression is described in the vari able declared with typedef Delete the initialize expression uncomplete array pointer operation An incomplete multidimensional array has been accessed to pointer Specify the size of the multidimensional array undefined label label used e The jump address label for goto is not defined in the function Define the jump address label in the function union or enum s tag used for struct The tag name for union and enumerated types is used as a tag name for structure Change the tag name unknown function argument vari able name An argument is specified that is not included in the argument list Check the argument unknown member member name used A member is referenced that is not registered as any structure or union members Check the member name unknown pointer to structure identifier variable 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 unknown size of struct or union structure or union is used which has had its Size not determined Declare the structure or union before declaring a structure or union variable unknown structure identifier vari able name
228. 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 NC308 SECTION program 1 GLB asm func lt 2 asm func 3 PUSHC FLG 4 PUSHM R3 R1 5 MOV L SYM1 R3R1 POPM R3 R1 6 POPC FLG 7 RTS 8 END 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 2 Do not need to save the registers RO register and other registers for return values NC308 MANUAL 60 Chapter 3 Programming Technique b Returning Return Values from Assembler Functions When returning values from an assembler function to a C language program registers can be used through which to return the values for the integer pointer and floating point types Table 3 2 lists the rules on calls regarding return values Figure 3 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 point
229. g Format include lt string h gt char far strstr s1 S2 Method function Argument const char far s1 Pointer to the character string to be searched in const char far s2 Pointer to the character string of the character to be searched for ReturnValue Returns the position pointer where the specified character is found Returns NULL when the specified character cannot be found Description Returns the 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 79 Appendix E Standard Library strtok Function Divides some character string from a character strin
230. g so that the Inspector information will be added to the absolute module file x30 In the entry version this option cannot be specified utl308 utl308 is the execution file for the SBDATA declaration utility and SPECIAL page Function declara tion Utility By processing the absolute module file x30 utl308 generates a file that contains SBDATA declarations located in the SB area beginning with the most frequently used one and a file that contains SPECIAL page function declarations located in the SPECIAL page area beginning with the most frequently used one To use utl308 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated 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 information In the entry version this option cannot be specified 1 The inspector information refers to one that is generated by NC308 when the compile option finfo is specified NC308 MANUAL 2 1 3 1 3 1 1 3 2 Chapter 1 Introduction to NC30
231. g into tokens Format include lt string h gt char _far strtok s1 s2 Method function Argument char far s1 Pointer to the character string to be divided up const char far s2 Pointer to the punctuation character to be divided with ReturnValue Returns the pointer to the divided token when character is found Returns 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 s1 is NULL this instruction returns each token as it is encountered NULL is re turned 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 80 Appendix E Standard Library strtol Character String Value Convert Function Function Converts a character string into a long type integer Format Hinclude lt string h gt long strtol s endptr base Method function Argument const char far s Pointer to the converted character string char far far endptr Pointer to the remaining character strings that have not been converted int DASE coegerit Base of values to be read in 0 to 36
232. ge Description and countermeasure invalid lt operands The lt operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid gt operands The gt operation contains an error Check the expressions on the left and right sides of the operator invalid gt gt operands The gt gt operation contains an error Check the expressions on the left and right sides of the operator invalid gt gt operands The gt gt operation contains an error Check the expressions on the left and right sides of the operator invalid operands The left side expression of is not array type or pointer type Use an array or pointer type to write the left side expression of invalid z operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The operation contains an error Check the expressions on the left a
233. ge class for argument interrupt ignored An interrupt function is declared in declaration statement within a function Declare it outside a function incomplete array access An attempt is made to reference an array of in complete Define size of array incomplete return type An attempt is made to reference an return vari able of incomplete type Check return variable incomplete struct get by An attempt is made to reference or initialize an array of incomplete structs or unions that do not have defined members Define complete structs or unions first Appendix F 12 Appendix F Error Messages Table F 12 ccom308 Error Messages 5 14 Error message Description and countermeasure incomplete struct member An attempt is made to reference an struct mem ber of incomplete gt Define complete structs or unions first incomplete struct initialized 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 incomplete struct return function call An attempt is made to call a function that has as a return value the of incomplete struct or union that does not have defined members gt Define a complete struct or union first incomplete struct union s mem ber access An attempt is made to reference members of an incomplete struct or unio
234. ght side of an assignment ex pression is the void type Check the data type can t output to file name The file cannot be wrote Check the rest of disk capacity or permission of the file can t open file name The file cannot be opened Check the permission of the file can t set argument The type of an actual argument does not match prototype declaration The argument cannot be set in a register argument Correct mismatch of the type case value is duplicated 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 conflict declare of variable name The variable is defined twice with different stor age classes each time Use the same storage class to declare a variable twice conflict function argument type of variable name The argument list contains the same variable name Change the variable name declared register parameter function s body declared The function body for the function declared with pragma PARAMETER is defined in C Do not define in C the body for such function default function argument conflict The default value of an argument is declared more than once in prototype declaration Make sure that the default value of an argument is declared only once default is duplicated The default value is used more tha
235. gister assignments in the program under the above situation When this option is specified the following register specified variables are forcibly 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 Appendix A 32 Appendix A Command Option Reference fno_align fNA Function Does not align the start address of the function In the entry version this option cannot be specified f JSRW Function Changes the default instruction for calling functions to JSR W supplement When calling a function that has been defined external to the source file the JSR A command is used by default This option allows it to be changed to the JSR W command Change to the JSR W command helps to compress the generated code size Conversely if a function is called that is located 32 Kbytes or more forward or backward from the calling position the JSR W com mand 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 Appendix A 33 Appendix A Command Option Reference fuse DIV fUD Function This option changes generated code for divide operation In the entry version this opt
236. gnment 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 declarations Appendix A 43 Appendix A Command Option Reference Wno_used_argument WNUA Function Outputs a warning for unused arguments function Appendix A 44 Appendix A Command Option Reference A 2 9 Assemble and Link Options Table A 9 shows the command line options for specifying as308 and In308 options Table A 9 Assemble and Link Options Option Function as308A lt option gt Specifies options for the as308 link command If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified In3808A lt option gt Specifies options for the In308 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 45 Appendix A Command Option Reference as308 option Assemble link option Function Specifies as308 assemble command options If you specify two or more options enclose them in double quotes In the entry version this option cannot be specified Syntax nc308A as308A option1Aoption2 A lt C source file gt Execution n the example below the assembler list file is generated when compiling example nc308 v as3
237. gram 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 clearing them B and D flags 2 Call the C subroutine only after setting the U flag NC308 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 HEAP SIZE definition HEAPSIZE equ 300h 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 INTERRUPT VECTOR ADDRESS definition VECTER_ADR equ Offfd00h Figure 2 22 Example of Setting Top Address of Interrupt Vector Table ncrt0 a30 T
238. handler name Description By using the above format to declare a cyclic handler a function written in C NC308 generates the code for the cyclic handler to be used at the entry and exit points of the function 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 pragma CYCHANDLER are valid 4 No processing occurs if you specify other than a function name 5 No error occurs if you duplicate pragma CYCHANDLER declarations 6 A compile error occurs if you use any function specified in one of the following decla rations in pragma CYCHANDLER pragma INTERRUPT e pragma INTHANDLER pragma HANDLER pragma ALMHANDLER e pragma TASK Example include mrXXX h include ld ont pragma CYCHANDLER cyc void cyc void Be sure to declare as type void omitted Figure B 79 Example of pragma CYCHANDLER Declaration Appendix B 51 Appendix B Extended Functions Reference pragma INTHANDLER pragma HANDLER Function Declares an MR308 OS dependent interrupt handler Syntax 1 pragma INTHANDLERAinterrupt handler name 2 pragma HANDLERAinterrupt handler name Description By using the above format to declare an interr
239. har movll unsigned char vall unsigned char val2 to low of val2 from high of vall static unsigned char movlh unsigned char vall unsigned char val2 to high of val2 from low of vall static unsigned char movhl unsigned char vall unsigned char val2 to low of val2 from high of vall static unsigned char movhh unsigned char vall unsigned char val2 to high of val2 from high of vall Appendix B 65 Appendix C Overview of C Language Specifications Appendix C Overview of C Language Specifications In addition to the standard versions of C available on the market C language specifica tions include extended functions for embedded system C 1 Performance Specifications C 1 1 Overview of Standard Specifications NC3068 is a cross C compiler targeting the M16C 80 series In terms of language specifi cations it is virtually identical to the standard full set C language but also has specifica tions to the hardware in the M16C 80 series and extended functions for embedded system Extended functions for embedded system near far modifiers and asm function etc e Floating point library and host machine dependent functions are contained in the stan dard library Appendix C 1 Appendix C Introduction to NC308 Performance This section provides an overview of NC308 performance a Test Environment Overview of C Language Specifications Table C 1 shows the standard EWS environment
240. have matching pragma ENDASM Write pragma ENDASM No declarator The declaration statement is incomplete Write a complete declaration statement Not enough memory UNIX version The swap area is insufficient Increase the swap area MS Windows 95 98 NT version The memory area is insufficient Increase the memory or the swap area not have long char Type specifiers long and char are simultaneously used Write the type specifier correctly not have long float Type specifiers long and float are simultaneously used Write the type specifier correctly not have long short Type specifiers long and short are simulta neously used Write the type specifier correctly not static initializer for variable name 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 not struct or union type The left side expression of gt is not the structure or union type Use the structure or union type to describe the left side expression of gt redeclare of variable name An variable name has been declared twice Change the name for either of the two variable name redeclare of enumerator An enumerator has been declared twice Change the name for either of the two enumera tors
241. he bit position It is the range of 0 65535 Only the decimal digit The Address Append B or b to binary numbers Append O or o to octal numbers Write decimal integers only Append H or h to hexadecimal numbers If the number starts with letters A to F precede it with O Only a _Bool type variable can be specified to be a variable name It becomes an error when variables other than _Bool type are specified All storage classes such as extern and static for variables specified in pragma BITADDRESS are invalid Variables specified in pragma BITADDRESS are valid only for variables defined outside the function pragma BITADDRESS is valid for previously declared variables pragma BITADDRESS is invalid if you specify other than a variable No error occurs if a pragma BITADDRESS declaration is duplicated but the last declared address is valid An error occurs if you include an initialization expression Normally pragma BITADDRESS operates on I O variables so that even though volatile may not actually be specified the compiler processes them assuming volatile is specified pragma BITADDRESS io 1 100H Bool io void func void Figure B 70 pragma BITADDRESS Declaration Appendix B 43 Appendix B Extended Functions Reference pragma DMAC Function The DMAC register inside CPU is assigned to the specified external
242. he correct storage class incomplete array access An incomplete multidimensional array has been accessed Specify the size of the multidimensional array incompatible pointer types The object type pointed to by the pointer is incor rect Check the pointer type incomplete return type An attempt is made to reference an return vari able of incomplete type Check return variable incomplete struct member An attempt is made to reference an struct mem ber of incomplete Define complete structs or unions first Appendix F 27 Appendix F Error Messages Table F 26 ccom308 Warning Messages 6 11 Warning message Description and countermeasure init elements overflow ignored 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 inline function is called as normal function before change to static function The function declared in storage class inline is called as an ordinary function gt Always be sure to define an inline function before using it integer constant is out of range The value of the integer constant exceeded the value that can be expressed by unsigned long Use a value that can be expressed by unsigned long to describe the constant interrupt function called The func
243. he 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 Mt NS m 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 math h 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 returns a value in the range from 0 to p radian asin Mathematical Functions Function Calculates arc sine Format include math h double asin x Methog 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 amp Returns a value in the range from 7 2 to 1 2 radian atan2
244. he sample startup program has had values set for the tables listed below OFFFDOOH lt OFFFDFFH Interrupt vector table OFFFEOOH lt OFFFFFFH 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 program 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 NC308 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 after reset this program will start 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 NC308 MANUAL 36 Chapter 2 Basic Method for Using the Compiler 2 2 3 Customizing for NC308 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 NC308 the user must determine the memory mapping With NC308 storage class variables variables with initial valu
245. her Extensions NC308 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 ASMand 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 NC308 suspends processing if no pragma ENDASM is found the corresponding pragma ASM In assembly language description do not write statements which will cause the regis ter contents to be destroyed When writing such statements be sure to use the push and pop instructions to save and restore the register contents 2 Within the pragma ASM to pragma ENDASM section do not reference 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 eo rs for i 0 i lt 10 1i func2 pragma ASM Gs z This area is output directly to an LOOP1 2 assembly language file MOV W 0FFH RO omitted FSET I pragma ENDASM Figure B 82 Example of pragma ASM ENDASM Suppliment t is this assembly language program written
246. his 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 NC308 inline void func int i void main void func 1 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 func tion as an inline function later your inline specification is ignored and all functions are handled as static functions In this case NC308 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 gt Figure B 57 Example of inappropriate code of inline function 2 Appendix B 30 Appendix B Extended Functions Reference 3 Regarding the address of an inline function The inline function itself does not have an address Therefore if the amp operator is used for an inline function the software assumes an error See Figure B 58 int func int i return i int f int f amp func Error Message Error ccom smp c line 10 can t get inline function s addres
247. ied depending on the system in which the microcomputer is to be used NC308 MANUAL 33 Chapter 2 Basic Method for Using the Compiler 2 Settings When Not Using Memory Management Functions To use the memory management functions calloc and malloc etc not only is an area allocated in the heap section but the following settings are also made in ncrt0 a30 1 Initialization of external variable char _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 glb __msize mov l heap_top 0FFFFFFH mbase mov l heap top amp OFFFFFFH mnext mov l HEAPSIZE amp OFFFFFFH msize endif 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 original state where you exit the initialization pro
248. ier typedef will be ignored gt Delete typedef assign far pointer to near pointer bank value ignored The bank address will be nullified when substitut ing the far pointer for the near pointer Check the data types near or far assignment from const pointer to non const pointer The const property is lost by assignment from const pointer to non const pointer Check the statement description If the descrip tion is correct ignore this warning assignment from volatile pointer to non volatile pointer 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 assignment in comparison state ment You put an assignment expression in a compari son statement You may confuse with z Check on it block level extern variable initialize forbid ignored An initializer is written in extern variable declara tion in a function Delete the initializer or change the storage class can t get address from register storage class variable The amp operator is written for a variable of the storage class register Do not use the amp operator to describe a variable of the storage class register can t get size of bitfield The bit field is used for the operand of the sizeof operator Write the operand correctly Appendix F 25
249. igure B 22 is an example void func void struct TAG char bitO0 char bitl char bit2 char bit3 s asm bset Sb 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 compiling C source file void func void struct TAG char bit0 char bitl char bit2 char bats S asm bset Sb FB s bitl1 Assembly language source file compile result PS d FUNCTION func P434 d FRAMEAU __PAD1 size 1 offset 1 O P9 d FRAMEAUTO S size 1 offset 2 P4 d ARG Size 0 Auto Size 2 Context Size 8 SECTION program CODE ALIGN file putat align line 3 glb func enter 02H line 10 t ASM START bset 1 2 FB ASM END line d exitd Figure B 23 Example of Referencing auto Area Bit Field When referencing a bit field in the auto area you must confirm that it is located within the range that can be referenced using bit operation instructions within 32 bytes of the FB register value 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 prog
250. iled result of smp2 c smp2 a30 NC308 MANUAL 59 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 processing of assembler functions 1 Specify section names using the assembler pseudo command SECTION Sec tions 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 5 Save the registers that may be destroyed in the function The following shows a procedure for writing the exit processing of assembler functions 6 Restore the registers that have been saved during entry processing of functions 7 lf you modified the B and U flags within the function restore the flag register from the stack 8 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
251. 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 pro1 void func void remainder omitted Assembly language source program Pug FUNCTION func section prol Maps to pro1 section file smp c line 9 glb func func V 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 NEI is added after the section name Note In NC308WA V3 10 or earlier the data and rom sections as with the bss section could only have their names altered in file units For this reason the programs created with NC308WA V3 10 or earlier require paying attention to the position where PRAGMA SECTION is written String data is output with the rom section name that is last declared Appendix B 39 Appendix B Extended Functions Reference pragma STRUCT Function 1 Inhibits packing of structures 2 Arranges structure members Syntax 1 pragma STRUCTAstructure_tagAunpack 2 pragma STRUCTAstructure_tagAarrange Description In NC308 structures are packed For example the members of the structure in Figure and B 66 are arranged in the order declared without any padding
252. ine ends with the D option Specify a macro filename after the D option The string following the U option is not of a character type letter or underscore that can be used in a macro name Define the macro correctly You specified an illegal option on the cpp308 command line Specify only legal options 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 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 cpp308 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 flow The input filename buffer has overflowed Note that the filename includes the path Reduce the length of the filename and path use the I option to specify the standard directory 18 not enough memory for macro identifier Insufficient memory for macro name and contents of macro UNIX Increase the swap area MS Windows Increase the swap area 21 include file not foun
253. ing information input parameters is needed in order to start utl308 Table G 1 shows the utl308 command line options Table G 1 utl308 Command Line Options Option Short form Description sb308 None Sp308 Sb308 gt Outputs SBDATA declaration Sp308 gt Outputs SPECIAL page function dec laration To use utl308 always specify one of the two op tions If neither option is specified an error is assumed o function name None Outpus the result of SBDATA declaration or SPECIAL Page Function declaration to a file With this option not specified outputs the result to the host machine s either EWS or personal computer standard output device No exten sions can be specified If the specified file already exists the result is written to the standard output device fover write FOW Forcibly writes over the output file name speci fied with the o option all None When used simultaneously with the sb308 op tion Because the usage frequency is low SBDATA declaration is output in the form of a comment for even the variables that are not placed in the SB area When used simultaneously with the sp308 op tion Because the usage frequency is low SPE CIAL declaration is output in the form of a com ment for even the functions that are not placed in the SPECIAL page area Wstdout None Output the warning and error messages to the honst machines standard output device sp lt n
254. ing 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 ee Function Declares the prototypes of string handling functions and memory handling functions Type Function Contents Copy strcpy Copies a character string strncpy Copies a character string n characters Concatenate strcat Concatenates character strings strncat Concatenates character strings n characters Compare strcmp Compares character strings strcoll Compares character strings using locale information stricmp Compares character strings All alphabets are handled as upper case letters strncmp Compares character strings n characters strnicmp Compares character strings n characters All alphabets are handled as upper case letters Search strchr Searches the specified character beginning with the top of the character string 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 strrchr Searches the specified character from the end of a character string strspn Calculates the length
255. ion Werror file file name WEF Function Outputs error messages to the specified file Syntax nc308A Werror fileA 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 i Appendix A 39 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 compile 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 40 Appendix A Command Option Reference Wccom max warnings Warning Count WCMW Function This option allows you to specify an upper limit for the number of warnings output by ccom308 Supplement By default there is no upper limit to warning outputs Use this option to adjust the screen as it scrolls for many warnings that are output Note Fo
256. ion Declares an MR308 task start function Syntax pragma TASKAtask start function name Description By using the above format to declare a task start function written in C NC308 generates the code 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 definition 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 A compile error occurs if you use any function specified in one of the following decla rations in pragma TASK pragma INTERRUPT e pragma INTHANDLER e pragma HANDLER e pragma ALMHANDLER e pragma CYCHANDLER Example include lt mrXXX h gt include don pragma TASK main pragma TASK tskl void main void 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 tskl remainder omitted Ne Figure B 81 Example of pragma TASK Declaration Appendix B 53 Appendix B Extended Functions Reference B 7 5 The Ot
257. ion Display Option ices coo ie ceto tuc re asia 10 r IIT DETINUIT 10 E E ie n ELE E ss DM m D II epe LE DERE 11 A 2 4 Options tor DEBUGGING eis ore tees n ia ederet rta Pe pe sae ky tie yx eub e D atu cep utes iras 12 a E E e i Ree E T 12 mpm IE 13 Eoo NOG irasi IDIOT ET TTE OO TL LOL LOTES OT aia 13 A25 Optimization ODLHOFPISissmx eec tuetur cea st n iet dncee natas th pea cosas cuts eee te benda aoc aae aea cuesta aSa 14 ReuEjmc M M 15 uo f 17 do c HM 17 SOCONSE OG 18 ONODI IC SONB Jisne ER 18 Ono break source debug ONBSD eese nennen 19 Ono float const fold ONFCE 1 ecce eese eere eene e eene ene nen enn nnnanennnu 19 ONO SIdlID 20 sp adjust OSA 20 Oloop uhroll loop count OLU eei eene tenente eere 21 Ono logical or combine ONLOC curri entente cin nnnt treni 21 Ono asmopt ONA Jessenin aiaa ranar Oana LETAREN SEEP TSKE EKAS ii 22 NC308 MANUAL VI Ocompare byte to Word OCBTNW ciscccssscccsssccccensessssssecscnsecssnscrseadecsssescsessnsssvaneet 22 Ostatic tov inline OSTI erii icit etienne tete tete r RR ns
258. ion 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 value 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 com piler 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 NC308 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 utl308 In the entry version this option cannot be specified Supplement When using STK Viewer Map Viewer or utl308 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 utl308 is ignored Appendix A 34 Appendix A Command Option Reference fswitch_table fST Function A jump table is generated to a switch stat
259. it 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 Existence of sign Bit Size Range of values float Yes 32 1 17549435e 38F lt 3 40282347e 38F double Yes 64 2 2250738585072014e 308 long double 1 7976931348623157e 308 NC308 s floating point format conforms to the format of IEEE Institute of Electrical and Electronics Engineers standards The following shows the single precision and double precision floating point formats 1 Single precision floating point data format Figure D 1 shows the format for binary floating point float data Fixed point location s fixed point part sign 1bit 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 1 bit e characteristic part 1 1bits m fixed point part 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 m
260. itialized 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 int Wig int val for i 0 1 lt 2 I f O val 1 Initalize by logical ff val Appendix A 42 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 327668 fits in the signed int type but when broken into and 32768 the value 32768 does not fit in the signed int type and consequently becomes the signed long type Therefore the immediate value 32768 is the signed long type For this reason any statement like int i 32768 gives rise to a warning Because this option 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 Assi
261. ize to store the character string ep Converts input in the format data bank register plus offset Example 00 1205 The target parameter is a pointer to all types of 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 circum flex and are legal input characters Storing stops when one of the specified charac ters 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 63 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 re
262. k return i j k func_no_proto i ji k return i j k func_proto 1 2 3 5 func_no_proto Hop s 6 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 i size 2 offset 2 FRAME ARG j 27 offset 8 8 FRAME ARG offset 10 7 REGISTER ARG i size 2 REGISTER RO 49 ARG Size 4 Auto Size 2 Context Size 8 SECTION program CODE ALIGN _file sample c align line 4 7 4d C SRC glb func proto
263. le M32C 80 M16C 80 Series NC308 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 Cpp308 sample c o sample i DM16C DNC308 ccom308 sample i o sample a30 as308 N sample a30 M Notes Use lowercase v for this option Appendix A 10 Appendix A Command Option Reference Display version data Function Displays version data for the command programs executed by the compiler then finishes processing Execution D MTOOL nc308wa gt nc308 V example M32C 80 M16C 80 Series NC308 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED C Compiler Driver Version X XX XX C Preprocessor Version X XX XX C Compiler Version X XX XX NC CORE Version X XX XX Assembler Optimizer aopt308 for M32C 80 M16C 80 Series Version K XX XX M32C 80 M16C 80 Series Assembler system Version X XX Release X Assembler Driver as308 for M32C 80 M16C 80 Series Version X XX XX Macro Processor mac308 for M32C 80 M16C 80 Series Version X XX XX core X XX XX Structured Processor pre30 for M16C Family Version X XX XX Assembler Processor asp308 for M32C 80 M16C 80 Series Version X XX XX Linkage Editor 1n308 for M32C 80 M16C 80 Series Version X XX XX Librarian 10308 for M32C 80 M16C 80 Series Version X XX XX Load
264. localeconv void 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 h gt double log10 x function double x arbitrary real number Returns the common logarithm of given real number x longjmp execution Control Functions Function Format Method Argument ReturnValue Description Restores the environment when making a function call include setjmp h void longjmp env val function jmp buf env Pointer to the area where environment is restored Int Val entum 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
265. low 10000H None cyclic or alarm handler always load DT NC77 NC79 only There is no need to pragma LOADDT a function specified in pragma CYCHANDLER or ALMHANDLER Delete pragma LOADDT cyclic or alarm handler function has argument e The function specified by pragma CYCHANDLER or ALMHANDLER is using an ar gument The function cannot use an argument Delete the argument enumerator value overflow size of unsigned char The enumerator value exceeded 255 Do not use more than 255 for the enumerator otherwise do not specify the startup function fchar_enumerator enumerator value overflow size of unsigned int The enumerator value exceeded 65535 Do not use more than 65535 to describe the enumerator enum s bitfield An enumeration is used as a bit field member Use a different type of member external variable initialized change to public An initialization expression is specified for an extern declared variable extern will be ignored Delete extern Appendix F 26 Appendix F Error Messages Table F 25 ccom308 Warning Messages 5 11 Warning message Description and countermeasure far pointer implicitly casted by near pointer The far pointer was converted into the near pointer Check the data types near or far function must be far The function is declared with the near type Write it correctly handler
266. lt 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 Example Chapter 1 Introduction to NC308 C language description to SFR area pragma ADDRESS TAOIC 006Ch M16C 80 MCU s Timer AO interrupt control register struct char ILVL 3 char IR 1 An interrupt request bit char dmy 4 TAOIC void wait until IR is ON void while TAOIC IR 0 Waits for TAOIC IR to become 1 TAOIC IR 0 Returns 0 to TAOIC IR when it becomes 1 NC308 MANUAL 4 Chapter 1 Introduction to NC308 1 4 Example Program Development Figure 1 2 shows the flow for the example program development using NC308 The program is described below Items 1 to 4 correspond to the same numbers in Figure 1 2 1
267. made that always results in true Check the conditional expression this feature not supported now ignored This is a syntax error Do not this syntax because it is reserved for extended use in the future Write the description correctly this function used before with non default argument A function once used is declared as a function that has a default argument gt Declare the default argument before using a function this interrupt function is called as normal function before A function once used is declared in pragma INTERRUPT An interrupt function cannot be called Check the content of pragma too big octal character 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 too few parameters Arguments are insufficient compared to the num ber of arguments declared in prototype declara tion Check the number of arguments too many parameters Arguments are excessive compared to the num ber of arguments declared in prototype declara tion Check the number of arguments unknown pragma STRUCT xxx pragma STRUCTxxx cannot be processed This line will be ignored Write correctly unknown debug option dx The option dx cannot be specified Specify the option correctly unknown function option Wx
268. mand Line pragma SPECIAL PAGE Utility SBDATA Size 255 pragma SPECIAL 255 funcl pragma SPECIAL 254 func2 pragma SPECIAL 253 func3 End of File w size size size 100 ref 100 ref 100 ref 10 3 7 5 Figure G 9 SPECIAL Page Function declaration File special h pragma SPECIAL PAGE Utility Special page definition PECIAL macro NUM OFFFFEH NUM 2 SPECIAL QNUM SPECIAL QNUM amp OFFFFH org glb word endm 255 254 253 SPECIAL SPECIAL SPECIAL F 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 utl308 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 sect308 in
269. me It is probable that the register variables are used without being initialized Make sure the register variables are assigned the appropriate value No storage class amp data type in declare global storage class amp int type assumed The variable is declared without storage class and type specifiers It will be handled as int when processed Write the storage class and type specifiers non initialized variable variable name is used It is probable that uninitialized variables are be ing referenced Check the statement description This warning can occur in the last line of the function In such a case check the description of the auto variables etc in the function If the description is correct ignore this warning non prototyped function used A function is called that is not declared of the prototype This message is output only when you specified the Wnon_prototype option Write prototype declaration Or delete the option Wnon prototype non prototyped function declared A prototype declaration for the defined function cannot be found Displayed only when the WNP option is specified Write a prototype declaration octal constant is out of range The octal constant contains some character that cannot be used in octal notation Use numerals 0 to 7 to describe octal constants octal_character is out of range The octal constant contains s
270. mmand files Notes on NC308 Command Line Options a Notes on Coding nc308 Command Line Options The nc308 command line options differ according to whether they are written in upper case 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 E P eS c High Priority low gt Therefore if the following two options are specified 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 NC308 MANUAL 14 2 1 4 Chapter 2 Basic Method for Using the Compiler nc308 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 func
271. mmy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int variable vector table BRK software int 0 DMAO DMA1 DMA2 DMA3 TIMER TIMER TIMER TIMER TIMER uarto uarto uartl uartl TIMER TIMER TIMER TIMER TIMER INT5 INT4 INT3 INT2 INTL INTO TIMER software software software software int int int int AO software Al software A2 software A3 software A4 software trance software receive 8 9 10 113 int int int int int 12 13 14 15 16 int 17 software int 18 trance software int 19 receive BO software Bl software B2 software B3 software B4 software software software software software software software int int int int int int B5 software int int int int software int 20 21 22 23 24 25 Figure 2 12 Startup Program List 7 sect308 inc 3 8 NC308 MANUAL 26 Chapter 2 Basic Method for Using the Compiler lword dummy int uart2 trance NACK software int 33 lword dummy int uart2 receive ACK software int 34 lword dummy int uart3 trance NACK software int 35 lword dummy int uart3 receive ACK software int 36 lword dummy int uart4 trance NACK software int 37 lword dummy int uart4 receive ACK software int 38 lword dummy int uart2 bus collision software int 39 l
272. mp SPECIAL page Function declaration Utility 7 MapViewer 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 NC308 Processing Flow Figure 1 1 illustrates the NC308 processing flow C language source file nc308 Compile driver cpp30s Preprosesser ccom30s Compiler aopt308 Assembler Optimizer Assembly language source file i eSa utiy SBDATA definition amp SPECIAL Page MAP Viewer Assembler Function definition utility as308 utl30s MapViewer l STK Viewer Relocatable mE StkViewer In308 ATA SPECIAL Page initi i Function getiniion mee 1 definition file Absolute Motorola S format file moduls Imc308 file Intel HEX format file Q e package D File processed Figure1 1 NC308 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 NC308 MANUAL 1 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 Let Chapter 1 Introduction to NC308 nc308 nc308 is the executable file of the compile driver By specifying options nc308 can perform the series of operations from compiling to linking You can also specify for the as308 relo
273. n and information on the initial settings of the near and far attribute for ROM and RAM 2 When the nc308 command line option dsource dS is specified shows the con tents of the C source file s as comments NC308 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 describes how to start the compile driver nc308 and the command line op tions Starting Up the Compiler nc308 Command Format The nc308 compile driver starts the compiler commands cpp308 and ccom308 the as semble command as308 and the link command In308 to create a absolute module file The following information input parameters is needed in order to start nc308 1 C source file s 2 Assembly language source file s 3 Relocatable object file s 4 Command line options optional These items are specified on the command line Figure 2 1 shows the command line format Figure 2 2 is an example In the example the following is performed 1 Startup program ncrt0 a30 is assembled 2 C source program sample c is compiled and assembled 3 Relocatable object files ncrt0 a30 and sample r30 are linked The absolute module file sample x30 is also created The following command line op tions are used Specifies machine language data file sample x30 0 Specifies output of list file extension Ist at assembling
274. n 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 parameters 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 param eters 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 45 Appendix B Extended Functions Reference Examples int asm_func unsigned long unsigned int pragma INTCALL 25 asm func R2RO R1 void main int de 1 i Ox7FFD 1 0x007F long asm func 1 i Prototype declaration for the assembler function Calling the assembler function Figure B 73 Example of pragma INTCALL Declaration asm function 1 int c_func unsigned int unsigned int pragma INTCALL 25 c_func void main int d Ox7FFD 0x007F j i je c func i i j Prototype
275. n interger constant 0 1 or 2 invalid asm s X flag NC77 NC79 only Error in X flag value in asm statement Specify an integer constant 0 1 or 2 Appendix F 28 Appendix F Error Messages Table F 27 ccom308 Warning Messages 7 11 Warning message Description and countermeasure invalid return type 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 invalid storage class for function change to extern 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 Kanji in 2pragma ADDRESS The line of pragma ADDRESS contains kanji code This line will be ignored Do not use kanji code in this declaration Kanji in pragma BITADDRESS The line of pragma BITADDRESS contains kanji code This line will be ignored Do not use kanji code in this declaration keyword keyword are reserved for future A reversed keyword is used Change it to a different name large type was implicitly cast to small type 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 mismatch protot
276. n one time Use only one default within one switch statement do while struct union statement The struct or union type is used in the expression of the do while statement Use the scalar type for an expression in the do while statement do while void 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 duplicate frame position defind variable name Auto variable is described more than twice Write the type specifier correctly Empty declare Only storage class and type specifiers are found Write a declarator float and double not have sign Specifiers signed unsigned are described in float or double Write the type specifier correctly Appendix F 11 Appendix F Error Messages Table F 11 ccom308 Error Messages 4 14 Error message Description and countermeasure floating point value overflow The floating point immediate value exceeds the representable range Make sure the value is within the range floating type s bitfield A bit field of an invalid type is declared Use the integer type to declare a bit field for struct union statement 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 for void
277. n that do not have de fined members gt Define a complete struct or union first incomplete struct union tag name s member access An attempt is made to reference members of an incomplete struct or union that do not have de fined members gt Define a complete struct or union first inline function have invalid argu ment or return code inline function has an invalid argument or an in valid return value Write the argument or an invalid return value correctly inline function is called as normal function before The function declared in storage class inline is called as an ordinary function gt Always be sure to define an inline function before using it inline function s address used An attempt is made to reference the address of an inline function Do not use the address of an inline function inline function s body is not de clared previously The body of an inline function is not defined Using an inline function define the function body prior to the function call inline function function name is recursion The recursive call of an in line function cannot be carried out Using an inline function No recursive interrupt function called The function specified by pragma INTERRUPT is called Be careful not to call an interrupt handling func tion invalid function default argument The default argument to the function is incorrect
278. nd 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 nc308 finishes at In308 and output files up to the absolute load module file extension x30 are created NC308 MANUAL 15 Chapter 2 Basic Method for Using 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 e Optimization Options Table 2 5 shows the command line options for
279. nd right sides of the operator invalid operands The operation contains an error Check the expressions on the left and right sides of the operator invalid operands The unary operator or postfix operator con tains an error gt For the unary operator check the right side ex pression For the postfix operator check the left side expression invalid operands The unary operation or postfix operation con tains an error For the unary operator check the right side ex pression For the postfix operator check the left side expression invalid gt used The left side expression of gt is not struct or union The left side expression of gt must have struct or union invalid s condition The ternary operator is erroneously written Check the ternary operator Appendix F 15 Appendix F Error Messages Table F 15 ccom308 Error Messages 8 14 Error message Description and countermeasure Invalid pragma OS Extended function interrupt number The INT No in pragma OS Extended function is invalid Specify correctly Invalid pragma INTCALL interrupt number The INT No in pragma INTCALL is invalid Specify correctly Invalid pragma SPECIAL page number The No in pragma SPECIAL is invalid Specify correctly invalid CAST operand The cast operation contains an error The void type
280. ndix 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 Calculates hyperbolic cosine Format include lt math h gt double cosh x Method function Argument double x arbitrary real number ReturnValue Returns the hyperbolic cosine of given real number x 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 amp Returns the quotient derived by dividing number by denom and the remainder of the division in
281. ne 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 func tion The substance of a function and the call of a function must be described in the same source file 2 When address acquisition is omitted in the program to the static function 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 com bined use with the contents of description of the target function and an other optimization option C Below inline deployment is carried out The example of description of a static function is shown cr Function func is a function inline deployment is carried ee be a ae ee q out in each place currently static int func void md called within main a return i extern int i void main void int s s func 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 itis in a function Please make an inline declaration Appendix A 23 Appendix A Command Option Reference A 2 6 Gene
282. ng O strncpy Copies a character string n characters O Concatenate strcat Concatenates character strings O strncat Concatenates character strings n characters O Compare strcmp Compares character strings O strcoll Compares character strings using locale information O stricmp Compares character strings All alphabets are O handled as upper case letters strncmp Compares character strings n characters O strnicmp Compares character strings n characters All al O phabets are handled as upper case letters Search strchr Searches the specified character beginning with the O top of the character string strcspn Calculates the length number of unspecified charac O 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 strstr Searches the specified character from a character O string strtok Divides some character string from a character string x into tokens Length strlen Calculates the number of characters in a character O string Convert strerror Converts an error number into a character string x strxfrm Converts a character string using locale information O Several standard functions use global variables that ar
283. ngs 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 is no return value Syntax static void smovb b char far pl char far p2 unsigned int count calculated in 8 bits static void smovb w int far pl int J far p2 unsigned int count When calculated in 16 bits o O lt TI Function Strings are transferred from the source address indicated by p1 to the destination address indicated by p2 as many times as indicated by count in the address incrementing direction There is no return value Syntax static void smovf b char far pl char far p2 unsigned int count calculated in 8 bits static void smovf w int far pl int far p2 unsigned int count calculated in 16 bits o O lt c Function Strings are transferred from the source address indicated by p1 to the destination address indicated by p2 in the address incrementing direction until zero is detected There is no return value Syntax static void smovu b char far pl char far p2 When calculated in 8 bits static void smovu w int far pl int far p2 When calculated in 16 bits SIN Function Strings are transferred from a fixed source address that is indicated by p1 to the destination address indicated by p2 as many times as indicated by count in the address incrementing
284. nh a 51 a egulapoptiimizelloll iere stro i epo scio RI tete PUR IRE PELIS TA EE Rb A iP Reo E hte bd ee bus 54 1 MOAI GOSS WAMAMO BEGBBS ue cit epus i ta Petar eu a aber bro taceuanteiae Sopra Ede dd 51 i2 MeanmiglessxcormpaliSDE sesia GaS 51 Go PROG FAM SI MOL BXOGHETGOl ce iuo ext asia 16 Enis Fes be M cba ee M eese E 52 4 Operation between constahls cus ouo oa ono rente doses n E aE EE DiR 52 5 Selection Of optim r IISIU CHONG e uus scu uo to eo sanete rousse ansaa 52 b About the volatile GUAM Gi uiii side eres Heer E E Ea ve NE 52 3 1 4 Precautions on Using register Variables ssseeene 53 941 5 About Startup Handling aiii ioco toot ea Le Dritte e cerises nani 53 a register qualification and fenable register option esessssessessessse 53 b About register qualification and optimization options seene 53 For Greater Code EffIclency s eei detras tent acts ede a EUR D Hanes esu Dd eaten 54 3 2 1 Programming Techniques for Greater Code Efficiency sssssssses 54 a Regarding Integers and Variables uiii eo ether bct RE ESTE EE PERDE TEENE 54 D tartya anay ca aen antieter det E EE Eres eds de eer 54 G Aay SUDSCHIOIS ce 55 d Using Prototype declaration EMclently 2 325 c initi tu bota seneenensue necadent eae coetu 55 e Using SB Register mice ity uan oaran Lease de Aaa RE r E aea 55 f Compressing ROM Size Using Option fJSRW
285. not 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 l Optimized L if a amp 0x07 M 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 declared with volatile logical ORs are not com bined for optimiza Appendix A 21 Appendix A Command Option Reference Ono asmopt ONA Function Inhibits starting the assembler optimizer aopt308 In the entry version this option cannot be specified Ocompare_byte_to_word OCBTW Function Compares consecutive bytes of data at contiguous addresses in words Appendix A 22 Appendix A Command Option Reference Ostatic_to_ inline OSTI 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 inli
286. ocess command amp End of file encountered in a preprocess command Correct the source file 32 unknown preprocess An unknown preprocess command has been command specified Only the following preprocess commands can be used in CPP308 include define undef if ifdef ifndef else endif elseif line assert pragma error 33 new line in string A new line code was included in a character constant or character string constant Correct the program 34 string literal out of range G A character string exceeded 509 characters 509 characters Reduce the character string to 509 characters max 35 macro replace nesting over Macro nesting exceeded the limit 20 Reduce the nesting level to a maximum of 20 41 include file error Error in include instruction OCorrect 43 illegal id name Error in following macro name or argument in define command FILE LINE DATE JTIME Correct the source file 44 token buffer over flow Token character buffer of define overflowed Reduce the number of token characters 45 illegal undef command usage Error in undef Correct the source file 46 undef id not found The following macro names to be undefined in undef were not defined FILE LINE DATE _ TIME Check the macro name 52 illegal ifdef ifndef command Error in ifdef usage Correct the source file 53 elseif else sequence error elseif or else were used without if ifd
287. 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 IOREAD or read write mode _IORW stores the level 3 input function pointer Stores a NULL pointer in other cases This information is used for indirect calling of level 3 input functions by level 2 input functions 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 95 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 NC308 package initializes the stream in function init which is called from the ncrt0 a30 startup program Figure E 5 shows the source program for the init function include lt stdio h gt FILE _iob 4 void init void void init void stdin cnt stdout cnt stdaux gt _cnt stdprn gt _cnt 0 stdin gt _flag _IOREAD stdout flag _IOWRT stdaux gt _flag _IORW stdprn gt _flag _IOWRT stdin gt _mod _TEXT stdout mod
288. ogy Corporation and 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
289. ointer to an area for storing a conversion result character string const char far s2 Pointer to the character string to be converted SIZE ZD o ade tas aen ea ERES Number of bytes converted ReturnValue Returns the number of characters converted Description amp When you specify options O OR or OS the system may selects another functions with good code efficiency by optimization tan Mathematical Functions Function Calculates tangent Format include lt math h gt double tan x Method function Argument double x arbitrary real number ReturnValue 6 Returns the tangent of given real number x handled in units of radian Appendix E 82 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 ctype h int tolower c Method macro Argument int C ud aloo 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 83 Ap
290. ome character that cannot be used in octal notation Use numerals 0 to 7 to describe octal constants overflow in floating value convert ing to integer A very large floating point number that cannot be stored in integer type is being assigned to the integer type Reexamine the assignment expression old style function declaration The function definition is written in format prior to ANSI ISO C Write the function definition in ANSI ISO format prototype function is defined as non prototype function before The non prototyped function is redefine proto type declaration Unite ways to declare function type redefined type Redwfine typedef Check typedef redefined type name of qualify The same identifier is defined twice or more in typedef Write identifier correctly Appendix F 30 Appendix F Error Messages Table F 29 ccom308 Warning Messages 9 11 Warning message Description and countermeasure register parameter function used before as stack parameter function The function for register argument is used as a function for stack argument before Write a prototype declaration before using the function RESTRECT qualifier can set only pointer type e The RESTRICT qualifier is declared outside a pointer Declare it in only a pointer section name interrupt no more used The section name specified by pragma SEC
291. on Syntax RMPA Returns the result of decimal subtraction with borrow on val1 minus val2 include lt asmmacro h gt static char dsbb_b char vall char val2 When calculated in 8 bits static int dsbb w int vall int val2 When calculated in 16 bits Function MAX 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 multi pliers are stored include lt asmmacro h gt static long rmpa b long init int count char far pl char far p2 When calculated in 8 bits static long rmpa w long init int count int far pl int far p2 When calculated in 16 bits static long long rmpa w long init int count int far pl int far p2 When calculated in 48 bits Function Syntax MIN Returns the value val1 or val2 whichever is found larger by comparison static char max b char vall char val2 When calculated in 8 bits static int max w int vall int val2 When calculated in 16 bits Function Syntax Returns the value val1 or val2 whichever is found smaller by comparison static char min b char vall char val2 When calculated in 8 bits static int min w int vall int val2 When calculated in 16 bits Appendix B 61 Appendix B Extended Functions Reference o O lt WW Function Stri
292. on and recover them from the stack at the ending procedure of it However if an assembler function is declared by using pragma PARAMETER C the codes for saving and recovering the contents of registers are created at the calling side so that it is unnecessary to save and recover them in this assembler function d Passing Parameters to an Assembler Function Use the pragma PARAMETER function if you need to pass parameters to a function written in assembly language The parameters are passed via registers Figure 14 5 shows the format asm_func in the figure is the name of an assembler function unsigned int near 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 purpose registers RO R1 R2 R3 8 bit general purpose registers ROL ROH R1L R1H and address registers A0 A1 In addition the 16 bit general purpose registers are com bined to form 32 bit registers R8R1 and R2R0 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 type double
293. on as value LONG MAX Maximum value that a long type variable can take 2147483647 on as value LONG MIN Minimum value that a long type variable 2147483648 can take on as value LLONG MAX Maximum value that a signed long long type vari 9223372036854775807 able can take on as value LLONG MIN Minimum value that a signed long long 9223372036854775808 type variable can take on as value UCHAR MAX Maximum value that an unsigned char type vari 255 able can take on as value UINT MAX Maximum value that an unsigned int type variable 65535 can take on as value USHRT MAX Maximum value that an unsigned short int type 65535 variable can take on as value ULONG MAX Maximum value that an unsigned long int type 4294967295 variable can take on as value 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 Le a ee ee eee i Function Defines declares macros and functions that manipulate program localization The follow ing lists locale functions Function Contents localeconv Initializes struct Iconv setlocale Sets and searches the locale information of a program math h E ee ee ee ee ee E Function Declares prototype of mathematical function The following lists mathematical functions Function Contents acos Calculates arc cosine
294. on to be stored in ReturnValue 6 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 init Input Output Functions Function Initializes the stream Format include lt stdio h gt void init void Method function Argument No argument used ReturnValue 6 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 int c Character to be checked ReturnValue amp 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 wh
295. ons which have a variable number of real arguments stddef h Defines the macro names which are shared among standard include files stdio h Defines the FILE structure Defines a stream name Declares the prototype of input output functions stdlib h Declares the prototypes of memory management and terminate functions string h Declares the prototypes of character string and memory handling functions time h Declares the functions necessary to indicate the current calendar time and de fines the type Standard Header Files Reference Following are detailed descriptions of the standard header files supplied with NC308 The header files are presented in alphabetical order The NC308 standard functions declared in the header files and the macros defining the limits of numerical expression of data types are described with the respective header files Appendix E 1 Appendix E Standard Library assert h a ae aa Function Defines assert function ctype h har eee Function Defines declares string handling function The following lists string handling functions Function Contents isalnum Checks whether the character is an alphabet or numeral isalpha Checks whether the character is an alphabet iscntrl Checks whether the character is a control character isdigit Checks whether the character is a numeral isgraph Checks whether the character is printable except a blank islower Checks whe
296. option cannot be speci fied fenable_register fER Make register storage class available fno_align NA 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 fuse_DIV fUD This option changes generated code for divide operation In the entry version this option cannot be speci fied finfo None Outputs the information required for the Inspec tor STK Viewer Map Viewer and utl308 In the entry version this option cannot be speci fied fswitch_table fST A jump table is generated to a switch statement M82 None Generates object code for M32C 80 Series Appendix A 25 Appendix A Command Option Reference fansi Modify generated code Function Validates the following command line options fnot reserve asm Removes asm from reserved words fnot reserve far and near Removes far and near from reserved words fnot reserve inline Removes inline from reserved words fextend to int Extends char type data to int type data to 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
297. 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 n char buff int cnt int flag int mod int func in void int func out int omitted typedef long fpos t typedef unsigned int size t extern FILE _iob XQ Figure 1 7 Example Preprocessed C Source File 1 smp i NC308 MANUAL 8 Chapter 1 Introduction to NC308 extern int getc FILE _far 1 extern int getchar void extern int putc int FILE far extern int putchar int extern int feof FILE far extern int ferror FILE far extern int fgetc FILE far extern char far fgets char far int FILE far extern int fputc int FILE far extern int fputs const char far FILE far extern size t fread void far size t size t FILE far omitted extern int ungetc int FILE far extern int printf const char far extern int fprintf FILE far const char far extern int sprizntf char far const char far Sarasa omitted extern int init dev FILE far int extern int Speed int int int int extern int init prn void extern int _sget void extern int _sput int extern int _pput int extern char tar print unt char tar 5 int far far int far void main
298. output of debugging information for register variables In the entry version this option cannot be specified Outputting debugging information Function Outputs debugging information to an assembler source file extension a30 Execution nc308 g v sample c example M32C 80 M16C 80 Series NC308 COMPILER V X XX Release X COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVE AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED sample c Cpp308 sample c o sample i DM16C DNC308 ccom308 sample i o sample a30 g as308 N N sample a30 1n308 sample r30 G MS o sample omitted ls sample Ew r r 1 toolusr 2894 Aug 17 14 51 sample c W Efeccesc 1 toolusr 7048 Aug 17 15 53 sample map rw r 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 Always output an enter instruction when calling a function 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 Note 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 generate
299. owing lists Multibyte Character and Multibyte Character string Manipulate Func tions Table E 11 Multibyte Character and Multibyte Character String Manipulate Functions Function Contents Reentrant mblen Calculates the length of a multibyte character string O mbstowcs Converts a multibyte character string into a wide 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 Initializes 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 NC308 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 6 No value is returned Description e Terminates the execution of t
300. ows at Figure B 47 int func int i l int j 2 void main void func func 3 func 3 5 Figure B 47 Example for declaring the default arguments of a function Appendix B 25 Appendix B Extended Functions Reference _main line P484 C SRC func push w second argument mOov w first argument jsr S func add 1 line C SRC func 3 push w lt second argument mOov w first argument jsr S func add 1 line C SRC func 3 5 push w 05H second argument mov w 03H RO first argument jsr Sfunc add 1 7 SP line C SRC rts omitted Note In NC308 arguments are stacked in revere order beginning with the argument that is declared last in the function In this example arguments are passed vi registers 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 i n lt Default argument is specified with a variable void main 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 line 6 mov w _sym R1 lt Function is called using variable sym as
301. p bss FO Copy edata E O section from edata EI OI section BCOPY data SEI top data SE top data SE BCOPY data SOI top data SO top data SO BCOPY data 6EI top data 6E top data 6E BCOPY data 60I top data 60 top data 60 BCOPY data FEI top data FE top data FE BCOPY data FOI top data FO top data FO 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 NC308 MANUAL 22 Chapter 2 Basic Method for Using the Compiler ldc stack_top sp OStk 22 Validate this when use BZEROL BCOPYL if HEAP 1 glb mbase 13 glb __mnext glb __msize mov l heap_top amp OFFFFFFH _ mbase mov l heap_top amp OFFFFFFH __mnext mov l HEAPSIZE amp OFFFFFFH __msize endif if STANDARD IO 1 glb init 14 call init G sree init endif j E5222 Call main function See diee emda 15 glb _main glb exit 16 glb Sexit exit End program Sexit jmp exit einsf cse eec ee itu ceu ce ca ee t M eee repetere Rs er er decr edidit dummy int 17 reit end KCk Sk ck ck
302. pendix 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 extern variable void func void int f_val auto variable register int r_val register variable Static int s_val static variable 1 e Reference to external variable 2 8 Reference to auto variable 3 S0 r Reference to register variable co 4 S6 Reference to static variable Q f val r val Assembly language source file compile result glb func func enter 02H pushmR1 line C SRC asm S e val ASM START mov w 1 e val 16 Reference to external variable line 10 C SRC asm E se f val mov w 2 2 FB Reference to auto variable line 11 C SRC s e r val mov w 3 R1 Reference to register variable line 12 C SRC asm 4 Q s val
303. pendix E Standard Library toupper Character Handling Functions Function Converts the character from a lower case to an upper case Format include lt ctype h gt int toupper c Method macro Argument int c E Character to be converted ReturnValue amp Returns the upper case letter if the argument is a lower case letter Otherwise returns the passed argument as is Description Converts the character from a lower case to an upper case ungetc Input Output Functions Function Returns one character to the stream Format Hinclude lt stdio h gt int ungetc c stream Method macro Argument inj 6er Character to be returned FILE far stream Pointer of stream ReturnValue amp 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 84 Appendix E Standard Library vfprintf 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 vaist ADS eter Pointer of argum
304. ppendix C Overview of C Language Specifications 4 Initialization expressions NC308 allows the initial values shown in Figure C 3 in initialization expressions integral types constant integral types array constant constant character types i 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 NC308 supports the following storage class specifier extern static 2 Type Declarators NC308 supports the following type declarators e Bool char int short long eong long loat double unsigned signed struct union enum 3 Declaration Specifier Use the format of declaration specifier shown in Figure C 5 in NC308 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 opt
305. ption 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 NC308 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 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 1 2 func proto int i int j int
306. put 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 20MHz External bus size 16 bits Initial serial communications settings Use UART1 Baud rate 9600bps Data size 8 bits Parity None Ge Stop bits 2 bits The initial serial communications settings are made in the init function init c Appendix E 90 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 Input functions Parameters 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 80 series s two UARTs device c is written so that the UARTO can be selected using the conditional compile commands as follows To use UARTO eeeeemI ee define UARTO 1 Specify these commands at the beginning of device c or specify following option when compiling e To use UARTO sseee DUARTO To use both UARTs modify the file as follo
307. qrt Calculates the square root of a numeric value O tan Calculates tangent O tanh Calculates hyperbolic tangent O h Integer Arithmetic Functions The following lists integer arithmetic functions Table E 9 Integer Arithmetic Functions Function Contents Reentrant abs Calculates the absolute value of an integer O bsearch Performs binary search in an array O div Divides an int type integer and calculates the remainder O labs Calculates the absolute value of a long type integer O Idiv Divides a long type integer and calculates the remainder O qsort Sorts elements in an array O rand Generates a pseudo random number O srand Imparts seed to a pseudo random number generating rou O tine 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 Contents Reentrant atof Converts a character string into a double type floating O point number atoi Converts a character string into an int type integer O atol Converts a character string into a long type integer O strtod Converts a character string into a double type integer O strtol Converts a character string into a long type integer O strtoul Converts a character string into an unsigned long type O integer j Multi byte Character and Multi byte Character String Manipulate Functions The foll
308. r 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 Existence of sign Bit size Range of values Bool No 8 0 1 char No 8 04255 unsigned char signed char Yes 8 128427 int Yes 16 32768482767 short signed int signed short unsigned int No 16 0465535 unsigned short long Yes 32 2147483648421 47483647 signed long unsigned long No 32 044294967295 long long Yes 64 92233720368547 758084 signed long long 9223372036854775807 unsigned long long No 64 18446744073709551615 float Yes 32 1 17549435e 38F lt 8 40282347e 38F double Yes 64 2 225073858507201 4e 308 lt long double 1 7976931348623157e 308 near pointer No 16 O lt OxFFFF far pointer No 32 0 lt xFFFFFFFF 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 f an int or short type is specified with no sign it is processed as a signed int or signed short type f a long type is specified with no sign it is processed as a sign long type f 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 b
309. r 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 fFRAM 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 fCNR 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 24 Appendix A Command Option Reference Table A 6 2 2 Generated Code Modification Options Option Short form Description fnear_pointer INP Specified the default attribute of the pointer type variables to near fconst_not_ROM fCNR Does not handle the types specified by const as ROM data 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
310. r 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 33 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 Appendix G The SBDATA declaration amp SPECIAL page Function declaration Utility utl308 How to startup the SBDATA declaration amp SPECIAL page function declaration utility utl308 and how the startup options works are described here This utility is not included in the entry version G 1 Introduction of utl308 G 1 1 Introduction of utl308 processes The SBDATA declaration amp SPECIAL page Function declaration Utility utl308 precesses the absolute module file hanving the extension x30 The utl308 generates a file that contains SBDATA declarations located in the SB area beginning with the most frequently used one i pragma SBDATAT and a file that contains SPECIAL page function declarations located in the SPECIAL page area beginning with the most frequently used one i pragma SPECIALT To use utl308 specify the compile driver startup option finfo when compiling so that the absolute module file x30 will be generated Figure G 1 illustrates the NC308 processing flow Cc language source file nc308 command option Compile driver necesos Preprosesser cpp308 C source file from preprocesser Compiler
311. r string size tn Number of wide characters stored 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 Format Method Argument Return Value Converts a multibyte character into a wide character include lt stdlib h gt int mbtowc wcs s n function wchar t _far wcs Pointer to an area for storing conversion wide character string const char far s Pointer to a multibyte character string SIZG Tz DE ees cese retra redet ra deat Number of wide characters stored 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 indicates 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 Wk 36 antedios nar ken Character to be searched SIZES nir sies Porter ies dur Size of the memory area to be searched ReturnValue Returns the position pointer of the specified character c
312. r 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 a comparison statement with the amp amp or operator Example if i 0 func Case 2 When is written to which should be specified Example i 0 Case 3 When function is defined in old format Example func i 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 41 Appendix A Command Option Reference Wmake_tagfile WMT Function Outputs error messages to the tag file of source file by source file when an error or warning occurs Supplement This option with Werror_file lt file name gt i WEF option canit specify Wuninitialize_variable WUV Function Outputs a warning for unin
313. r variable names e Variable name Array name integer Struct name member name not including bit field members void func int idata int a 3 struct TAG asm MOV W RO SS FB idata asm MOV W RO SS FB a 2 asm MOV W RO SS FB s i Remainder omitted MOV W SS FB SS FB 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 auto variable FB offset value 2 asm MOV W SS FB RO idata asm CMP W 00001H RO remainder omitted Assembly language source file compile result PES d FUNCTION func P4 d FRAME AUTO idata size 25 offset 2 abbreviated C SRC asm MOV W SS FB RO idata t t ASM START MOV W 2 FB RO Transfer FB offset value 2 to RO register line 5 44 C SRC asm CMP W 00001H R0 CMP W 00001H RO t t 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 F
314. ram 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 is a register variable register int i 1 Variable asm mov w SS A1 i Assembly language source file compile result tE d FUNCTION func ptt d ARG Size 0 Auto Size 0 Context Size 4 SECTION program CODE ALIGN _file reg c align line 3 7 C SRC glb func tune line C SRC register int i 1 ov w 0001H RO i line 6 C SRC i asm mov w S A1 i ASM START mov w RO Al R0 register is transferred to A1 register ASM END Figure B 25 An Example for Referencing a Register Variable and its Compile Result In NC308 register variables used within functions are managed dynamically At anyone position the register used for a register variable is not necessarily always the same one Therefore if a register is specified directly in an asm function it may after compiling operate differently We therefore strongly suggest using this function to check the register variables 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
315. rated Code Modification Options Table 2 6 shows the command line options for controlling nc308 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 INRA 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 o
316. rator or variables in a constant expression Appendix C 23 Appendix C Overview of C Language Specifications ifdef elif else endif We es Se ee ee ee Function Performs conditional compilation Examines the macro defined or not Format ifdefAidentifier elifAcensiant expression d endif Description If an identifier is defined ifdef processes the program that follows You can also describe the following ifAdefinedAidentifier ifAdefinedA 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 9 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 of levels of nesting but it depends on the amount of available memory G You cannot use the sizeof operator cast operator or variables in a constant expression Appendix C 24 Appendix C Overview of C Language Specifications ifndef elif else endif p a ee ee Function Format Description Performs conditional compilation Examines the macro defined or not ifndefAidentifier delicata expression dois endif If an identifier isn t defined ifndef processes the program that follows You can also describe the followings
317. re equal Return Value 0 The first character string s1 is greater than the other Return Value O The second character string s2 is greater than the other Description Compares each byte of two character strings ending with NULL However all letters are treated as uppercase letters strerror String Handling Functions Function Converts an error number into a character string Format Hinclude lt string h gt char far strerror errcode Method function Argument int errcode error code Return Value amp Returns a pointer to a message character string for the error code Note stderr returns the pointer for a static array Appendix E 74 Appendix E Standard Library strlen String Handling Functions Function Calculates the number of characters in a character string Format Hinclude 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 Function Concatenates character strings n characters Format include lt string h gt char far strncat s1 s2 n Method function Argument char far s 1 Pointer to the character string to be concatenated to const char far s2 Pointer to the
318. rg data FE top Section bss FE top Section data FO top section bss FO top bss_60 DATA data_FE DATA 20000H bss_FE DATA ALIGN data_FO DATA bss_FO DATA rom_FE ROMDATA OFEOOOOH section org rom FE top section rom_FO_top rom_FO ROMDATA Figure 2 11 Startup Program List 6 sect308 inc 2 8 NC308 MANUAL 25 Chapter 2 Basic Method for Using the Compiler Initial data of data section section data SEI top section data SOI top section data 6EI top section data 601 top section data_NEI_top section data NOI top section data_FEI_top section data FOI top data SOI ROMDATA data 6EI ROMDATA data 60I ROMDATA data NEI ROMDATA data NOI ROMDATA data FEI ROMDATA data FOI ROMDATA section section section org interrupt ALIGN program ALIGN program S orrooo0H section vector ROMDATA org VECTOR ADR lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword lword dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int dummy int du
319. rget system s hardware This is accomplished by modifying the source file for the standard library This chapter describes how to modify the NC308 standard library to match the target system The entry vedrsion does not come with source files for the standard function library Therefore the standard function library cannot be customized for the entry version 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 Output function Figure E 1 Calling Relationship of I O Functions Appendix E 89 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 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 80 series I O ports The level 3 I O functions include _sget and _s
320. rgument is struct or union The struct or union type is specified in the proto type declaration for the function specified by pragma PRAGMA name Specify the int or short type 2 byte pointer type or enumeration type in the prototype declaration pragma PRAGMA name must be declared before use A function specified in the pragma PRAGMA name declaration is defined after call for that function Declare a function before calling it pragma BITADDRESS variable is not Bool type The variable spcified by pragma BITADDRESS is not _Bool type Use the _Bool type to declare the variable pragma INTCALL function s argument on stack When the body of functions declared in pragma INTCALL are written in C the parameters are passed via the stack When the body of functions declared in pragma INTCALL are written in C specify the parameters are being passed via the stack pragma PARAMETER function s register not allocated A register which is specifed in the function decleared by pragma PARAMETER can not be allocated gt Use the correct register const is duplicate const is described more than twice Write the type qualifier correctly far amp near conflict far near is described more than twice Write near far correctly far is duplicate far is described more than twice Write far correctly near is duplicate near is described
321. rt FURGHOTIS noi seront ota toes po repa pet n ehe e ico de 16 j Multi byte Character and Multi byte Character String Manipulate Functions 16 Ki Localization FUROR OMS uires Lipsii etit pre nt Op eh to epe Use eee a PRI HE Ip OS EROR bx iban vegas itia 16 E 2 3 Standard Function RefereNGE csias tete treu Roe un deese ER eo cur eec 17 E2 4 Using the Standard LIDAN ico eio Erie tette aes ele 88 a Notes on Regarding Standard Header File uiui iare on epe ineo tento an oce ence 88 b Notes on Regarding Optimization of Standard Library ssssssssss 88 hatline addit T6 MOIISu mu acq mao Etts exi meo ma eati dea e octets EAE 88 E 3 Modifying Standard EIDEBEIV siii posuit asina a aeea aeea Aaa 89 E 3 1 Structure of VO EUDCIOLS uiii perite LI HERE IRR EIER Erro tid Deni Rte E eR ERR se dtd 89 E 3 2 Sequence of Modifyirig VO F nctilOhs ice ioci dieci neat Red 90 amp Modifying Levels HOT UDCUOFs iie icri cipia ease tete cse ema sed ctp ride pc patera sre a cesa to 90 b Skream SEIS icio oxic eain ea tu Ux DU o qe dvo Fu RUE SU LR a 92 Incorporating the Modified Source Program cec ecce trente 98 Appendix F Error Messages Fill Message FOMA ianen ian a bu triti d ide 1 F2 no908 Eror MOSSAUBS naana deals aadaidaaemsacnndardpanieadah inna ON ss x aad 2 F3 6Dp308 Emor Messades sicci e ERI RAT N M VES G 4 4 iCpps08 Warning MesSSagB5 ien ertet rect cesta seen uu siue ae
322. s 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 Overview of C Language Specifications Table C 8 Extended Notation List Notation Escape sequence Notation Trigraph sequence Y single quote constant octal M quotation mark Wconstant hexadecimal M backslash X express character question mark 7 express V character a bell 7 express character b backspace Y express character f form feed Tc express character n line feed M express character r return gt express character t horizontal tab 7l express character W vertical tab express character 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 Appendix C Overview of C Language Specifications e Operators NC308 can interpret the operators shown in Table C 9 Table C 9 Operators List monadic operator dk logical operator amp amp E binary operator conditional operator comma operator
323. s by amp operator gt f amp func 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 NC308 generates a warning Renesas does not recommend entering static declarations in an inline function See Figure B 59 inline int func t int j static int i itti return i j Warning Message Warning ccom smp c line 3 static valuable in inline function gt static int i 0 Figure B 59 Example of inappropriate code of inline function 4 5 Regarding debug information NC308 does not output C language level debug information for inline functions 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 NC308 allows comments enclosed between and as well as C like comments starting with B 6 1 Overview of Comments In C comments must be written between and In C
324. s 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 Suppresses debugging information about register variables Function Suppresses the output of debugging information for register variables In the entry version this option cannot be specified Supplement Use this option to suppress the output of debugging information about register variables when you do not require that information Suppressing the output of debugging information about the register variables will speed up downloading to the debugger Appendix A 13 Appendix A Command Option Reference A 2 5 Optimization Options Table A 5 shows the command line options for optimizing program execution speed and ROM capacity In the entry version all optimization options cannot be specified Table A 5 Optimization Options Option Short form Function O 1 5 None Effects the best possible optimization both in execu tion speed and in ROM capacity level by level OR None Maximum optimization of ROM size followed by speed OS None 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 manip
325. s 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 NC308 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 AS308 language specifications is included be tween the double quote marks pragma ADDRESS ta0 int 55H char taO int void func abbreviated taO_int 0x07 lt Permits timer AO interrupt asm FSETI Sets interrupt enable flag Figure B 16 Example of Description of asm Function 1 2 Compiler optimization based on the positional relationship of the statements can be partially suppressed using the code shown in Figure B 17 asm Figure B 17 Example of Coding asm Function 2 2 The asm function used in NC308 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 varia
326. scription command variables in byte type Do not specify this option in the option as308 M82 Generates object code for M32C 80 Series N Does not output information on macro instruction lines O 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 as308 S Outputs local symbol information T Generates an assembler error tag file V Displays the version of the assembler system program Do not specify this option in the option as308 X Starts up an external program using a tag file as argument Do not specify this option in the option as308 You can specify the assembler s option to use option as308 using nc308 In this case do not specify the as308 options C M O P T V or X Appendix A 47 Appendix A Command Option Reference In308 option Function Specifies options for the In308 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 nc308A In308A option 1 option2 A C source file name Execution n the example below the map file is generated when compiling example nc308 g v osample 1n308 ms ncrt0 a30 sample c
327. se Inthis version subcommand are case independence in which uppercase and lowercase are considered to be equivalent Appendix B 33 Appendix B Table B 4 2 2 Extended function Extended Functions Reference Extended Functions for Use with Target Devices Description pragma BITADDRESS A variable is assigned to the bit position which the specified ab solute address specified Syntax pragma BITADDRESSAvariable nameAlit position absolute address Example pragma BITADDRESS io 1 100H pragma DMAC Specifies the DMAC register of a external variable Syntax pragma DMACAvariable nameADMAC register name Example pragma DMAC dma0 DMAO pragma INTCALL Declares a function written in assembler called in a software in terrupt int instruction By specifying switch c it is possible to generate code to need the register to saving it to a stack at entry when calling the func tion Syntax pragma INTCALLA C AINT No Afunction name register name Example pragma INTCALL 25 func RO R1 Example pragma INTCALL C 25 func RO R1 Syntax pragma INTCALL INT No function name Example pragma INTCALL 25 func Example pragma INTCALL C 25 func 3 Always be sure to declare the prototype of the function before entering this declaration pragma INTERRUPT pragma INTF Declares an interrupt handling function written in C language This declaration c
328. se functions The output direction of stderr is defined as stdout in de fine The stream can only be changed for functions that specify pointers to the stream as parameters such as fgetc and fputc Appendix E 92 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 93 Appendix E Standard Library BRR RR kk kk kkk kkk kkk k ck ck kkk k k ck k k k k k kk ck ck Ck ck ck k k k k k k k k k kk kk ck ck ck ck KKK k kk k k kk k ck ck ck ck k k KK KK standard I O header file omitted typedef struct iobuf char buff Store buffer for ungetc int cnt Strings number in buff 1 or 0 int flag Flag int mod Mode int func in void Pointer to one byte input function int func out int Pointer to one byte output function FILE define IOBUF DEF omitted extern FILE iob define stdin _i Fundamental input define stdout i Fundamental output define stdaux i Fundamental auxialiary input output define stdprn ok Fundamental printer output define stderr stdout BORK RK KKK KK a RK KK KK KK kkk kkk kk kkk kkk k kkk kk kkk k k k k CK Ck Ck Ck Ck kk ck ck ck ko ko kckck kk ck ck ck ck ck ck kckckckckckck kk k kk ck ck ck ck ck kckckckckck ck k k ck ck ck ckck ck k fine IOREAD 1 Read only flag fine _IO
329. signed int shl_w signed char count unsigned int val When calculated in 16 bits static unsigned long shl l signed char count unsigned long val When calculated in 24 bits Z lt Function Returns the quotient of a division where the dividend val2 is divided by the divisor vali with the sign included Syntax include asmmacro h static signed char div b signed int vall signed int val2 calculated in 8 bits with signed static signed int div w signed int vall signed long val2 calculated in 16 bits with signed Appendix B 64 DIVU Appendix B Extended Functions Reference Function Returns the quotient of a division where the dividend val2 is divided by the divisor vali with the sign not included Syntax include lt asmmacro h gt unsigned char divu_b unsigned char vall unsigned int val2 unsigned ABS calcu ated in 8 bits with unsigned int divu_w unsigned int vall unsigned long val2 calcul ated in 16 bits with unsigned Function absolute Syntax include lt asmmacro h gt static signed char abs_b signed char val When calculated in 8 bits static signed int MOVdir abs_w signed int val When calculated in 16 bits Function transfer to val2 from val1 by nibble Syntax include lt asmmacro h gt static unsigned c
330. sion 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 string terminator not added Since the variable to be initialized and the size of the initialize expression are equal 0 cannot be affixed to the character string Increase a element number of array struct or union member s ad dress can t has no near far informa tion 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 Appendix F 31 Appendix F Error Messages Table F 30 ccom308 Warning Messages 10 11 Warning message Description and countermeasure task function called The function specified by pragma TASK is called Be careful not to call a task function task function can t return value The function specified by pragma TASK is using a return value The function specified by pragma TASK cannot use return values Delete the return value task function has invalid argument The function specified with pragma TASK uses arguments Any function specified with pragma TASK can not use arguments Delete the arguments this comparison is always false Comparison is made that always results in false Check the conditional expression this comparison is always true Comparison is
331. software int 0 omitted lword dummy int Software int 63 F macro is defined in ncrt0 a30 Format SPECIAL number SPECIAL 255 omitted SPECIAL 18 org OFFFFDCh UDI lword dummy int omitted RESET lword start pO ARIK ARICA EORR Aaah i Ae Bee BDO Re ROR e eI Bel AO eek e ARO AG Noon aene ee Bee e BNE RAE oppo ABs ANIA OE ui EUN RE A A AEM C COMPILER for M16C 80 COPYRIGHT C XXXX XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED PRR ERR R E WUEOK UK ck e o ae ROR ek KK OE EROR RR EK UK AK ooo ees eK EE o ke eue usce oic oko ok ok IR KEK RAR RNR A AER eon Figure 2 29 Listing of sect308 inc in Single Chip Mode 3 3 NC308 MANUAL 46 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 sect308 inc Figure 2 30 is an example of an interrupt vector address table section vector ROMDATA variable vector table Org VECTOR_ADR lword dummy int BRK software int 0 BRK instruction omitted lword dummy int DMA0 software int 8 amp DMA0 interrupt lword dummy int DMAl software int 9 amp DMA1 interrupt lword dummy int DMA2 software int 10 DMA2 interrupt omitted lword dummy int uart0 trance software int 17 CUARTO send interrupt lword dummy int uart0 receive
332. specifica tion of the section arrangement by the start up file For details of how to modify the startup file see Chapter 2 2 2 Customizing the Startup Program and Chapter 2 2 3 2 2 3 Customizing for NC308 Memory Map ping in the Operation part of the NC308 User s Manual 2 As opposed to the same variable pragma SBDATA pragma SB16DATA cannot be specified simultaneously 3 If pragma SB16DATA is specified for anything other than a variable it is ignored as invalid 4 If the specified variable is a static variable declared in a function the pragma SB16DATA declaration is ignored as invalid 5 The variable declared to be pragma SB16DATA is placed in a SB16DATA attribute section when allocating memory for it 6 If pragma SB16DATA is declared for ROM data declaration of pragma SB16DATA becomes invalid Example pragma SB16DATA sym data int far sym data func void sym_data 1 V Figure B 64 Example Use of pragma SB16DATA Declaration Appendix B 38 Appendix B Extended Functions Reference pragma SECTION Function Changes the names of sections generated by NC308 Syntax pragma SECTIONAsection nameAnew section name Description Specifying the program section data section and rom section in a pragma SEC TION declaration changes the section names of all subsequent functions Specifying a bss section in a pragma SECTION declaration changes the names of all data sections defined
333. specify multiple libraries nc308lib lib is given the lowest priority as it is referenced Appendix A 36 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 nc308 language specifications Table A 8 Warning Options Option Short form Function Wnon_prototype WNP Outputs warning messages for functions without proto type declarations Wunknown_pragma WUP Outputs warning messages for non supported pragma Wno_stop WNS Prevents the compiler stopping when an error occurs Wstdout None Outputs error messages to the host machine s standard output stdout Werror file file name WEF Outputs error messages to the specified file Wstop at warning WSAW Stops the compiling process when a warning occurs Wnesting comment WNC 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 ccom308 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 t
334. st 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 assert Outputs a warning when a constant expression is false pragma Instructs processing for NC308 s extended function if Performs conditional compilation ifdef Performs conditional compilation ifndef Performs conditional compilation elif Performs conditional compilation else Performs conditional compilation endif Performs conditional compilation Preprocess Commands Reference The NC308 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 ess 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
335. 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 precision 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 6 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
336. t amp E XE 3l 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_t JC 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 it as a wchar t type If as in 3 you use two or more characters as the character constant only the first character x 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
337. t vsprintf Output to a buffer with format Return ungetc Sends one character back to the input stream Deter ferror Checks input output errors mination feof Checks EOF End of File Appendix E 7 Appendix E Standard Library stdlib h aia eres 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 atoi Converts a character string into an int type integer atol Converts a character string into a long type integer bsearch Performs binary search in an array calloc Allocates a memory area and initializes it to zero 0 div Divides an int type integer and calculates the remainder 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 strtod Converts a character string into a double type integer strtol Converts a character str
338. t Transfer via Register NC308 Argument First Argument Registers Used First argument char type Bool type ROL register int type near pointer type RO register Table D 6 Rules on Argument Transfer via Register NC30 Argument First Argument Registers Used First argument char type Bool type R1L register int type R1 register near pointer type Second argument int type R2 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 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 Table D 8 Rules on Passing Arguments to Function NC308 Type of Argument First Argument Second Argument Third and Following Arguments char type RiL register Stack Stack _ Bool type int type R1 register R2 register Stack near pointer type Other types Stack Stack Stack 1 NC308 uses a 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 descri
339. t ipn OCA Ads dca RE RA 8 Fo ccome 0o Emor MessSQbS 3 ions Qut tivo a asi tenis Dcus PO Fas dtc EU DOM iuda 9 FO cccom908 Warning Message8 e aocacis inta totos R eiut ieu tubes uident uluae eee e usata tes 23 Appendix G_ The SBDATA declaration amp SPECIAL page Function declaration Utility uti308 1 Gal Imroducion o uta OS eT ETT 1 G 1 1 Introduction of utl308 processes ssssssssseeseeeeenneennee neret nene 1 NC308 MANUAL X G 2 G 3 G 4 2 5 G 6 Staring Rope EET 2 3 2 1 utl308 Command Bine Formal oos sosisini i estne toa terete 2 Gi2 2 Selecting Output Informations eterni cic aordena petuo 3 0 2 3 utls08 Command Line Options acce eo eot hati return danses ona inne 4 lp me 5 Ex 5 Lm HERE 6 M 7 WSU Oa E A A E E E T 8 SS PHS MUM BSN S inci cdi Pain in osx esiti ia b EFE radi sievanndweisadecavunsasaiduauvduatsdinasavieatenisinsiase 8 ESO CHIOM LEUR 9 zfover Write TOW Jramiaiin n 9 feug em 10 Conditions to establish SBDATA declaration amp SPECIAL Page Function declaration 10 G 4 1 Conditions to establish SBDATA declaration sseeee 10 G 4 2 Conditions to establish SPECIAL Page Function declaration sss 10 Exaimple or utl9l8 USE accentu Hr pera i bro rise hoe E iden c Fass dera Exp EF Ire os 11 G 5 1 Generating a SBDATA declaration file 11 a
340. t the real time operating sys tem MR308 pragma ALMHANDLER Function Declares an MR308 alarm handler Syntax pragma ALMHANDLERAalarm handler name Description By using the above format to declare an alarm handler a function written in C NC308 generates the code for the alarm handler to be used at the entry and exit points of the function The alarm handler is called from the system clock interrupt by the JSR instruction and returns by the RTS or EXITD instruction Rules 1 You canNOT write alarm handlers that take parameters 2 The return value from the alarm handler must be type void in the declaration 3 Only the function definition put after pragma ALMHANDLER are valid 4 No processing occurs if you specify other than a function name 5 No error occurs if you duplicate pragma ALMHANDLER declarations 6 A compile error occurs if you use any function specified in one of the following decla rations in pragma ALMHANDLER e pragma INTERRUPT e pragma INTHANDLER e pragma HANDLER e pragma CYCHANDLER pragma TASK Example include mrXXX h include id b pragma ALMHANDLER alm void alm void lt Be sure to declare as type void omitted Ns Figure B 78 Example of pragma ALMHANDLER Declaration Appendix B 50 Appendix B Extended Functions Reference pragma CYCHANDLER Function Declares an MR308 cyclic handler Syntax pragma CYCHANDLERAcyclic
341. tant in the following order according to the value Octal and hexadecimal signed int 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 2 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 unsigned long signed long long unsigned long long eDecimal 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 unsigned long long eDecimal signed long long Appendix C 5 Appendix C 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 constant
342. tended 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 unex pected value An example is shown below main char c1 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 Function Processes enumerator types not as int types but as unsigned char types Notes The type debug information does not include information on type sizes There fore if this option is specified the enum type may not be referenced correctly in some debugger Appendix A 28 Appendix A Command Option Reference f no even fNE 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 sec tions Take a look at the example below char c int i In this case variable c and variable i are output to separate sections This
343. ter 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 61 Appendix E Standard Library scanf Input Output Functions Function Reads characters with format from stdin Format include lt stdio h gt include ctype h int scanf format argument Method function Argument char far format Pointer of format specifying character string The part after the percent 96 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 conversion specification character Example format 5ld ReturnValue 6 Returns the number of data entries stored in each argument Returns EOF if EOF is input from stdin as data Description Converts the characters read from stdin as specified in format and stores them in the variables shown in the arguments Argument must be a far pointer to the respective variable The first space character is ignored except in c
344. termines 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 int c Character to be checked ReturnValue amp 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 ctype h int isupper c Method macro Argument int c PE a ia 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 int c Character to be checked ReturnValue amp 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
345. ternal error Contact Renesas Solutions Corp Result too large This error message is not normally displayed It is an internal error OContact Renesas Solutions Corp Too many open files This error message is not normally displayed It is an internal error OContact Renesas Solutions Corp Appendix F 3 Appendix F Error Messages F 3 cpp308 Error Messages Tables F 3 to F 6 list the error messages output by the cpp308 preprocessor and their countermeasures Table F 3 cpp308 Error Messages 1 4 NO Error message Description and countermeasure 1 illegal command option Input filename specified twice Specify the input filename once only The same name was specified for both input and output files Specify different names for input and output files 9 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 I option The string following the D option is not of a character type letter or underscore that can be used in a macro name Illegal macro name defini tion Specify the macro name correctly and define the macro correctly The command l
346. the C compiler NC308 3 1 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 3 1 1 Notes about Version up of compiler The machine language instructions assembly language generated by NC308 vary in contents depending on the startup options specified when compiling contents of version up etc Therefore when you have changed the startup options or upgraded the compiler version be sure to reevaluate the operation of your application program Furthermore when the same RAM data is referenced and its contents changed between interrupt handling and non interrupt handling routines or between tasks under realtime OS always be sure to use exclusive con trol such as volatile specification Also use exclusive control for bit field structures which have different member names but are mapped into the same RAM NC308 MANUAL 49 Chapter 3 Programming Technique 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
347. ther the character is a lower case letter isprint Checks whether the character is printable including a blank ispunct Checks whether the character is a punctuation character isspace Checks whether the character is a blank tab or new line isupper Checks whether the character is an upper case letter isxdigit Checks whether the character is a hexadecimal character tolower Converts the character from an upper case to a lower case toupper Converts the character from a lower case to an upper case errno h DL s R55 Function Defines error number Appendix E 2 Appendix E float h Standard Library Function Defines the limits of internal representation of floating point values The following lists the macros that define the limits of floating point values In NC308 long double types are processed as double types Therefore the limits applying to double types also apply to long double types Macro name Contents Defined value DBL_DIG Maximum number of digits of double type decimal preci 15 sion DBL_EPSILON Minimum positive value where 1 0 DBL_EPSILON is 2 2204460492503131e 16 found not tobe 1 0 DBL_MANT_DIG Maximum number of digits in the mantissa part when a double type floating point value is matched to the radix in its representation 53 DBL_MAX Maximum value that a double type variable can take on as 1 7976931348623157e 308 value DBL_MAX_10_
348. tializes 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_t n Number of elements Size t size Value indicating the element size in bytes ReturnValue Returns NULL if a memory area of the specified size could not be allocated Description After allocating the specified memory it is cleared to zero The size of the memory area is the product of the two parameters Rule The rules for securing memory are the same as for malloc ceil 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 Appe
349. tion data SO section bss SO section data NO section bss NO section rom NO section b Sections mapped only to OFF0000H OFFFFFFH program S fvector c Sections mapped to any area for the M16C 80 series data_FE section rom FE section data SEI section data NEI section data FEI section bss FE section data 6E section data 60 section program data FO section rom FO section data SOI section data NOI section data FOI section bss FO section data 6El section data 60 section bss 6E section bss 60 section 0 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 SOI section data NE data NEI section data NO data NOI section data FE data FEI section data FO data FOI section bss SE section bss SO section data 6E data 6El section bss 6E bss 6O 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 data 6O data 60 section NC308 MANUAL 43 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 sect308 inc include file which is used for mapping sections to memory in single chip mode va ek ck ck ck kk ck Ck kk ck Ck ck Ck ck Ck Ck kk kk kk kk ck ck ck
350. tion as define Idirectory Specifies the directory containing the file s specified in include You can specify up to 16 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 Short form dS Generates an assembly language source file extension a30 with a C language source list output as a comment Not deleted even after assembling dsource in list Short form dSL In addition to the dsource function generates an assembly lan 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 In308 This option can also be used to specify the destination directory Do not specify the filename extension dir Specifies the destination directory of the file s absolute module file map file etc generated by In308 c Version and command line Information Display Option Table 2 3 shows the comma
351. tion definition file long char 20 char b 20 func rmpa b 1 19 a b asm Macro Function rmpa command Figure B 87 Description Example of Assembler Macro Function Appendix B 59 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 SEE Function Returns the result of decimal addition on val1 plus val2 Syntax include lt asmmacro h gt static char dadd_b char vall char val2 When calculated in 8 bits static int dadd w int vall int val2 When calculated in 16 bits DADC E Function Returns the result of decimal addition with carry on val1 plus val2 Syntax include lt asmmacro h gt static char dadc b char vall char val2 When calculated in 8 bits static int dadc w int vall int val2 When calculated in 16 bits DSUB Tn Ear ie ALL I E Function Returns the result of decimal subtraction on val1 minus val2 Syntax include lt asmmacro h gt static char dsub_b char vall char val2 When calculated in 8 bits static int dsub w int vall int val2 When calculated in 16 bits Appendix B 60 DSBB Appendix B Extended Functions Reference Functi
352. tion is specified no absolute module file extension x30 or other file output by In308 is created Didentifier Function The function is the same as the preprocess command define Delimit mul tiple identifiers with spaces Syntax nc308A Didentifier 2constant A C source file gt constant is optional Execution nc308 c DMYDEBUG 1 DMSDOS 1 DUNIX sample c example 2 M32C 80 M16C 80 Series NC308 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 M 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 in which to search for files to be referenced by the preprocess command include Max specified 16 directory Syntax nc308A l directoryA lt C source file gt Execution je nc308 c I test include I test inc sample c exampie s M32C 80 M16C 80 Series NC308 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 directori
353. tion specified by pragma INTERRUPT is called Be careful not to call an interrupt handling func tion interrupt function can t return value The interrupt handling function specified by pragma INTERRUPT is using a return value Return values cannot be used in an interrupt function Delete the return value interrupt function has argument The interrupt handling function specified by pragma INTERRUPT is using an argument Arguments cannot be used in an interrupt func tion Delete the argument invalid pragma EQU The description of pragma EQU contains an error This line will be ignored Write the description correctly invalid pragma SECTION un known section base name 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 invalid pragma operand ignored An operand of pragma contains an error This line will be ignored gt Write the description correctly invalid function argument The function argument is not correctly written Write the function argument correctly invalid asm s M flag NC77 NC79 only Error in M flag value in asm statement Specify an integer constant 0 1 or 2 invalid asm s MX flag ignored NC77 NC79 only Error in MX flag value in asm statement Specify a
354. tions Table 2 8 shows the command line options for outputting warning messages for contra ventions of nc308 language specifications Table 2 8 Warning Options Option Short form Function Wnon_prototype WNP QOutputs warning messages for functions without proto type declarations Wunknown pragma WUP Outputs warning messages for non supported pragma Wno_stop WNS Prevents the compiler stopping when an error occurs Wstdout None Outputs error messages to the host machine s standard output stdout Werror file file name WEF Outputs error messages to the specified file Wstop at warning WSAW Stops the compiling process when a warning occurs Wnesting comment WNC 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 ccom308 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 descending sequence of size Wno warning stdlib WNWS Specifying this option while Wnon prototype or Wall is specified inhibits
355. to the memory area to be copied to const void far 2 Pointer to the memory area to be copied from Size t nj Number of bytes to be copied ReturnValue Returns the pointer to the memory area to which the characters have been copied Description Usually the program code described by macro is used for this function In using the function in a library please describe it as undef memcpy after description of include lt string h gt Example include lt string h gt undef memcpy lt By description of tundef memcpy static int a 3 use of a library function becomes effective static int b void func void void result result memcpy void amp a const void amp b 1 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 Appendix E 50 Appendix E Standard Library memicmp Memory Handling Functions Function Format Method Argument ReturnValue Description Compares memory areas with alphabets handled as upper case letters include lt string h gt int memicmp 1 s2 n function char _far s Pointer to the first memory area to be compared char _far s2 Pointer to the second memory area to be compared size t n Number of bytes to be compared Return Value 0 The two memory
356. ts 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 include lt stdlib h gt void qsort base nelen size cmp e1 e2 Method function Argument void far base Start address of array size_t nelen Element number size_t size Element size int cmp Compare function ReturnValue 6 No value is returned Description amp Sorts elements in an array Appendix E 60 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 6 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 Poin
357. typedef _near double near union asm else register unsigned auto enum restrict void Bool extern return volatile break far short while case float signed inline char for sizeof const goto static continue if struct 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 The 1st character is a letter or the underscore A to Z atoz or The 2nd and subsequent characters are alphanumerics or the underscore AtoZ atoz 0to9 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 integer constants Table C 7 shows the format of each base decimal octal and hexadecimal Table C 7 Specifying Integer Constants Base Notation Structure Example Decimal None 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 cons
358. ulations 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 Optimizes 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 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 ONA Inhibits starting the assembler optimizer aopt308 Ocompare byte to word OCBTW _ Compares consecutive bytes of data at contiguous addresses in words Ostatic to inline OSTI A static function is treated as an inline function Effect of each Optimization Options Option O OR OS OSA OSFA SPEED faster lower faster faster faster ROM size decrease decrease increase decrease same usage of stack decrease same same increase increase Appendix A 14 Appendix A Command Option Reference O 1 5 Function Optimizes speed and
359. um field width The default is right alignment Adds or to the result of signed conversion By default only the is added to negative numbers eBlank By default a blank is added before the value if the result of signed conversion has no sign e Adds 0 to the beginning of o conversion Adds Ox or OX to the beginning when other than 0 in x or X conversion Always adds the decimal point in e E and f conversion Always adds the decimal point in g and G conversion and also outputs any Os in the decimal place 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 If 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
360. umber gt None Sp lt number gt lt numbers two or more numbers Sp lt number gt lt number gt Does not use the specified number s as SPE CIAL Page Function numbers Use this option simultaneously with the Sb308 option fsection None The variables and functions specified by pragma SECTION are also included among those to be processed Appendix G 4 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 Sb308 Outputs SBDATA declaration Function Outputs SBDATA declaration This option can be specified simultaneously with sp308 Execution example Sp308 utl1308 sb308 ncrt0 x30 o sample M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Outputs SPECIAL page function declaration Function Execution example Outputs SPECIAL page function declaration This option can be specified simultaneously with sb308 ut1308 sp308 ncrt0 x30 o sample M16C 80 UTILITY UTL308 for M16C 80 V X XX XX COPYRIGHT C XXXX XXXX RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED Appendix G 5 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility ut 308 O Outputs the declared SBDATA result display file Function
361. unc i j X int func int x int y int z int sum sum x ty tZ return sum Return value to main Figure D 14 Example of C Language Sample Program FUNCTION main FRAME AUTO i FRAME AUTO j FRAME AUTO k ARG Size 0 Auto Size 6 size 2 offset 6 size 2 offset 4 size 2 offset 2 Context Size 8 SECTION program ODE ALIGN file pProto2 c align line 3 7 C SRC glb main 1 enter 2 int i 0x1234 1234H 6 FB s a 5 int j 0x5678 5678H 4 FB j 6 int k 9abcH 2 FB asd 7 C SRC k func i j k push w 2 FB k 3 push w 4 FB s 4 mOV W 6 FB RO i lt 5 jsr func lt 6 add l 04H SP 10 mov W RO 2 FB c 11 line 8 C SRG exitd Figure D 15 Assembly language sample program 1 2 Appendix D 11 Appendix D C Language Specification Rules FUNCTION func FRAME AU size 2 offset 2 FRAME AU size 2 offset 2 FRAME ARG 2y offset 8 FRAME ARG Diy offset 10 REGISTER ARG size 2 REGISTER RO ARG Size 4 Auto Size 2 Context Size 8 align line TI C SRC glb Sfunc Sfunc enter 02H mov w RO 2 FB i 3 X line TS C_SRC sum x y Z mov w 2 FB RO R5G add w 8 FB RO T y add w 10 FB RO n mov w RO 2 FB line 15 C SRC return sum mov w 2 FB RO H sum
362. unction 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 correcte twice If this option is specified the stack pointer is corrected only once int funcl8 int int int f nc2 int void main void int i 1 int J 23 int k k funcl i j n func2 k o Notes Use of the option Osp_adjust helps to reduce the ROM capacity and at the same time to speed up the processing However the amount of stack used may increase Appendix A 20 Appendix A Command Option Reference 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 unrolled By default this option is applied to the for statements where for is revolved up to five times Notes The ROM size increases for reasons that the for statement is revolved Ono logical or combine ONLOC Function Suppresses the optinization that puts consective ORs together In the entry version this option can
363. upt handler a function written in C NC308 generates the code for the handling shown below to be used at the entry and exit points of the function 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 MR308 OS independent interrupt handler use pragma INTERRUPT 1 You canNOT write interrupt handlers that take parameters Rules 2 The return value from the interrupt handler must be type void in the declaration 3 Do NOT use the ret int system calls from C 4 Only the function definition put after pragma INTHANDLER are valid 5 No processing occurs if you specify other than a function name 6 No error occurs if you duplicate pragma INTHANDLER declarations 7 A compile error occurs if you use any function specified in one of the following decla rations in pragma INTHANDLER pragma INTERRUPT e pragma HANDLER pragma ALMHANDLER e pragma CYCHANDLER pragma TASK Example juae lt mrXxx h gt include id h pragma INTHANDLER hand void hand void omitted ret int Figure B 80 Example of pragma INTHANDLER Declaration Appendix B 52 Appendix B Extended Functions Reference pragma TASK Funct
364. utive bytes of data at contiguous addresses in words NC308 MANUAL 16 Chapter 2 Basic Method for Using the Compiler Table 2 5 Optimization Options 2 2 Option Short form Function Ostatic_to_inline OSTI A static function is treated as an inline function f Generated Code Modification Options Table 2 6 shows the command line options for controlling nc308 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 it cannot be enabled or disabled by specification fnot reserve asm INRA 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
365. variable Syntax pragma DMACAvariable nameADMAC Register Name Rules 1 You have to declare the variable specified to be pragma DMAC before description of pragma DMAC 2 It can be specified as pragma DMAC pragma DMAC register name and the type of a variable are as follows l6bit Register 24bit Register Register Name DMDO DMD1 DMAO DMAI1 DCTO DCT1 DSAO DSA1 DRCO DRCIl DRAO DRA1 Variable Type unsigned int To arbitrary models far pointer unsigned short However the pointer to a func tion cannot be used ao Two or more pragma DMAC cannot be declared to the same register The amp address operator function call operator subscript operator and gt indirection operator cannot be specified to the variable specified by pragma DMAC 5 The variable specified by pragma DMAC is processed as that to which volatile speci fication is carried out even if there is no volatile specification AR Example void far dma0 pragma DMAC io 1 100H void func void unsigned char buff 10 dma0 buff M Figure B 72 pragma DMAC Declaration Appendix B 44 Appendix B Extended Functions Reference pragma INTCALL Function Declares a function called by a software interrupt by the int instruction Syntax 1 pragma INTCALLA CJAINT No Aassembler function name register name register name 2 pragma IN
366. 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 24H int io func io 10 M Figure B 70 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 42 Appendix B Extended Functions Reference pragma BITADDRESS The bit position specification absolute address allotment function of an input and output variable Function Syntax Description Rules Example A variable is assigned to the bit position which the specified absolute address specified pragma BITADDRESSAvariable nameAbit position absolute address The absolute address specified in this declaration is expanded as a character string in an assembler file and defined in pseudo instruction BITEQU The format for writing the numerical values therefore depends on the assembler as follows T
367. ve been called 0 times Appendix G 7 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility utl308 Wstdout Function Outputs error and warning messages to the host machine s standard output stdout Execution ut1308 o sample ncrt0 x30 Wstdout example M16C 80 UTILITY UTL308 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 ncrt0 x30 9 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 T if ingl ber Sanae To specify a single number SP lt number gt Example utl308 sp308 sp 255 ncrt0 x30 To specify two or more numbers SP lt number gt lt numbers Example utl308 sp308 sp 255 254 ncrt0 x30 To specify a range of numbers SP lt number gt number Example utl308 sp 255 250 ncrt0 x30 Appendix G 8 Appendix G The SBDATA declaration amp SPECIAL Page Function declaration Utility ut 308 fsection Outputs SBDATA declaration and SPECIAL page function declaration in 2pragma 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 cessed Notes If pragma SECTI
368. vert uppercase to lowercase and vice versa 3 1 0 Functions Functions to input and output characters and character strings These include functions for formatted I O and character string manipulation 4 Memory Management Functions Functions for dynamically securing and releasing memory areas 5 Memory Manipulation Functions Functions to copy set and compare memory areas 6 Execution Control Functions Functions to execute and terminate programs and for jumping from the currently ex ecuting 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 Function Contents Reentrant Copy strcpy Copies a character stri
369. wever Appendix A 31 Appendix A Command Option Reference fsmall_array fSA Function 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 In the entry version this option cannot be specified 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 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 re
370. 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 Hinclude lt string h gt int memcmp s1 s2 n Method function Argument const void far s Pointer to the first memory area to be compared const void far s2 Pointer to the second memory area to be compared SIZG E Dl accesos ici reo anaes Number of bytes to be compared RetumValue Return Value 0 The two memory areas are equal Return Value gt 0 The first memory area s1 is greater than the other Return Value lt O The second memory area s2 is greater than the other Description amp 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 Format Method Argument Copies n bytes of memory include lt string h gt void far memcpy s1 s2 n macro default or function void _far s1 Pointer
371. word dummy int uart3 bus collision software int 40 lword dummy int uart4 bus collision software int 41 lword dummy int A D Convert software int 42 lword dummy int input key software int 43 lword dummy int Software int 44 lword dummy int Software int 45 lword dummy int Software int 46 lword dummy int Software int 47 lword dummy int Software int 48 lword dummy int Software int 49 lword dummy int Software int 50 lword dummy int Software int 51 lword dummy int Software int 52 lword dummy int Software int 53 lword dummy int Software int 54 lword dummy int Software int 55 lword dummy int Software int 56 lword dummy int Software int 57 lword dummy int Software int 58 lword dummy int Software int 59 lword dummy int Software int 60 lword dummy int Software int 61 lword dummy int Software int 62 lword dummy int Software int 63 i macro is defined in ncrt0 a30 H Format SPECIAL number SPECIAL 255 SPECIAL 254 SPECIAL 253 SPECIAL 252 SPECIAL 251 SPECIAL 250 SPECIAL 249 SPECIAL 248 SPECIAL 247 SPECIAL 246 SPECIAL 245 SPECIAL 244 SPECIAL 243 SPECIAL 242 SPECIAL 241 SPECIAL 240 SPECIAL 239 SPECIAL 238 SPECIAL 237 SPECIAL 236 SPECIAL 235 SPECIAL 234 SPECIAL 233 SPECIAL 232 SPECIAL 231 SPECIAL 230 SPECIAL 229 SPECIAL 228 SPECIAL 227 SPECIAL 226 SPECIAL 225 SPECIAL 22
372. ws 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 _sgetO 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 91 Appendix E Standard Library b Stream Settings The NC308 standard library has five items of stream data stdin stdout stderr stdaux and stdprn as external structures These external structures are defined in the standard header file stdio h and control the mode information of each stream flag indicating whether input or output stream and status information flag indicating error or EOF Table E 15 Stream Information Stream information Name stdin Standard input stdout Standard output stderr Standard error output error is output to stdout stdaux Standard auxiliary I O stdprn Standard printer output The stream corresponding to the NC308 standard library functions shown shaded in Fig ure E 3 are fixed to standard input stdin and standard output stdout The stream cannot be changed for the
373. xpression Monadic expression monadicexpression monadicexpression 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 expressions expression expression expression expression Bitwise shift expression expression expression expression 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 Elements of expression Relational expressions expression expression lt expression expression gt expression expression lt expression expression gt expression Equivalence expression expression expression expression expression Bitwise AND expression amp expression Bitwise XOR expression expression Bitwise OR expression expression Logical AND expression amp amp expression Logical OR expression expression Conditional expression expression expression expression Assign expression monadic expression expression monadic expression expression monadic expression expression monadic expression expression
374. xpression results in zero 0 Format assertAconstant expression Description Issues a warning if a constant expression results in zero 0 Compile is contin ued however Warning cpp308 82 x c line xx assertion warning Appendix C 20 Appendix C Overview of C Language Specifications pragma oe Instructs the system to process NC308 s extended functions Function Format Description 9 09 SN SP OPS OT OY Be Go Tur c6 fo wp a oe oe on ono on 4 1 14 CeO OO AN NOAH KWH O0O OO Qo TN Ol ER Oo GPS c pragma ROMAvariable name pragma SBDATAAvariable name pragma SB16DATAAvariable name pragma SECTIONApredetermined section nameAaltered section name pragma STRUCTAtag name of structureAunpack pragma STRUCTAtag name of structureAarrange pragma ADDRESSAvariable nameAabsolute address pragma EQUAvariable name absolute address pragma BITADDRESSAvariable nameAbit position absolute address pragma DMACAvariable nameADMAC Register name pragma INTCALLA C Aint No Aassembler function name register name register name pragma INTCALLA C Aint No AC language function name pragma INTERRUPTAT B E F Ainterrupt handling function name pragma INTFAinterrupt handling function name pragma PARAMETERA C Aassembler function name register name register name pragma SPECIALA C Aspecial No Afunction name pragma ALMHANDLERAalarm handler function name pragma CYCHAN
375. xx The option Wxxx cannot be specified Specify the option correctly unknown function option fx The option fx cannot be specified Specify the option correctly Appendix F 32 Appendix F Error Messages Table F 31 ccom308 Warning Messages 10 11 Warning message Description and countermeasure unknown function option gx The option gx cannot be specified Specify the option correctly unknown optimize option mx The option mx cannot be specified Specify the option correctly unknown optimize option Ox The option Ox cannot be specified Specify the option correctly unknown option x The option x cannot be specified Specify the option correctly unknown pragma pragma specifi cation used Unsupported pragma is written Check the content of pragma This warning is displayed only when the Wunknown pragma WUP option is specified wchar t array initialized by char string The initialize expression of the wchar t type is 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 operato
376. xx 06 18 10 08 54 xxxxxxxx Exp kaka KKK KKK ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke ke e ke ke ko kk kk ko ko ko ko ko ko ko ko ko x SBDATA area Section data SE DATA org 400H data SE top Section bss SE DATA ALIGN bss SE top Section data SO DATA data SO top Section bss SO DATA bss SO top near RAM area Section 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 ALIGN blkb STACKSIZE align Stack top blkb ISTACKSIZE align istack top if _ HEAP 1 section heap DATA heap_top blkb HEAPSIZE endif Figure 2 10 Startup Program List 5 sect308 inc 1 8 NC308 MANUAL 24 Chapter 2 Basic Method for Using the Compiler section rom NE ROMDATA ALIGN rom NE top section rom_NO_top rom_NO ROMDATA SBDATA area for pragma SB16DATA Section 7 org data SE DATA 10000H data SE top section bss SE top E section bss_SE DATA ALIGN data_SO DATA dat SO top i section bss SO top i Section bss SO DATA data 6E DATA ALIGN data 6E top Section bss 6E top H section bss 6E DATA ALIGN data 60 DATA data 60 top H section bss 60 top section o
377. y specifying this option it is possible to compress the generated code size and the RAM sizes used Conversely this gives rise to the need for precise near far control For near far control Renesas recommends using the const qualifier and not the near far qualifier as much as possible Appendix A 30 Appendix A Command Option Reference 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 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 ho
378. y 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 R3R2R1R0 long types R2RO long long type R3R1R2R0 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 RO R2 pragma ASM mul macro mul wR2 R0 The return value is set to R2RO register endm pragma ENDASM long 1 void test func void 1 mul 2 3 Figure B 86 Example of pragma _ AMMACRO Appendix B 58 B 8 B 8 1 B 9 2 Appendix B Extended Functions Reference assembler Macro Function Outline of Assembler Macro Function NC308 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 func
379. yped parameter type The argument type is not the type declared in prototype declaration Check the argument type meaningless statements deleted in optimize phase Meaningless statements were deleted during op timization Delete meaningless statements meaningless statement The tail of a statement is You may confuse with 2z Check on it mismatch function pointer assign ment 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 function to a prototype declaration multi character character constant A character constant consisting of two characters or more is used Use a wide character L xx when two or more characters are required near far is conflict beyond over typedef The type defined by specifying near far is again defined by specifying near far when referencing it Write the type specifier correctly No hex digit no hex digit The hex constant contains some character that cannot be used in hex notation Use numerals 0 to 9 and alphabets A to F and a to f to describe hex constants Appendix F 29 Appendix F Error Messages Table F 28 ccom308 Warning Messages 8 11 Warning message Description and countermeasure No initialized of valiable na
380. ystems can be used for Japanese characters in NC308 EUC excluding user defined characters made up of 3 byte code e Shift JIS SUIS 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 e Environment variable specifying input code system NCKIN e 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 SuJIS Figure B 39 Example Setting of Environment Variables NCKIN and NCKOUT In NC308 the input kanji codes are processed by the cpp308 preprocessor cpp308 changes the codes to EUC codes In the last stage of token analysis in the ccom308 compiler the EUC codes are then converted for output as specified in the environment variable Appendix 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 L ETYM Figure B 40 Format of Kanji code Description in Character Strings If you write Japanese using the forma
381. zeof SECT R3 sstr b endm BCOPY macro FROM TO SECT mov l FROM_ A0 mov l TO Al mov w sizeof SECT_ R3 smovf b endm when copy over 64K byte BZEROL macro TOP_ SECT_ i push w sizeof SECT gt gt 16 gt push w sizeof SECT_ amp Offffh pusha TOP_ Stk 8 glb _bzero call _bzero G jsr a _bzero endm BCOPYL macro FROM TO SECT_ push w sizeof SECT gt gt 16 7 push w sizeof SECT_ amp Offffh pusha TO_ H pusha FROM stk 12 glb bcopy call _bcopy G a jsr a _bcopy endm b Includes sect308 inc Figure 2 7 Startup Program List 2 ncrt0 a30 2 4 NC308 MANUAL 21 Chapter 2 Basic Method for Using the Compiler insf start S 0 glb start Section interrupt istack top i Set istack pointer 02h 0ah 00h 04h set processer mode lt 7 00h Oah 0080h flg 8 stack_top sp Set stack pointer data SE top sb Set sb register Switch to bank 1 data SE top sb Set sb register switch to VECTOR_ADR intb BZERO bss_SE_top bss_SE BZERO bss_SO_top bss_SO BZERO bss_NE_top bss_NE BZERO bss_NO_top bss_NO BCOPY data SEI top data SE top data SE BCOPY data SOI top data SO top data SO BCOPY data NEI top data NE top data NE BCOPY data NOI top data NO top data NO BZERO bss SE top bss SE BZERO bss SO top bss SO BZERO bss 6E top bss 6E BZERO bss 60 top bss 60 BZERO bss FE top bss FE BZERO bss FO to

Download Pdf Manuals

image

Related Search

Related Contents

Molift Mover 300 User Manual - Molift Hoists and spare parts  Getting Started with Panzer Campaigns: Kharkov  Chief 16" On-Center Ceiling Plate  NEC E705-AVT User's Manual  Acumulador compacto  Samsung Trend 2 Lite VE Uživatelská přiručka  BWP 305 - Dalcalor.ch  

Copyright © All rights reserved.
Failed to retrieve file