The Current Situation
What to Do
Dave's Wishlist
Debugging
A Unified Build Environment
Where we go from Here
Upsides:
Understands APCS
Produces reasonably small, efficient object code
Understands unique Acorn formats (relocatable modules, etc)
Comprehensive library set
Downsides:
Norcroft 5.06 is 4 years old
It cannot compile some modern code (eg Netscape's HTML
parser)
There are commonly-encountered bugs (particularly when
optimising)
C++ compiler: Port of AT&T CFront front-ending onto Norcroft C compiler
Upsides:
Allows C++ to be written at all (although not incorporated into
relocatable modules without heinous munging)
Well documented by AT&T
Downsides:
Produces inefficient object code
Cannot compile a large cross-section of modern code
No formal class libraries available (but see later...)
Pre-dates ANSI
Very difficult to write relocatable modules
ObjAsm: Macro assembler
Upsides:
Produces efficient code
Understands APCS
Handles unique Acorn formats
Downsides:
Needs tweaking to understand StrongARM as a target (eg use long
multiply without having to target ARM7M)
Debugger: DDT
Upsides:
Enables some bugs to be found
Downsides:
Can't use on relocatable modules, interrupt-sensitive things, etc etc
Difficult to use
Can send the system unstable
Can introduce Heisenbugs of its own
Options available:
Get a better Norcroft (C, C++ and FPLib) from ARM
(problem here is cost, but you get the fastest and most efficient
object code...)
Get a development tool set ported from elsewhere
(problems here are cost and knowledge of architecture, but you
may get some very nice frontend stuff...)
GNU
(problems here only involve work, we get C, C++, F77, Ada,
Pascal etc etc etc compilers, ... also the compilers don't produce
object that's quite as efficient...)
gcc-arm 2.8.x or egcs equivalent, hacked to be able to understand RMs
g++-arm, ditto
Enhanced Toolbox libs
Standard template, ANSI and Toolbox class libs
Macro assembler (can be tweaked ObjAsm, can be tweaked gas...)
Symbolic debugger (see later)
Source Management system (RCS, CVS...)
Language-independent Make environment
Resfile editor and tester (!ResEd, !ResTest)
Old-style Template editor (eg !TemplEd)
AOF disassembler (!DecAOF)
Source code editor with throwback (eg !Zap, !StrongED)
Source code profiler
Searchable docs for all the above!