keil C51的V9.02a版本出來了。主要修改的內(nèi)容如下:
C51 Version 9.02 Release
[Cx51 Compiler]
Improved: access to bit-field members with size 1 bit. The compiler uses bit instructions to access such bit-field members. When objects are defined with the bdata memory type, direct bit addressing is used. Example: struct bf { unsigned char b0:1; unsigned char b1:1; };struct bf a;struct bf bdata b; :if (a.b0 && b.b1) b.b1 = 0;
Corrected: multiplication long = int * int is potentially incorrect in Dallas 390 mode.
Corrected: explicit cast to unsigned char was ignored with complex address arithmetic. Example: unsigned char far table[256];unsigned char i, v; :v = table[(unsigned char)(16+i+20)]; // index now truncated to 8-bit
Corrected: when using conditional operators (? in complex parameter lists, there is a potential for unbalanced PUSH / POP instructions. This typically creates a application program crash at the function call.
[
Corrected: the function toint did not detect the value range 0x59 - 0x40 as invalid. Now the function returns -1 for these values.
Corrected: timing of Multiplication Division Unit (MDU) in Evatronix R8051XC2 device is faster and now reflected in the C Library. The MDU timing for int/long multiplication and long division is adjusted.