[an error occurred while processing this directive] [an error occurred while processing this directive]
Осторожно, Кейл С51 V6.22!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено vmp 15 января 2002 г. 15:23

Попробовал перекомпилить проект с 6.21 на 6.22. В итоге наткнулся на ошибку - компилятор выкинул кусок кода.
Багрепорт на кейл отправлен.
Вот код с ошибкой:


C51 COMPILER V6.22 BUG622 01/15/2002 14:42:24 PAGE 1


C51 COMPILER V6.22, COMPILATION OF MODULE BUG622
OBJECT MODULE PLACED IN .\ObjD\Bug622.obj
COMPILER INVOKED BY: C:\KEIL622\C51\BIN\C51.EXE Bug622.c ROM(COMPACT) OPTIMIZE(9,SIZE) REGFILE(.\ObjD\mkd.ORC) BROWSE OR
-DER NOINTPROMOTE MODA2 DEFINE(RS_DEBUG) DEBUG OBJECTEXTEND CODE PRINT(.\ListD\Bug622.lst) OBJECT(.\ObjD\Bug622.obj)

stmt level source

1 void bug622(int addr, char len, char idata *buf)
2 {
3 1 char Retry;
4 1
5 1 while (len != 0)
6 1 {
7 2 Retry = 20;
8 2 for(;;)
9 2 {
10 3 *(char xdata *)addr = *buf;
11 3 if (*(char xdata *)addr == *buf)
12 3 break;
13 3 if (--Retry == 0)
14 3 { // if remove brackets {}, all OK!
15 4 return;
16 4 }
17 3 }
18 2 addr++; // this code removed!
19 2 buf++;
20 2 len--;
21 2 }
22 1 return;
23 1 }
24
C51 COMPILER V6.22 BUG622 01/15/2002 14:42:24 PAGE 2

ASSEMBLY LISTING OF GENERATED OBJECT CODE


; FUNCTION _bug622 (BEGIN)
; SOURCE LINE # 1
;---- Variable 'len' assigned to Register 'R5' ----
;---- Variable 'buf' assigned to Register 'R3' ----
;---- Variable 'addr' assigned to Register 'DPTR' ----
0000 8F82 MOV DPL,R7
0002 8E83 MOV DPH,R6
; SOURCE LINE # 2
0004 ?C0001:
; SOURCE LINE # 5
0004 ED MOV A,R5
0005 6013 JZ ?C0007
; SOURCE LINE # 6
; SOURCE LINE # 7
;---- Variable 'Retry' assigned to Register 'R1' ----
0007 7914 MOV R1,#014H
; SOURCE LINE # 8
0009 ?C0003:
; SOURCE LINE # 9
; SOURCE LINE # 10
0009 A803 MOV R0,AR3
000B E6 MOV A,@R0
000C F0 MOVX @DPTR,A
; SOURCE LINE # 11
000D E0 MOVX A,@DPTR
000E FF MOV R7,A
000F E6 MOV A,@R0
0010 FE MOV R6,A
0011 EF MOV A,R7
0012 6E XRL A,R6
0013 60EF JZ ?C0001
; SOURCE LINE # 12
0015 ?C0005:
; SOURCE LINE # 13
0015 D9F2 DJNZ R1,?C0003
; SOURCE LINE # 14
0017 22 RET
; SOURCE LINE # 16
; SOURCE LINE # 17
0018 ?C0004:
; SOURCE LINE # 18
; SOURCE LINE # 19
; SOURCE LINE # 20
; SOURCE LINE # 21
0018 80EA SJMP ?C0001
; SOURCE LINE # 23
001A ?C0007:
001A 22 RET
; FUNCTION _bug622 (END)

MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 27 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru