Граф для вычитания на уровне процессора
От: 80LevelElf http://80levelelf.com
Дата: 12.12.14 17:05
Оценка:
Здравствуйте, у меня есть реализация сложения на уровне процессора (через битовые операции).



Или более полное описание графа
Не подскажите, как правильно по аналогии сделать вычитание, то есть ассемблерную операцию sub (substraction).
Заранее спасибо!
Re: Граф для вычитания на уровне процессора
От: watchmaker  
Дата: 12.12.14 17:22
Оценка: +1
LE>Не подскажите, как правильно по аналогии сделать вычитание, то есть ассемблерную операцию sub (substraction).

Простейший по трудозатратам вариант — вместо (A–B) вычислять (A+(–B)). Сумматор у тебя уже есть. Смена знака элементарно делается в дополнительном коде исходя из равенства –B = ¬B + 1.
И если посмотреть на твою схему, то внезапно оказывается, что для всего этого вообще не нужно добавлять в неё новых элементов — достаточно лишь перекоммутировать входные линии, и та же самая схема будет вычитать числа.
Re[2]: Граф для вычитания на уровне процессора
От: 80LevelElf http://80levelelf.com
Дата: 12.12.14 17:36
Оценка:
Здравствуйте, watchmaker, Вы писали:


LE>>Не подскажите, как правильно по аналогии сделать вычитание, то есть ассемблерную операцию sub (substraction).


W>Простейший по трудозатратам вариант — вместо (A–B) вычислять (A+(–B)). Сумматор у тебя уже есть. Смена знака элементарно делается в дополнительном коде исходя из равенства –B = ¬B + 1.

W>И если посмотреть на твою схему, то внезапно оказывается, что для всего этого вообще не нужно добавлять в неё новых элементов — достаточно лишь перекоммутировать входные линии, и та же самая схема будет вычитать числа.

С дополнительным кодом и инвертированием — понятно. Сначала сам так хотел, но был уверен, что есть вариант лучше. А можете поподробнее объяснить, что вы подразумеваете под "перекоммутировать"? Поменять местами a и b или что?
Re[3]: Граф для вычитания на уровне процессора
От: watchmaker  
Дата: 12.12.14 17:48
Оценка:
Здравствуйте, 80LevelElf, Вы писали:

LE> Сначала сам так хотел, но был уверен, что есть вариант лучше.

Верно, что есть варианты сумматоров лучше. Про предложенный подход не написано же, что он лучший, а написано он

Простейший по трудозатратам вариант

преобразовать сумматор.

LE>А можете поподробнее объяснить, что вы подразумеваете под "перекоммутировать"? Поменять местами a и b или что?

Например, у тебя на первом рисунке к одному входу элемента подключён бит b, а к другому входу элемента подключён бит ¬b. Когда будешь вместо сложения A и B складывать A и ¬B, то добавлять ещё один уровень отрицаний для вычисления ¬B не нужно — уже присутствующих в полной схеме элементов достаточно, ведь можно просто поменять указанные подключения местами.
Отредактировано 12.12.2014 17:50 watchmaker . Предыдущая версия .
Re[4]: Граф для вычитания на уровне процессора
От: 80LevelElf http://80levelelf.com
Дата: 12.12.14 18:23
Оценка:
Понятно, разобрался — спасибо большое!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.