Какой в нем практический смысл?P - (parity) бит чётности (1)
Тоже самое. Ноль он и есть ноль - зачем дополнительный флаг?Z - (zero) бит нуля (2)
Какой в нем практический смысл?P - (parity) бит чётности (1)
Тоже самое. Ноль он и есть ноль - зачем дополнительный флаг?Z - (zero) бит нуля (2)
Радио-86РК, Апогей БК01
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Флаг Z - необходим для ветвлений по =0.
А вот для каких вычислений бит четности - не понятно.
Четность показывает сколько единиц в слове. При этом четность результата зависит от младшего бита. Это разные вещи.Чтобы понять чётный результат или нет. Можно использовать в условных переходах.
Так может просто сравнивать с нулем и все? Сама инструкция перехода пусть это делает, отдельный бит не нужен.То же самое, чтобы понять равен результат нулю или нет.
Недалее как, был разговор как бы сделать так чтобы все влезлоХоть он и не часто используется, но пусть будет, пригодится![]()
Радио-86РК, Апогей БК01
вообще в проце достаточно 1 флага алу, можно его стек вместе с PC ложить, если инструкции с выравниванием по 32бит в памяти, то там есть целых 2 бита свободных
А команда сравнения, ставит флаг если условие истина
сравнения банальные a<b a<=b a==b, если сильно хочется можно еще четность, parity, a==0, a<0
в командах сложения вычитания, флаг работает как перенос/заем работает
в командах сдвига, вытесненный добавочный бит
команд ветвления парочку хватати, if (flag) jump и if (!flag)
но это из темы процессоров с минимальным набором инструкций
К сожалению, если только ЭТО надо было бы использовать в командах ветвления,
то да, отдельный флаг не нужен. В том же MIPS-е для остальных условных переходов (кроме !=) приходится использовать регистр и дополнительную команду для вычислений условий, что не намного лучше команды CMP.
В том же J1 был условный переход если равно 0 (true). И добавочно две инструкции сравнения на == и < результатом которой -1 (false) или 0 (true). Через это можно сделать все остальное
Радио-86РК, Апогей БК01
Странный подход. Сначала бы обдумать общую архитектуру, а АЛУ это уже частности.
Когда я пробовал писать процессор - я посмотрел все имеющиеся в наличии. Гарвардские, фон-неймовские, регистровые, стековые итд итп. Оценил что мне нравиться, а что нет. Потом уже начал что-то делать. И то в конце концов получилось что мне запал один так как подходил почти полностью - то что не подходило и переделал.
Радио-86РК, Апогей БК01
Хорошо. Буду ждать конкретных вопросов. Чем смогу - помогу. Сам только учусь.
Радио-86РК, Апогей БК01
кстати, что бы не рыскать по всему интернету в поисках инструкций ALU
есть замечательный ресурс, где все собрано в одном месте, есть разнообразные фильтры
https://software.intel.com/sites/lan...trinsicsGuide/
К сожалению только на английском, но там есть простой псевдокод, объясняющий что инструкции делают
Думаю 8 бит для кода операции алу будет недостаточно, сейчас разумно 12-16 бит
---------- Post added at 01:23 ---------- Previous post was at 00:59 ----------
И выход алу должен быть 64бит, умножение 2х 32 битных дает 64бит
причем должно быть организовано как 2выхода по 32бит, так как то же, целочисленное деление, возвращает частное и остаток по 32бит
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)