Technical Support
Support Resources
Product Information
|
What's New in C166 Version 7.57
-
[A166 Macro Assembler]
-
Corrected: sometimes broken object files if multiple A166
run at the same time.
-
Corrected: two line feeds in Macro
Processor Language (MPL) error message.
-
[C166 C Compiler]
-
Corrected: compiler crash with intrinsic _lror_() in
combination with a modular operation. Example:
#include <intrins.h>
unsigned long ROR32(unsigned long v, int n)
{
n = n%32;
return _lror_(v,n);
}
-
Corrected: under some circumstances the C166 generates
erroneously long and indirect addressing modes togehter with
the EXTS instruction which overrides accesses to data in other
pages.
-
Corrected: a user stackpointer corruption which occurs when
the struct-parameter of a function gets initialized by the
return struct-value of another funcion call. Example:
-------------------------------------------------------------
Source code
-------------------------------------------------------------
08 :::::::
09 typedef struct
10 {
11 DWORD dwTest1;
12 DWORD dwTest2;
13 }tStruct;
14
15 static void test (void);
16 static tStruct test_1 (DWORD dw1, DWORD dw2);
17 static tStruct test_2 (tStruct tVal1, WORD wVal2);
18
19 static void test (void)
20 {
21 tStruct tVar1;
22 /* The first parameter of function test_2 gets initialized by the return value of the function test_1 */
23 tVar1 = test_2(test_1(0x1000, 0x2000), 0xfff);
24 }
25 :::::::
----------------------------------------------------------------- -------------------------------------------------------------
Wrong code generation Corrected code generation
----------------------------------------------------------------- -------------------------------------------------------------
The user stackpointer R0 gets corrupted ---------+
|
; SOURCE LINE # 23 | ; SOURCE LINE # 23
0004 E6F4FF0F MOV R4,#0FFFH | 0004 E6F4FF0F MOV R4,#0FFFH
0008 8840 MOV [-R0],R4 | 0008 8840 MOV [-R0],R4
000A E6FA0020 MOV R10,#02000H | 000A E6FA0020 MOV R10,#02000H
000E E00B MOV R11,#00H | 000E E00B MOV R11,#00H
0010 E6F80010 MOV R8,#01000H | 0010 E6F80010 MOV R8,#01000H
0014 E009 MOV R9,#00H | 0014 E009 MOV R9,#00H
0016 DA000000 R CALLS SEG (test_1),test_1 | 0016 DA000000 R CALLS SEG (test_1),test_1
001A E087 MOV R7,#08H | 001A E087 MOV R7,#08H
001C 2007 SUB R0,R7 | 001C 2007 SUB R0,R7
001E F060 MOV R6,R0 | 001E F060 MOV R6,R0
0020 0061 ADD R6,R1 | 0020 0061 ADD R6,R1
0022 DA000000 E CALLS SEG (?C_WCPYSH),?C_WCPYSH | 0022 DA000000 E CALLS SEG (?C_WCPYSH),?C_WCPYSH
0026 0001 ADD R0,R1 <---------+ 0026 DA000000 R CALLS SEG (test_2),test_2
0028 DA000000 R CALLS SEG (test_2),test_2 002A E0A6 MOV R6,#0AH ; tVar1
002C E0A6 MOV R6,#0AH ; tVar1 002C 0060 ADD R6,R0 ; tVar1
002E 0060 ADD R6,R0 ; tVar1 002E 0061 ADD R6,R1
0030 0061 ADD R6,R1 0030 E087 MOV R7,#08H
0032 E087 MOV R7,#08H 0032 DA000000 E CALLS SEG (?C_WCPYNH),?C_WCPYNH
0034 DA000000 E CALLS SEG (?C_WCPYNH),?C_WCPYNH 0036 0001 ADD R0,R1
0038 0001 ADD R0,R1 0038 06F00A00 ADD R0,#0AH
003A 06F00A00 ADD R0,#0AH ; SOURCE LINE # 24
; SOURCE LINE # 24
-
[Debug Commands]
-
[µVision]
-
This C166 release comes with µVision
V5.25.3.
-
Enhanced: New PC-Lint configuration option to add project
target and compiler specific preprocessor symbols.
-
[Supported Operating
Systems]
|