C/C++ Compiler Package for H8SX, H8S, H8 Family
The following page content corresponds to the products marketed in Japan.
If you do not live in Japan, please
- Overview
- Documentation
- Downloads
- Design Support
- Further Information
Features
As the development environment of an embedded program, we provide a toolchain bundles an optimizing C/C++ compiler, an assembler and an optimizing linkage editor etc,. "NEW" shows a new function from Ver.7.
C/C++ Compiler
- Generation of Object code for all CPUs in the H8, H8S, H8SX family
- Fully compatible with the ANSI/ISO:9899/1990 standard for C
- Support for C99-language specifications(except for variable-length arrays)
- Support for C99 libraries
* C99 supports H8SX and H8S families. Note, however, that programs for the H8 family cannot be compiled in the C99 language
- Supports extended language function for H8, H8S, H8SX family
- Intrinsic functions
- Section address operators
- #pragma directives
- Support for information level message
- Mixed source and assembler listing files
- Supports ELF/DWARF format
- Embedded C++ language spec-compliant class libraries
- Expanded number of switch statement to 2048
Options newly added
| Options | Descriptions |
| library | Available to expand two library functions of memcpy and strcpy in-line (only for H8SX) |
| sbr | Available to allocate to the 8bit absolute address area (only for H8SX) |
| CHAnge_message=<sub>[,...] <sub>:<level>[=<n>[-m],...] <level>:{Information|Warning|Error} |
Modifies the message levels |
| cpu=rs4 | Generates code for the RS-4 series of MCUs |
| divs_inst | Always expands division expressions with divs instruction (only for H8SX and AE5) |
| align=4 | Boundary alignment value and disable of boundary alignment *Can be used for the H8S MCU family. |
| lang=c99 | You can compile programs written in the C99 language. And, if you select the c89stdio option in addition to lang=c99, you can use low-level functions contained in the standard I/O header files(stdio.h) written in the C89 language. NEW |
| lang=cpp | If you select the c99stdio option in addition to lang=cpp, you can use low-level functions contained in the standard I/O header files (stdio.h) written in the C99 language in C++ programs. >NEW |
| outcode=utf8 and utf8 | Support for UTF-8 code NEW |
#pragma directive and keywords newly added
| #pragma | Descriptions |
| _ _ptr16 | Available to use 2bytes pointer (only for H8SX) |
| _ _asm | Available to program in assembly language in C/C++ source program (only for H8SX) |
| #pragma bit_order | Specify the bit fields order |
| _ _indirect_ex | Specify functions to be called in expansion memory indirect addressing mode (only for H8SX) |
Intrinsic function newly added
| Intrinsic functions | Descriptions |
| mulsu, muluu | 64bit multiply (only for H8SX) |
| movmdb, movmdw, movmdl, movsd | Block transfer instruction (only for H8SX) |
| eepmovb, eepmovw, eepmovi | Enhanced intrinsic function of the block transfer instruction |
| movfpe | Check intrinsic function of MOVFPE instruction |
| inline | Function introduced for suppressing default expansion of inline functions during compilation of programs written in C++ NEW |
Assembler
- Supports instructions to all CPUs in the H8, H8S, H8SX family
- Supports assembly file inclusion
- Supports conditional assembly
- Supports macro in assembly
- Supports structured assembly
- Supports ELF/DWARF formats
- Allows .BEQU symbol to be externally defined and referenced by using .BIMPORT and .BEXPORT
Options newly added and enhanced
| Intrinsic functions | Descriptions |
| cpu=rs4 | Generates code for the RS-4 series of MCUs |
| #pragma __naked_asm | NOT automatically generate the code for saving and storing registers NEW |
Optimizing linkage editor
- Supports object file input in H8SX family
- Compact debug information function
- Inter-module optimization function
- Allows multiple load module selection
- Supports ELF/DWARF format
- Relocatable ELF format
- Absolute ELF format
- S type format
- HEX format
- Binary format
- Allows library files to be created and edited
- Analysis with an output list file (outputs referenced count of symbols)
- Checks for section address duplication
Options newly added and enhanced
| Options | Descriptions |
| SPace = [<value>] | Specify an output value to free area |
| MEMory = [ High | Low ] | Specify an amount of memory to be used for loading the input file |
| byte_count | Alter the maximum number of bytes of the records in Intel HEX format files. |
| space=random | Fill randam numbers into unoccupied areas of the following types of files: -S-type files -Intel HEX format files -Binary files |
| memory=low | You can use this option when creating library files. |
| total=size | Outputs the total size of sections to the standard output type by type of section listed below.
|
| show=total_size | Outputs the total size of sections to the linkage list type by type of section listed below.
|
| RTs_file | Generates information files for the specified emulators. |
| CRc | Calculates the value of CRC (Cyclic Redundancy Check) of the specified range and stores it at the specified address in memory. |
| cpu=stride | If the size of a section is larger than the address area in which the section is to be placed in memory, the cpu=stride option places the section in another larger area of the same memory type, or splits the section into two or more so that they can be placed in two or more address areas. NEW |
| contiguous_section | When selected with cpu=stride, the contiguous_section option places a section without splitting it in an address area of the same memory type that is large enough to accommodate the section. NEW |
| show=all | Sub-option "all" has been introduced to the "show" option. It is used to output the contents of all the lists. NEW |
Standard library configuration tool
- Allows standard library to be customized by generating the standard library in project units
- Supports reentrant libraries
- Variable size for malloc allocation (to save RAM capacity)
- Variable number of open file (to save RAM capacity)
Format converter
- Conversion from old format to ELF format
- Conversion from ELF format to old format
Stack analysis tool (CallWalker)
- Shows stack values in units of the C, C++ function
- Shows stack value on module hierarchy basis
- Edits the function allocation by drag and drop

Japan English



