Какой в нем практический смысл?Цитата:
P - (parity) бит чётности (1)
Тоже самое. Ноль он и есть ноль - зачем дополнительный флаг?Цитата:
Z - (zero) бит нуля (2)
Вид для печати
Какой в нем практический смысл?Цитата:
P - (parity) бит чётности (1)
Тоже самое. Ноль он и есть ноль - зачем дополнительный флаг?Цитата:
Z - (zero) бит нуля (2)
Флаг Z - необходим для ветвлений по =0.
А вот для каких вычислений бит четности - не понятно.
Четность показывает сколько единиц в слове. При этом четность результата зависит от младшего бита. Это разные вещи.Цитата:
Чтобы понять чётный результат или нет. Можно использовать в условных переходах.
Так может просто сравнивать с нулем и все? Сама инструкция перехода пусть это делает, отдельный бит не нужен.Цитата:
То же самое, чтобы понять равен результат нулю или нет.
Недалее как, был разговор как бы сделать так чтобы все влезло ;)Цитата:
Хоть он и не часто используется, но пусть будет, пригодится
вообще в проце достаточно 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). Через это можно сделать все остальное
Странный подход. Сначала бы обдумать общую архитектуру, а АЛУ это уже частности.
Когда я пробовал писать процессор - я посмотрел все имеющиеся в наличии. Гарвардские, фон-неймовские, регистровые, стековые итд итп. Оценил что мне нравиться, а что нет. Потом уже начал что-то делать. И то в конце концов получилось что мне запал один так как подходил почти полностью - то что не подходило и переделал.
Хорошо. Буду ждать конкретных вопросов. Чем смогу - помогу. Сам только учусь.
кстати, что бы не рыскать по всему интернету в поисках инструкций 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бит