|
Не удается повторить сишный код в асме АРМ., контроллер at91sam7s |
|
|
|
Nov 23 2009, 06:15
|
Местный
  
Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241

|
мне необходимо реализовать на асм-е следующий сишный код: Код if(datA&0x80000000) regA = 0x20000; else regA = 0x0; Но операнд в ARM-команде может иметь макс длину 12 бит, поэтому в асм-е я поступаю следующим образом: Код ;r1 = datA, regA = r6 mov r6, r1 mov r6, r6, lsr #28 and r6, r6, #0x8 ldrne r6, =0x20000 ;if(datA&0x80000000) regA = 0x20000 ldreq r6, =0 ;else regA = 0x0 это правильно? Заранее благодарен.
|
|
|
|
|
 |
Ответов
|
Nov 23 2009, 10:18
|
Местный
  
Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241

|
Цитата(aaarrr @ Nov 23 2009, 16:02)  Bulat, вы с дизассемблированным кодом C-программы ознакомились? От этого надо начинать. Более того, могу с уверенностью сказать, что руками оптимизировать там нечего. В дизассемблированном коде программы на одну операцию сдвига datA = datA<<1 приходится 5 асм-команд, в то время, как у меня в асм-коде на это тратится одна команда mov r0, r0, lsl #1. А можно в Си-коде, допустим, в качестве сдвиговой переменной datA назначить один из регистров r0,r1,... и напрямую к нему обращаться из сишного когда?
|
|
|
|
Сообщений в этой теме
Bulat Не удается повторить сишный код в асме АРМ. Nov 23 2009, 06:15 Bulat мне необходимо реализовать на асм-е следующий сишн... Nov 23 2009, 06:34 aaarrr Цитата(Bulat @ Nov 23 2009, 09:34) это пр... Nov 23 2009, 06:50 aaarrr Цитата(Bulat @ Nov 23 2009, 09:34) асм-ко... Nov 23 2009, 07:30  Bulat Цитата(aaarrr @ Nov 23 2009, 13:30) Да, н... Nov 23 2009, 09:13   GetSmart Цитата(Bulat @ Nov 23 2009, 15:13) Почему... Nov 23 2009, 09:27    Bulat Цитата(GetSmart @ Nov 23 2009, 15:27) sub... Nov 23 2009, 09:44     GetSmart Нельзя же так быстро цитировать
Bulat, в асм-фун... Nov 23 2009, 10:23      Bulat Цитата(GetSmart @ Nov 23 2009, 16:23) А в... Nov 23 2009, 10:30 sergeeff Кодtst r1, #2, 2; -2147483648 (0x80000000... Nov 23 2009, 07:02 sergeeff Авторы многих книг предупреждают о вреде преждевре... Nov 23 2009, 08:06 GetSmart Цитата(sergeeff @ Nov 23 2009, 14:06) Авт... Nov 23 2009, 08:52  andrew_b Цитата(GetSmart @ Nov 23 2009, 12:52) Мо... Nov 23 2009, 08:58  sergeeff Цитата(GetSmart @ Nov 23 2009, 11:52) Мо... Nov 23 2009, 09:08 sergeeff Быстрее и короче:
Код ldr r12,=TC_base ... Nov 23 2009, 09:35  aaarrr Цитата(Bulat @ Nov 23 2009, 13:18) В диза... Nov 23 2009, 10:41   Bulat Цитата(aaarrr @ Nov 23 2009, 16:41) Не ве... Nov 23 2009, 11:06    GetSmart Цитата(Bulat @ Nov 23 2009, 17:06) переме... Nov 23 2009, 11:16     Bulat я имел в виду лишние обращения к памяти, которых в... Nov 23 2009, 11:51      aaarrr Цитата(Bulat @ Nov 23 2009, 14:06) переме... Nov 23 2009, 12:46 sergeeff У вас в С-ой программе сплошь глобальные переменны... Nov 23 2009, 12:10 defunct Цитата(sergeeff @ Nov 23 2009, 14:10) Сов... Nov 23 2009, 12:19 Bulat Цитата(sergeeff @ Nov 23 2009, 18:10) У в... Nov 23 2009, 12:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|