Go to M68000 C-compiler order page
The Crossware C680X0NT is an ANSI standard C compiler that generates code for the M68000 microprocessor, M68020 microprocessor and M68881 maths coprocessor and Motorola microcontrollers based upon the CPU32 and CPU32+ cores. Supported chips include the M68000, M68008, M68302, M68306, M68307, M68322 and M68328, M68020, M68330, M68332, M68340, M68349 and M68360. It comes complete with the Crossware Embedded Development Studio and runs under Windows 9x, Windows 2000 and Windows NT 4.0.
- Optimising ANSI C compiler with extensions for embedded development
- Source level debug output in IEEE695 format
- Pre-written library routines including 32 bit and 64 bit floating point arithmetic
- Wide range of output file formats
- Integrated Motorola compatible assembler
- Highly user friendly Embedded Development Studio integrated development environment (see separate data sheet)
The package includes the following tools and utilities:
All of these tools and utilities are Win32 applications built to make the most of your 32 bit computing environment. All tools can be used outside of the Embedded Development Studio if required using conventional command-line instructions.
OPTIMISING C COMPILER
The compiler conforms to the ANSI C specification and in addition, provides a number of enhancements including:
- variables can be any length with all characters significant
- the C++ commenting convention "//" is supported
- the _interrupt keyword declares a C function as an interrupt routine
The support libraries are a subset of the ANSI standard libraries. The supported functions are listed below.
The compiler uses the following sizes for the various C data types:
|char and unsigned char : ||1 byte|
|short int and unsigned short int : ||2 bytes |
|int and unsigned int : ||4 bytes;|
|long and unsigned long : ||4 bytes |
|float : ||4bytes (32 bits) |
|double : ||8 bytes (64 bits)|
|long double : ||8 bytes (64 bits) |
|enum : ||up to 4 bytes (minimum size |
to accommodate members)
|bit fields : ||up to 32 bits |
Assembler code can be included in your C source files both within and outside of C functions. In-line assembler code is passed unmodified to the relocatable assembler and so any assembler constructs including macros, segment directives and conditional assembly directives can be included.
- constant folding
- dead code elimination
- strength reduction
- algebraic simplification
- jump/branch optimization
- suppression of integral promotion
- global register allocation
Code and data location
Compiler generated code and data are automatically located in appropriate memory segments. Linker options allow these segments to be located at user defined memory locations. String constants and objects declared as const are located in code space. Initialized and uninitialised data are located in separate segments and initialisation of these segments is automatically carried out at run time.
The linker combines object modules created with the compiler and/or the assembler to create the final code that will run on your target system. It carries out the following functions:
- scans each module to collect segment and variable information
- arranges and positions segments at appropriate memory locations to suit the memory organisation of the target system and any specific location information supplied by the user
- finalises the values of all variables and calculates the results of any incomplete expressions
- extracts and relocates the code from each module to produce the final target program
The target program can be produced in a number of different formats including Motorola S2 and S3 records, HP/Microtec IEEE695 format or as a binary rom image. (A utility is provided for users who wish to divide the binary rom image into separate files suitable for 8 bit wide memory chips).
An optional link map will show the final location and sizes of all segments and the values of all global variables.
The compiler and assembler can both optionally generate full source level debug information. The linker updates these debug records to take account of the final location of the target program and outputs them to the target program file in IEEE695 format. Debuggers and in-circuit emulators that support this popular format can then use it to facilitate full source level debugging.
We have tested our software with the latest Noral Micrologics debugging environment and can confirm compatibility with their systems.
Instead of being used to create a final target program, the object modules produced by the compiler and assembler can be integrated into a library. The library manager performs the tasks of:
- combining object modules into a library
- adding modules to an existing library
- removing or extracting modules from an existing library
- listing the contents of a library
The MAKE utility simplifies the task of keeping object files, libraries and target programs up-to-date. It detects if any source or dependency files have changed since the last build and runs the appropriate tools (compiler, assembler, linker or library manager) to rebuild out-of-date files. It supports many advanced features including macros, inference rules, conditional inclusion and other preprocessing directives and in-line files with automatic temporary file creation.
Although the Embedded Development Studio uses its own integrated routines to keep projects up-to-date, this stand-alone MAKE utility can be used to build projects from the command-line or from within another application. The Embedded Development Studio will automatically create a makefile which is fully compatible with this stand-alone MAKE utility.
Support Library Routines:
|abs( ) ||exit( ) ||gets( ) ||log10( )* ||setvect( ) ||strncat( ) |
|acos( )* ||exp( ) ||getvect( ) ||log10l( )* ||sin( ) ||strncmp( )|
|acosl( )* ||expl( ) ||isalnum( ) ||malloc( ) ||sinl( ) ||strncpy( ) |
|asin( )* ||fabs( ) ||isalpha( ) ||memchr( ) ||sinh( ) ||strpbrk( )|
|asinl( )* ||fabsl( ) ||isascii( ) ||memcmp( ) ||sinhl( ) ||strrchr( ) |
|atan( )* ||_fcvt( ) ||iscntrl( ) ||memcpy( ) ||sprintf( ) ||strspn( ) |
|atanl( )* ||ferroe( ) ||isdigit( ) ||memmove( ) ||sqrt( ) ||strstr( ) |
|atoi( ) ||fgetc( ) ||isgraph( ) ||memset( ) ||sqrtl( ) ||tan( ) |
|atol( ) ||fgets( ) ||islower( ) ||pow( ) ||srand( ) ||tanl( ) |
|atoff( ) ||fileno( ) ||isprint( ) ||powl( ) ||sscanf( ) ||tanh( ) |
|atolf( ) ||floor( ) ||ispuntc( ) ||printf( ) ||strcat( ) ||tanhl( )* |
|clearerr( ) ||floorl( ) ||isspace( ) ||putc( ) ||scanf( ) ||time( )|
|ceil( ) ||fprintf( ) ||isupper( ) ||putchar( ) ||strchr( ) ||toascii( ) |
|ceill( ) ||free( ) ||isxdigit( ) ||puts( ) ||strcmp( ) ||tolower( ) |
|cos( ) ||fscanf( ) ||labs( ) ||rand( ) ||strcpy( ) ||toupper( ) |
|cosl( )* ||getc( ) ||log( ) ||sbrk( ) ||strcspn( ) ||ungetc( ) |
|cosh( )* ||getchar( ) ||logl( ) ||scanf( ) ||strlen( ) ||ungetch( )|
|coshl( ) ||getche( ) || || || || |
* Support with 68881 co-processor only
HOST SYSTEM REQUIREMENTS
IBM compatible PC with an Intel 80486 or above running Windows 9x, Windows 2000 or Windows NT 4.0.
Go to M68000 C-compiler order page