|
Не удается повторить сишный код в асме АРМ., контроллер 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, 12:19
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(sergeeff @ Nov 23 2009, 14:10)  Совет: плюньте вы на ассемблер, ничего вы с бухты-барахты там не наоптимизируете, по сравнению с С/С++ компилятором. Или ... Используйте FIQ конкретно для одного только этого прерывания, храните свои переменные в R8, R9, R10. R11, R12 можете пользовать как рабочие регистры. R0...R7 по возможности не трогайте, чтобы их не надо было сохранять. Цитата Код beq Stop_TC0 bne Work_TC0
Stop_TC0: здесь инструкция beq лишняя, т.к. и без нее выполнение перейдет на Stop_TCO когда рез-тат==0.
|
|
|
|
Сообщений в этой теме
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, вы с дизассемблированным кодом C-программы ... Nov 23 2009, 10:02 Bulat Цитата(aaarrr @ Nov 23 2009, 16:02) Bulat... Nov 23 2009, 10:18  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 Bulat Цитата(sergeeff @ Nov 23 2009, 18:10) У в... Nov 23 2009, 12:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|