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

 
 
> Нюансы в преобразовании ASM инструкций в двоичный
wanderlust
сообщение Nov 6 2007, 13:05
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 25-08-07
Пользователь №: 30 056



Здравствуйте.

Пробую разобратся с сабжем. И тут у меня возник вопрос следующего типа.
Есть 2 комманды :
1) ADD R0, R0, R0;
2) ADD R0, R0, LSL #0
Если я пробую их записать в двоичной форме, согласно ARM Architecture Reference Manual, у меня получается, что они идентичны бит в бит.
т.е. Код операции у них одинаковый (ADD или 0000); Rd и Rs также нули. Меня смущает запись в параметре Operand2. Согласно вышеуказаному документу Operand2 для первого случая состоит из битов [11:4], которые забиты нулями и поля Rm (4 биты), куда я полагаю вносяться также нули. Operand2 для второго случая состоит из поля shift_imm (5 битов), трёх битов забитых нулями и поля Rm (4 биты), куда как я понимаю тоже надо записать нули... Вот тут я и стопорюсь. Что не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Nov 6 2007, 15:04
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Согласно файлу arm7tdmi.pdf (стр. 52)
1. Оп-код команды ADD = 0100
2. Вторым операндом может быть регистр со сдвигом (8 типов сдвигов и 5 бит = значение сдвига) или непосредственное число со сдвигом.

Формат сдвига описывается на стр. 54. Он может быть непосредственным или взятым из другого регистра.
Короче, второй операнд всегда (!) сдвигается, даже если в команде он опущен.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post



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

 


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


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