IPB

Здравствуйте, гость ( Вход | Регистрация )

> Еще одна занимательная задача- MVM
Sergei Troizky
сообщение 17.03.2020 - 03:17
Сообщение #1


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Столкнулся с необходимостью эмулировать инструкцию MVM (move with mask) из Allen Bradley.
Инструкция [MVM S M D] копирует из регистра S в регистр D биты,
соответствующие включенным битам регистра-маски M, не затрагивая остальных битов в D.
Решение получилось неожиданно громоздким: 4 инструкции и вспомогательный регистр.
Сможет ли кто-нибудь предложить решение с меньшим количеством инструкций?

Сообщение отредактировал Sergei Troizky - 31.05.2020 - 19:57


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
inntele
сообщение 27.03.2020 - 13:33
Сообщение #2


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



К слову, Сергей, наиболее "округлый" код мог бы быть представлен следующим образом:
Код
WOR M D D ; маскируемые биты слова назначения устанавливаем в "1",
WXOR M D D ; следом перезаписываем их же в "0",
WAND S M T ; выдёргиваем из слова источника значения маскируемых бит
WOR T D D  ; и перезаписываем их в слово назначения.


Сообщение отредактировал inntele - 27.03.2020 - 13:34


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 28.05.2020 - 00:12
Сообщение #3


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Интуитивно чувствовал, что возможно решение в 3 шага.
Вот оно:
WXOR S D T 'T показывает все биты, различающиеся в S и D. Лишь они (но не обязательно все они) могут потребовать изменения в D.
WAND T M T 'Теперь T показывает только те биты, которые нужно изменить в D.
WXOR D T D 'Изменяем их в D.

Такое решение хорошо еще и тем, что D изменяется в один прием, без промежуточных изменений.
Это может иметь значение, если результат используется в прерывании.

Сообщение отредактировал Sergei Troizky - 29.05.2020 - 01:21


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 28.05.2020 - 16:58
Сообщение #4


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(Sergei Troizky @ 28.05.2020 - 01:12) *
Интуитивно чувствовал, что возможно решение в 3 шага.


Красиво)


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Sergei Troizky   Еще одна занимательная задача- MVM   17.03.2020 - 03:17
m_by   WAND - для обнуления бит WOR - для установки бит ...   17.03.2020 - 09:27
Sergei Troizky   Торопитесь. Либо неверно поняли задание. Биты, ука...   17.03.2020 - 15:38
m_by   не верно воспринял задание ... таблицу истинности ...   17.03.2020 - 17:15
Sergei Troizky   не верно воспринял задание ... таблицу истинности ...   17.03.2020 - 23:46
m_by   тогда ваш способ похоже правильный - получить обра...   18.03.2020 - 09:42
Sergei Troizky   Он правильный без "похоже", т.к. работае...   18.03.2020 - 17:51
m_by   А какой контроллер ? Можно реализовать через цикл ...   20.03.2020 - 09:45
Sergei Troizky   Модель (и даже производитель) контроллера непринци...   20.03.2020 - 22:14
inntele   WOR M D D WXOR M D D WOR S D D   25.03.2020 - 09:34
acoustik   WOR M D D WXOR M D D WOR S D D На выходе будет 101...   25.03.2020 - 10:14
inntele   [quote name='inntele' post='11986' date='25.03.202...   25.03.2020 - 11:42
inntele   WOR M D D WAND M S T WXOR T D D WXOR M D D , где T...   25.03.2020 - 12:13
Sergei Troizky   WOR M D D WAND M S T WXOR T D D WXOR M D D , где T...   26.03.2020 - 22:37
inntele   Похоже, короче не сделать. Мой вариант (на мой взг...   27.03.2020 - 07:35
inntele   К слову, Сергей, наиболее "округлый" код...   27.03.2020 - 13:33
Sergei Troizky   Интуитивно чувствовал, что возможно решение в 3 ша...   28.05.2020 - 00:12
inntele   Интуитивно чувствовал, что возможно решение в 3 ша...   28.05.2020 - 16:58


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.04.2024 - 11:27