реклама на сайте
подробности

 
 
> Проблемы с IAR'ом, странно выглядит скомпиленный код
condor
сообщение Nov 8 2006, 01:54
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 18-06-05
Из: Kyiv, Ukraine
Пользователь №: 6 126



Вот маленькая функция m_getchar и код, скомпиленный IAR'ом.
Если прога попадает внутрь цикла, то из него уже не выходит, т. к. не проверяется условие key_cod == 0xFF 8(
В ассемблерном коде видно, что при попадании на строчку 0000022C, прога крутится в пределах 0000022C - 00000238 и не делает никаких проверок.
Это глюки компилятора или мои?

Код
//-----------------------------------------------------------------
char m_getchar(void)
//-----------------------------------------------------------------
{
    char key;

    while(key_cod == 0xFF)
    {
        AT91C_BASE_WDTC -> WDTC_WDCR = 0xA5000001;
        AT91C_BASE_PMC -> PMC_SCDR = AT91C_PMC_PCK;
    }
    key = key_cod;
    key_cod = 0xFF;
    return key;
}


Код
Next label is a Thumb label
m_getchar:
  00000224  4907      LDR          R1, [PC,#0x01C]         ; [0x244] =v_buf (0x1388)
  00000226  7F08      LDRB         R0, [R1, #28]
    while(key_cod == 0xFF)
  00000228  28FF      CMP          R0, #255
  0000022A  D106      BNE          0x00023A
        AT91C_BASE_WDTC -> WDTC_WDCR = 0xA5000001;
  0000022C  4806      LDR          R0, [PC,#0x018]         ; [0x248] =WDTC_WDCR (0xFFFFFD40)
  0000022E  4907      LDR          R1, [PC,#0x01C]         ; [0x24C] =0xA5000001
  00000230  6001      STR          R1, [R0, #0]
        AT91C_BASE_PMC->PMC_SCDR = AT91C_PMC_PCK;
  00000232  4807      LDR          R0, [PC,#0x01C]         ; [0x250] =PMC_SCDR (0xFFFFFC04)
  00000234  2101      MOV          R1, #1
  00000236  6001      STR          R1, [R0, #0]
  00000238  E7F8      B            0x00022C
    key_cod = 0xFF;
  0000023A  22FF      MOV          R2, #255
  0000023C  770A      STRB         R2, [R1, #28]
    return key;
  0000023E  B000      ADD          SP, SP, #0
  00000240  4770      BX           LR
  00000242  0000      LSL          R0, R0, #0
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 00:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016