Settings being equal how does the size of the code generated by Dynamic C 9.24 compare to 9.26A?
I highly recommend 9.62A for all Rabbit 2000/3000 products. I don’t have numbers on code size between the two releases, but expect them to be comparable.
I’d recommend reading the Release Notes that summarize changes from the 9.40 release through to 9.62A for an idea of how many bug fixes there are from earlier versions.
In addition to those bug fixes, here’s a summary of changes in the 9.25 and 9.30 releases:
*****************************************************************
VERSION 9.30
NEW FEATURES
- Ten bit quadrature decoder capability was added for the R3000A
Rabbit microprocessor along with a new sample program. (See
R3000.LIB and QD_Phase_10bit.C for implementation.)
- New file called WIFI_INTERP_PINCONFIG.LIB added to TCPIP
folder, which contains default pin configuration settings for
developers using the Wi-Fi Add-On kit.
- Improved code generation (approximately 1% size improvement
in general).
- Improved assembly language error reporting.
BUG FIXES
Compiler Bugs
- Integer promotion rules now match ANSI C. This may cause some
new warnings to appear in older Dynamic C programs. In rare
cases, legacy code that relies on the original behavior could
be wrong (primarily in character to integer promotions).
- Defect #80437 fixed. Stack imbalance problem with certain C
expressions.
- Defect #80476 fixed. Using operator /= with field accessed from
a structure pointer with sizeof expression causes stack
imbalance.
- Defect #80532 fixed. Character shift and multiply in test
expressions was broken for certain values.
- Defect #80533 fixed. Comparison between char and long return
types (i.e. longfoo() != charfoo()) generated an internal
error.
- Defect #80624 fixed. Bug with character evaluation and logical
OR operator.
- Defect #80884 fixed. DC generates odd code for long index into
array of structures.
- Defect #80885 fixed. Odd #asm block code compiles without
complaint.
- Defect #80933 fixed. List files would occasionally show
incorrect values for addresses and code.
- Defect #80945 fixed. Type conversion bug in floating point
causes stack imbalance.
- Defect #80950 fixed. Documented form of ljp instruction,
"ljp 0xXX, 0xMMNN" was rejected by the DC assembler.
- Defect #80962 fixed. The placement of DB data in assembly had
an off-by-one error.
- Defect #80985 fixed. The types reported in a type mismatch
warning were occaisonally incorrect.
- Defect #81091 fixed. Dynamic C did not do error checking on
project files before loading.
- Defect #81105 fixed. Using the Ctrl-H help feature could result
in undefined global label errors.
- Defect #81226 fixed. The DC command-line-compiler would print
benign token warnings for some if statements.
- Defect #81232 fixed. Boundary condition for auto variables
sometimes caused incorrect code generation (stack offsets) in
array expressions.
- Defect #81234 fixed. The BIOS was not recompiled after
changing BIOS memory setting.
- Defect #81271 fixed. Identifiers containing "sizeof" caused
assembler errors, and out-of-range offsets were not reported in
inline assembly.
- Defect #81275 fixed. Assembler now handles long labels without
failing.
- Defect #81283 fixed. The BIOS was not recompiled after an
error occured in prior BIOS compile attempt.
- Defect #81327 fixed. Hitting Alt-O instead of the Ok button
after Defines window change in Project Options dialog did not
cause a BIOS recompile though hitting the Ok button did.
- Defect #81334 fixed. Use of long casting in binary operator
expressions (&, |, ~, etc...) would occasionally produce a
stack imbalance.
- Defect #81340 fixed. Long to float conversion was incorrect
when the long was sufficiently large.
- Defect #81387 fixed. The conditional operator ("?:") could
cause a stack imbalance situation in some cases.
- Defect #81410 fixed. The 'Program Terminated. Exit Code n'
message was only showing the low byte of n.
- Defect #81411 fixed. ROM file format missing newline
characters.
- Defect #81417 fixed. Prototypes having zero arguments are now
properly checked.
- Defect #81435 fixed. Rabbitbios.map file was corrupted when
Rabbitbios.c compiled 2 or more times in a Dynamic C session.
- Defect #81445 fixed. Void expressions as function call
parameters are now disallowed.
- Defect #81463 fixed. Fixed assembler's constant folding
precedence rules. The rules are now identical to C constant
expression semantics.
- Defect #81498 fixed. Function name and structure offset name
conflicts no long confuse the assembler.
- Defect #81499 fixed. Excessively long lines (including logical
lines generated by macro expansion) would sometimes be ignored
by the compiler.
- Defect #81511 fixed. Compiler no longer reports "internal
temporary stack usage" error message when compiling expressions
that convert longs to integers on the stack.
- Defect #81512 fixed. Stack bug identified by "expression
temporary stack usage" fixed.
Gui Bugs
- Defect #81095 fixed. Ctrl-H function lookup had an access
violation after changing some libraries.
- Defect #81203 fixed. Color selection for highlights changed
when selection for background was changed in Envronment dialog.
- Defect #81208 fixed. Ctrl-Enter, for Load file at cursor, did
not check relative paths.
- Defect #81213 fixed. Save Library prompt opened multiple times
during compile for modified libraries.
- Defect #81222 fixed. Hitting Cancel on Save Library prompt did
not cancel compile.
- Defect #81225 fixed. Icon blinking and beep alerts did not work
on completion of compile with Dynamic C in background.
- Defect #81230 fixed. Editor scrollbar context menu top/bottom
did not work.
- Defect #81235 fixed. A grep search with results found did not
display any message at all.
- Defect #81240 fixed. Tab navigation in the Goto Line dialog
(Ctrl-g) did not work.
- Defect #81253 fixed. Right click Find cleared text selection.
- Defect #81263 fixed. an expression over 240 characters in the
Evaluate Expression dialog could make Dymic C crash.
- Defect #81269 fixed. A large file loaded into an edit window
would sometimes make Dynamic C crash when the window was
closed.
- Defect #81326 fixed. The grep button was unresponsive if a grep
filespec had only a folder pathname without *.*.
- Defect #81332 fixed. Targetless CPU type selection in Project
Options dialog was not being saved.
- Defect #81337 fixed. The file name in the titlebar was
capitalized when the window was resized.
- Defect #81341 fixed. Assigning a different color to Stdio
window could cause an access violation.
- Defect #81346 fixed. A libray function could be unrecognized
for lookup if whitespace was added to some places in the
description.
- Defect #81354 fixed. Execution trace fields did not remember
group fields.
- Defect #81363 fixed. Libraries were not being rescanned when a
project file was opened which had a custom lib.dir.
- Defect #81372 fixed. The color assigned to a printout had been
dependent on unrelated changes but now has its own value and
dialog in the Environment Options.
- Defect #81382 fixed. A toolbar floated to the top of the screen
could not be repositioned properly.
- Defect #81384 fixed. An exception dialog could be hidden behind
another window waiting for acknowledgement but unseen.
- Defect #81385 fixed. The dialog showing the file names being
compiled was not showing all of some long board descriptions.
- Defect #81389 fixed. The "Inspect | Disassemble at cursor" menu
option did not open the assembly window.
- Defect #81391 fixed. Stack tracing display was incorrect for
pointer to struct.
- Defect #81392 fixed. A toolbar could appear detached from the
mouse cursor as it was being dragged.
- Defect #81395 fixed. Switching between Dynamic C and other
tasks when a file was modified would lead to multiple update
queries.
- Defect #81397 fixed. Environment options allowed setting a
Stdio window width of 0 which led to Tab space requirement
problems.
- Defect #81399 fixed. The Stdio window would pop up after
returning to edit mode in some circumstances.
- Defect #81400 fixed. The File Open dialog would not start in
the 'Start in' directory of a Windows shortcut when Dynamic C
was launched from the shortcut.
- Defect #81403 fixed. A text window with srolled text could be
resized to make the scrollbar disappear but with no ability to
scroll it back with the mouse.
- Defect #81404 fixed. Moving the dump widow thumb would make one
or more lines repeat at the bottom.
- Defect #81406 fixed. In the Environment Options dialog, setting
the Stdio window row limit to a low but long enough to warrant
a scroll bar and the stdio window was filled with text, there
was no scroll bar.
- Defect #81412 fixed. The 'Change Register value' dialog did not
display the prime(') for BC', DE' or HL'.
- Defect #81422 fixed. The flash and memory sizes were switched
for the LP3510 in the Project Options dialog targetless tab.
- Defect #81429 fixed. In the Environment Options dialog, the
Stdio window row minimum had been allowed to be 0, leading to
an access violation.
- Defect #81432 fixed. Some exit codes used in return from main()
could lead to an erroneous display of a runtime error message.
- Defect #81440 fixed. The board description was missing from the
messages shown when compiling if the Project Options dialog had
never been opened since Dynamic C was installed.
- Defect #81465 fixed. Targetless compile information was missing
for BL2101, BL2105, BL2111, BL2115, BL2121.
Rabbit Field Utility Bugs
- Defect #81073 fixed. The state of the Use USB checkbox was not
being remembered.
- Defect #81331 fixed. Command line RFU did not work with the -fi
switch to specifiy a flash.ini file.
- Defect #81339 fixed. RFU did not support max download baud rate
or disable baud negotiation options as Dynamic C does.
Debugger Bugs
- Defect #81348 fixed. Execution tracing with Buffer Wrap option
checked could lead to an access violation.
- Defect #81364 fixed. Using #nodebug disabled stack tracing.
- Defect #81398 fixed. Execution tracing with 'Function
entry/exit only' selected was not tracing function exits.
- Defect #81414 fixed. Entering a base-offset address in a dump
window did return the xmem equivalent physical memory data
unless the offset address began with e or f.
- Defect #81428 fixed. In the watch window, a struct member of an
array of characters was being displayed incorrectly.
Command Line Compiler Bugs
- Defect #81390 fixed. The -i switch for taking inputs from a
file instead of the keyboard did not work.
- Defect #81413 fixed. The -lf and -bf switch values were not
being used if the project file in use had values for a lib.dir
file or for a BIOS file.
Library Bugs
- Defect #81349 fixed. HDLC_Packet.LIB Can now startup both
serial ports E & F in HDLC mode without possible lockup.
- Defect #81360 fixed. R3000.LIB Corrected possible incorrect
overflow condition on channel 1 of the quadrature decoder.
- Defect #81383 fixed. Graphic.LIB The glLeft1 function now
properly scrolls a graphic image that crosses an xmem boundary.
- Defect #81418 fixed. BL26XX.LIB Now does not generate a false
runtime error when using the digHout function.
- Defect #81419 fixed. Sflash.lib Now clears data rcv flag during
initialization.
- Defect #81444 fixed. Unsigned long to float conversion is now
correct even when input's most significant ('sign') bit is set.
- Defect #81446 fixed. Code now generates more unique DHCP
transaction ID's and also checks the Client HW address field of
the DHCP response packet from the server before accepting the
IP addr. assignment, etc.
- Defect #81454 fixed. IP layer now correctly responds to
misdirected UDP packets with a properly formed ICMP packet.
- Defect #81459 fixed. No longer an MSCG12232.LIB _glData() error
when graphics buffer crosses 0xF000 boundary.
- Defect #81464 fixed. The Graphic.lib Textborder function now
handles redrawing text borders without error.
- Defect #81501 fixed. RCM3365 (nand flash) & WiFi Addon Module
had problems working together. baseaddress was set incorrectly
on nflash.lib. bit5 has to be zero when using WiFi.
*****************************************************************
VERSION 9.25
NEW FEATURES
- Samples, libraries updated and documentation added for the new
RCM3305 and RCM3315 boards.
BUG FIXES
Library Bugs
- Defect #81461 fixed. SFLASH.LIB's sf_devtable pagebitshift
value for the AT45DB321 serial flash type has been corrected.
- Defect #81473 fixed. SFLASH.LIB's sfspi_bitrev, sfspi_xbitrev
functions now explicitly clear b register to zero as required.
- Defect #81475 fixed. In default.h, the ADC, DAC and Ethernet
options are now properly specified for the BL2000B.
Compiler Bugs
- Defect #81470 fixed. One byte hl-indirect instructions
following an io prefix instruction require a preceding nop in
order to function correctly in 2T and 3T 2000 processors. This
fix broke in version 9.01 by way of simply replacing the
instruction by a nop. The correct behavior has now been
restored.