� 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!