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

 
 
> IAR C & ASM, Scratch registers
MALLOY2
сообщение Mar 4 2009, 15:14
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



В проекте (EWARM 5.20) не хватает немного скорости решил переписать на асм функцию подсчета CRC32
открыл листинг этой функции и возникло несколько вопросов



Код
\                                 In section .text, align 4, keep-with-next
     26          u32_t crc32_update(void *data, u32_t crc, u32_t len)
     27          {
   \                     crc32_update:
   \   00000000   00502DE9           PUSH     {R12,LR}
     28            u32_t i,z;
     29            u8_t  *buf = data;
     30            for (i = 0; i < len; i++)
   \   00000004   000052E3           CMP      R2,#+0
   \   00000008   0C00000A           BEQ      ??crc32_update_0
   \   0000000C   34309FE5           LDR      R3,??crc32_update_1 ;; 0xedb88320
     31              {
     32                crc ^= buf[i];
   \                     ??crc32_update_2:
   \   00000010   00C0D0E5           LDRB     R12,[R0, #+0]
   \   00000014   01102CE0           EOR      R1,R12,R1
     33                for (z = 0; z < 8; z++ )
   \   00000018   08C0A0E3           MOV      R12,#+8
     34                crc = crc & 0x01 ? (crc >> 1) ^ poly32 : crc >> 1;
   \                     ??crc32_update_3:
   \   0000001C   A1E0A0E1           LSR      LR,R1,#+1
   \   00000020   010011E3           TST      R1,#0x1
   \   00000024   0E102310           EORNE    R1,R3,LR
   \   00000028   0E10A001           MOVEQ    R1,LR
   \   0000002C   01C05CE2           SUBS     R12,R12,#+1
   \   00000030   F9FFFF1A           BNE      ??crc32_update_3
     35              }
   \   00000034   010080E2           ADD      R0,R0,#+1
   \   00000038   012052E2           SUBS     R2,R2,#+1
   \   0000003C   F3FFFF1A           BNE      ??crc32_update_2
     36            return (crc);
   \                     ??crc32_update_0:
   \   00000040   0100A0E1           MOV      R0,R1
   \   00000044   0280BDE8           POP      {R1,PC}         ;; return
   \                     ??crc32_update_1:
   \   00000048   2083B8ED           DC32     0xedb88320
     37          }


В мануале на IAR написано
Цитата
Any of the registers R0 to R3, and R12, can be used as a scratch register by the function.


Далее я не понял о чем речь
Цитата
Note that R12 is a scratch register also when calling between assembler functions only
because of automatically inserted instructions for veneers.


Собственно вопрос за чем компилятор при входе в функцию загоняет R12 в стек, а потом его восстанавливает в R1 ?

Если я использую в своей функции R12 его надо сохранять ?

Еще вопрос по строке
Цитата
SECTION .text:CODE(2)
, все понятно кроме 2 в скобках, в мануале не нашел, логика подсказывает что это алигмент, так или не так ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MALLOY2   IAR C & ASM   Mar 4 2009, 15:14
- - KRS   Цитата(MALLOY2 @ Mar 4 2009, 18:14) Собст...   Mar 4 2009, 15:51
- - MALLOY2   Значит так режим ARM, интерверкинг выключен. При...   Mar 4 2009, 16:00
- - KRS   очень похоже на глюк оптимизатора. от переменной в...   Mar 4 2009, 16:30
- - MALLOY2   Пока ехал домой вспомнил что читал в мануале на Co...   Mar 4 2009, 19:24
|- - KRS   Цитата(MALLOY2 @ Mar 4 2009, 22:24) Пока ...   Mar 4 2009, 19:43
- - KRS   Не нашел у IAR отключения этой фичи Причем в стан...   Mar 5 2009, 11:30
- - MALLOY2   Но ее может прерывание прервать , в друг я там пер...   Mar 5 2009, 12:43
|- - KRS   Цитата(MALLOY2 @ Mar 5 2009, 15:43) Но ее...   Mar 5 2009, 12:54
- - MALLOY2   Походу еще несколько вопросов Написал функцию, оф...   Mar 5 2009, 13:50
|- - Сергей Борщ   Цитата(MALLOY2 @ Mar 5 2009, 15:50) Тепер...   Mar 5 2009, 14:15
- - MALLOY2   Всем спасибо за помощь. Функцию переписал. Резуль...   Mar 5 2009, 16:38
- - GetSmart   Советую избавиться от этого изврата КодREPTI 1,1,1...   Mar 5 2009, 17:20
- - MALLOY2   из мауала на IAR ЦитатаAny of the registers R0 to ...   Mar 5 2009, 17:25
- - GetSmart   Читал. Даже название прочитал. Но опять же получае...   Mar 5 2009, 17:40
- - MALLOY2   ЦитатаНо опять же получается функция привязана к к...   Mar 5 2009, 19:27
- - sergeeff   Вы же собираетесь что-то на ассемблере использоват...   Mar 5 2009, 21:01
- - MALLOY2   А я о чем ? 1) код на 100% соответствует мануалу...   Mar 5 2009, 21:26


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

 


RSS Текстовая версия Сейчас: 17th July 2025 - 23:53
Рейтинг@Mail.ru


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