Technical Support
Support Resources
Product Information
|
What's New in C51 Version 9.56
C51 Version 9.56 Release
Release Date: 8th August 2016
-
[Cx51 Compiler]
-
Improved C90 conformity for ASSERT.H, FLOAT.H,
MATH.H, STDARG.H, STDDEF.H, STDLIB.H, and STRING.H header
files.
-
Corrected: reduntant code genration. Under some
circumstances the C51 compiler generates code which loads the
accumulator register A twice. Example:
........
10:
11: union X {
12: struct {
13: unsigned char l8 :8;
14: } v;
15: };
16:
17: union X xdata x _at_ 0x5800;
18: unsigned char t;
19:
20: void MyFunc(void) {
21: x.v.l8 = t;
22: }
23:
........
21: x.v.l8 = t;
C:0x088C 90581D MOV DPTR,#0x581D -------+------o Suboptimal code generation
C:0x088F E0 MOVX A,@DPTR | <---- Superfluous register A load
C:0x0890 ED MOV A,R5 |
C:0x0891 F0 MOVX @DPTR,A -------+
21: x.v.l8 = t;
C:0x13BA 90581D MOV DPTR,#0x581D -------+------o Corrected code generation
C:0x13BD ED MOV A,R5 |
C:0x13BE F0 MOVX @DPTR,A -------+
-
Corrected: wrong code generation in case of bit-field
computation inside a switch-case statement. Example:
#include <REG51F.H>
typedef struct sTest {
unsigned char b1 : 1;
unsigned char b2 : 1;
} t_test;
xdata t_test tSt;
void main (void) {
switch (tSt.b2) {
case 1:
P1 = 1;
break;
default:
P1 = 0;
break;
}
+-----------------------------
Wrong code generation
+-----------------------------
; FUNCTION main (BEGIN)
; SOURCE LINE # 10
; SOURCE LINE # 12
0000 900000 R MOV DPTR,#tSt
0003 E0 MOVX A,@DPTR
0004 5402 ANL A,#02H -----------\
0006 14 DEC A +---- The compiler erroneously generates code which evaluates
0007 7004 JNZ ?C0003 -----------/ the bit position 0 instead the bit position 1.
|
|
+----------------------------- |
Corrected code generation |
+----------------------------- |
; FUNCTION main (BEGIN) |
; SOURCE LINE # 10 |
; SOURCE LINE # 12 |
0000 900000 R MOV DPTR,#tSt |
0003 E0 MOVX A,@DPTR |
|
0004 C3 CLR C -----------\
0005 13 RRC A \
0006 5401 ANL A,#01H +---- The generated code evaluates now the bit position 1.
0008 14 DEC A /
0009 7004 JNZ ?C0003 -----------/
-
[LX51 Linker/Locater]
-
[A51 Assembler] and [AX51 Assembler]
- Removed: a path length limitation of 127 characters.
-
[New Supported
Devices]
-
ABOV
MC95FG0128,
MC95FG6128,
MC95FG8128,
MC95FG208,
MC95FG308,
MC95FR332,
MC95FR364,
MC95FR432,
MC95FR464,
MC96F1206,
MC96F4548,
MC96F6332,
MC96F6432,
MC96F6408A,
MC96F6508A,
MC96F6632,
MC96F6832,
MC96F7064,
MC96F7416A,
MC96F7616A,
MC96F7616T,
MC96F7816,
MC96F7664,
MC96F7864,
MC96F7848C,
MC96F8204,
MC96F8208,
MC96F8216,
MC96F8316,
MC96FC664A,
MC96FC864A,
MC96FD316,
MC96FM204,
MC96FM214,
MC96FM408,
MC96FR116C,
MC96FR3128,
MC96FR4128,
MC96FR332A,
MC96FR364B,
MC96FR364C,
MC96FT1616,
MC96FT1704,
MC96FT241,
MC96FT242,
MC97F2464,
MC97F2664,
MC97F60128,
MC97F66128,
MC97F68128,
MC97F68128A, and
MC97FG316.
-
[µVision]
-
This C51 release comes with µVision
V5.20.0.39.
-
[Supported Operating
Systems]
-
µVision and it's dynamically loaded libraries (DLL)
have been ported to MSVC 2015. MSVC 2015 does not
officially support Windows XP anylonger.
-
Refer to System
Requirements Overview for hardware and operating system
requirements.
|