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

 
 
 
Reply to this topicStart new topic
> Thumb-2 Instruction Set, подробное описание
sonycman
сообщение Dec 27 2008, 02:25
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Никак не могу найти в сети подробное описание инструкций кортексов.
В частности, интересуют конструкции типа BL.W и B.W
Не могу понять, для чего там буковка W.
Также не могу понять, почему эта информация держится в строгой секретности разработчиком... smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 27 2008, 13:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sonycman @ Dec 27 2008, 05:25) *
Никак не могу найти в сети подробное описание инструкций кортексов.

Где-то закопано на arm.com было. Читал c год назад.
Цитата
В частности, интересуют конструкции типа BL.W и B.W
Не могу понять, для чего там буковка W.

Широкие, полагаю, smile.gif это 32 битовые а не 16 бит инструкции.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 27 2008, 14:50
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Dec 27 2008, 17:25) *
Где-то закопано на arm.com было. Читал c год назад.

Широкие, полагаю, smile.gif это 32 битовые а не 16 бит инструкции.

Спасибо, нашёл. Вот уж точно "закопано", в разделе "RealView® Compilation Tools for µVision Assembler Guide" laughing.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 27 2008, 19:09
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Dec 27 2008, 17:25) *
Широкие, полагаю, smile.gif это 32 битовые а не 16 бит инструкции.

Ага, с этим разобрался, тут всё оказалось просто.

Теперь непонятки с инструкцией IT:
Код
    92:         i = testA(tz+z);
0x00000108 F8DC3000  LDR      r3,[r12,#0x00]
0x0000010C 4403      ADD      r3,r3,r0
    51:         if (za>= 500)
    52:         {
    53:              z = z /13;
    54:              return(-10);
    55:         }
0x0000010E F5B37FFA  CMP      r3,#0x1F4
    56:         else return(za+10);  
0x00000112 BFB8      IT       LT
0x00000114 330A      ADDLT    r3,r3,#0x0A
0x00000116 DB07      BLT      0x00000128
    53:              z = z /13;
0x00000118 F8DC3000  LDR      r3,[r12,#0x00]
0x0000011C FB93F3F4  SDIV     r3,r3,r4
0x00000120 F8CC3000  STR      r3,[r12,#0x00]
    54:              return(-10);
0x00000124 F06F0309  MVN      r3,#0x09
    92:         i = testA(tz+z);
0x00000128 F8CC3004  STR      r3,[r12,#0x04]
    93:         if (i) z = 1;
0x0000012C F8DC3004  LDR      r3,[r12,#0x04]
0x00000130 2B00      CMP      r3,#0x00
    94:         else z = 0;
0x00000132 BF0C      ITE      EQ
0x00000134 F8CC6000  STREQ    r6,[r12,#0x00]
0x00000138 F8CC5000  STRNE    r5,[r12,#0x00]

В коде в двух местах используются блоки IT. Зачем? Ведь все инструкции ARM имеют условное выполнение? Что мешает убрать инструкцию IT, разве от этого что-либо изменится в коде?
Или в ядре ARMv7 не все инструкции могут выполняться условно?
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 27 2008, 22:41
Сообщение #5


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



ниче не закопано. на их сайте все есть:
http://infocenter.arm.com/help/index.jsp?t...e/I1010015.html

можно PDF иметь.

.W - 32битные инструкции

вот в доке:

IT <cond>
IT<x> <cond>
IT<x><y> <cond>
IT<x><y><z> <cond>
Condition the following instruction, Condition the following two instructions, Condition the following three instructions, Condition the following four instructions
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 28 2008, 01:23
Сообщение #6


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(klen @ Dec 28 2008, 02:41) *
вот в доке:

IT <cond>
IT<x> <cond>
IT<x><y> <cond>
IT<x><y><z> <cond>
Condition the following instruction, Condition the following two instructions, Condition the following three instructions, Condition the following four instructions

Доку я скачал, спасибо.

Ага, вроде понял: большинство THUMB2 инструкций не могут выполняться условно, в отличие от большинства ARM инструкций! Именно для компенсации этого вопиющего недостатка и введена команда IT, которая благосклонно одаряет до четырёх следующих за ней инструкций флагом условного выполнения.
smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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