Lattice C v 5.5/Languages/Commercial
From: JJL101@PSUVM.BITNET
Date: 07/18/92-03:06:48 PM Z
From: JJL101@PSUVM.BITNET
Subject: Lattice C v 5.5/Languages/Commercial
Date: Sat Jul 18 15:06:48 1992
Taken from: ST Report (#822)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Lattice C v5.5 STR InfoFile Essential overview
===========================
Lattice C Version 5.5
=====================
Lattice C Version 5.5 is an extremely versatile and powerful development
system for the popular C programming language, adhering extremely closely
to the ANSI standard.
The system is characterised by a truly flexible environment together with
the attainment of a very high speed of object execution.
In the development of Lattice C 5.5 for the Atari range of 680x0
computers, the emphasis was on producing a package that could be used
easily by the novice to the language as well as by the seasoned expert.
Freedom of choice for the user is essential if such a goal is to be
attained and this has been achieved at all levels of the development cycle
resulting in a flexible, easy-to-use and extremely powerful collection of
programming tools - probably the ultimate C system for the Atari
ST/STe/TT!
The Compiler
____________
The Lattice C5 compiler is one of the most advanced compilers available
for 680x0 machines, having already been established on the Atari and Amiga
computers for over two years.
There are two phases of compilation (LC1 and LC2) with an optional third
phase, the Global Optimiser.
The code produced by the compiler is compact and executes as fast as that
produced by any other compiler that is currently available for the Atari
computers.
In addition to producing excellent code, Lattice C5 also gives you
tremendous flexibility through more than 100 compiler options, some of
which are listed below:-
* choose between large/small/mixed code and data models
* backward compatibility modes for nested comments/pre-ANSI
pre-processor etc.
* full xref and listing control
* error/warning message control - switch messages on and off on a
per-error basis
* full code generator optimisation control - turn on/off as required
* optimise for time/space
* pre-process only option
* full prototype extraction facility
* default int to short or long option
* define symbols on the command line
* full native 68030 and 68882 code generation
All these options (and many more) can be set from within the editor, in
the program or on the command line.
The compiler supports pre-compiled Header Files so that the header files
for a project may be compiled separately and the resulting symbol table
saved to disk, ready for re-loading by each compilation, saving valuable
time since the header files do not then have to be read. There is also
support for compressed header files to save disk space.
The ANSI compliance of the compiler is strict and complete as far as we
know including support for Trigraphs, Float as a native type and flexible
keyword ordering.
Language Extensions
___________________
The package supports all of the ANSI keyword extensions: const, enum,
signed, void, volatile.
Trigraphs, float as a native type and support for flexible keyword
ordering add to the ANSI compliance.
There are keywords to control how functions are called with parameters on
the stack/in registers: __asm, __interrupt, __regargs, __saveds,
__stdargs.
Several built-in functions provide fast, high quality inline code for
common simple library functions:
abs, max, memcmp, memcpy, memset, min, strcmp, strcpy and strlen.
There is also support for direct access to the instruction stream through:
__emit, getreg and putreg.
Inline TRAPs and Line-A usage are achieved via #pragma inline - tell the
compiler how to call the operating system and it does this
inline without a stub .
In addition, you can use anonymous unions, C++-style // comments, signed
and sized bit fields, zero length arrays, pragmas for listing and error
control and cast values are modifiable.
As with most parts of the package, the compiler can be invoked from within
the editor provided or from within a command-line shell. When using the
screen editor, there is full interactive error reporting, allowing swift
and easy correction of your syntactical mistakes.
The Linker
__________
Lattice C5 comes with a fast, high-performance linker (typically linking
in less than 5 seconds) with many powerful features such as:
* pre-linking - make several files into a partially linked object file
ready for further linking
* automatic link vectors (ALVs) for attaining the benefits of a small
code model (16 bit jumps) without the limitations of a 64k maximum
program
* definition and aliasing of symbols from the command line
* full DR and HiSoft symbols can be included in the executable
* TT program flag options
* Common Block support
* complete map file printing and format control
* fast, compact library format including a librarian.
The Editor
__________
Included in the Lattice C5 package is a complete, multi-window (up to 7),
GEM-based screen editor which fully integrates with the rest of the
system.
The editor is fast, easy-to-use and friendly with a full range of search &
replace and block commands together with powerful menus that allow you to
control and invoke all of the other tools in the Lattice C5 package.
All compiler, linker, debugger, assembler and librarian options can be
accessed through easy-to-use dialogs.
You can also customise the Tools menu to run your own programs (up to 20
of them), which will return to the editor when they terminate.
There can be up to 7 windows open at any one time with the ability to move
blocks of text between them and to use small fonts for up to 54 lines on a
standard monochrome monitor. The editor works in any screen resolution
that allows 80 or more columns.
Project Manager
_______________
Integrated within the editor environment is a powerful project manager
which allows efficient building of all types of program (GEM, TOS, DA,
etc.), libraries or pre-linked object files.
All source files (be they C or assembler) are tracked, together with their
include dependencies and there is support for recursive making of project
files.
Additional libraries, object or WITH files can be specified and compiler
options may be set on a per-file or per-project basis. All this is
controlled from an easy-to-use graphical project editor.
The Shell
_________
For the traditional user who may prefer to work from a command line
environment, we provide a powerful MS-DOS style shell supporting:
* line editing with full command history
* support for batch files with optional parameters
* command re-direction
* full support for environment variables
* over 25 built-in commands
The Debugger
____________
The highly-acclaimed MonST2 low-level debugger is supplied, complete with
extensions for supporting source line debugging. You can single-step, set
conditional breakpoints, search memory, move memory and much more.
Multi-windows allow you to inspect the processor's registers, memory
locations, disassembly and C source code, using line numbers to debug your
C program.
The Resource Editor
___________________
The resource editor supplied, WERCS, is a full featured editor for
designing menus and forms and includes an integral icon editor. It has a
number of advanced features not found in other resource construction sets,
such as 16 character object names, automatic naming of objects, searching
for strings, and no limits on the numbers of objects in a tree.
Also supplied are utilities for converting Neochrome and Degas files to
Icons and for using the name files used by other resource editors, making
upgrading to WERCS a snap.
The Assembler
_____________
The Lattice Macro Assembler is a full 68040/68881 assembler which handles
the complete set of Motorola 680x0 instruction mnemonics as well as an
extensive set of assembler directives and a powerful macro facility.
It can, therefore, be used to develop complete systems in assembly
language. Nonetheless, it is provided primarily to supplement the C
compiler and has not really been designed for large assembly language
projects.
For such tasks a full assembler package, such as DevpacST, should be used
giving more power and greater documentation on the assembly language
environment.
Global Optimiser
________________
Available as an optional third phase of compilation the global optimiser,
GO, allows you to hone the object code according to criteria of speed or
size.
Some of the optimisations performed are as follows:
* register assignment - commonly used auto, formal and temporary
variables are automatically assigned to registers
* dead store elimination - stores of values which are never fetched
again are eliminated
* dead code elimination - code whose value is not used is removed
* global common sub-expression merging - recalculation of values that
have been previously computedis eliminated
* hoisting of invariants out of loops - a calculation performed inside a
loop whose value is the same on each iteration of the loop is moved
outside the loop
* induction variable transformations - loops containing multiplications,
usually associated with indexing, have the operations reduced in
strength to addition
* constant propagation and folding - references to variables whose only
definition is a constant are replaced by the constant. Often the
definition is eliminated if all references are replaced. GO performs
constant folding to propagate new constants further
* very busy expression hoisting - code size is reduced by moving an
expression computed along all paths from a point in the code to a
common location
* strength reductions - associative re-ordering of additive operations
involving constants, to reduce the operation count
* control flow transformations - perform various transformations to
eliminate unreachable code or useless control structures Plus many
other powerful techniques.
The Lattice C 5 Tools
_____________________
Lattice C5 helps the programmer in his sometimes complex task by providing
a number of useful utilities designed to complement the main tools and
increase the general ease-of-use and speed of development. Reset Proof
RAM Disk
____________________
A full-featured auto-loading reset-proof ramdisk with configuration
program.
Header file compressor
______________________
The utility for compacting header files so that you can build your own.
Object Module Disassembler
__________________________
A disassembler for examining the output of the compiler/assembler. Useful
for hand optimisation or for eliminating those obscure bugs in your
program.
Object Module Librarian
_______________________
A full featured auto-ordering librarian (i.e. hand ordering of modules is
not required) for building libraries ready for linking.
Symbol Strip Utility
____________________
A fast utility for removing the symbol and debugging tables from an
executable program to remove the
need to re-link.
DERCS
_____
DERCS is a utility for turning a WERCS resource file into a set of
initialised data structures (OBJECT, BITBLK, ICONBLK etc.) which may be
compiled to produce an embedded resource file in your program.
This is advantageous when creating desk accessories since DAs should not
call rsrc_load(), and is essential for writing Control Panel eXtensions
(CPXs).
DERCS supports the generation of both C and assembly language structures
unfortunately the initialisation support available from other languages is
not sufficiently rich to allow the representation of general resource
files and so, if a language of anything other than C is selected, DERCS
will generate an assembly language file.
The Libraries
_____________
Lattice C 5.5 has an extensive set of library functions for all your
needs. Here is a selection of what is available:
C
In addition to standard UNIX library functions, there are many Lattice
extensions and a full range of ANSI functions.
GEM
___
Full support for all of the standard Atari GEM, AES and VDI functions is
provided and, in addition, there are functions for GDOS, FONT GDOS and FSM
GDOS, including bezier curves.
TOS
___
The TOS library includes all the GEMDOS, BIOS, XBIOS and Line-A functions
together with support for the new OS calls in the MegaSTe and the TT.
There are also Cookie Jar functions, even for early-ROM machines.
Maths
_____
Four different real math packages are supplied - a TT68882 library (for
best performance), an I/O-only library (for a MegaSTe or SFP004 card), an
auto-detecting library for portability and a software library.
Startups
________
There are CPX, Program, Desk Accessory and Resident libraries.
The Package
___________
Lattice C5.5 is supplied in attractive, rigid, protective packaging with:
* Multi-volume documentation - the User Manual describing the use and
function of each element of the package, the Library Manual detailing the
generic Unix, ANSI and Lattice libraries and the Atari
Library Manual which deals with the ST/STE/TT-specific GEM, AES,
VDI, XBIOS etc. libraries.
* An Installation Guide for easy setting up on various system
configurations.
* 7 double-sided diskettes in an quality disk wallet.
1Mb+ of memory and a hard disk are recommended if you wish to use Lattice
C5.5 to its full potential.
HiSoft
The Old School
Greenfield
BEDFORD
MK45 5DE
Please, see Cat 3 Topic 14 on GEnie in the ST RT for further
information & ordering details.
_______________________________________________________________
-----------------------------------------
Return to message index