nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 16 Dec 2017 14:42



Reply to topic  [ 339 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 23  Next
Давайте думать над железкой (TRIADOR) 
Author Message
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
haqreu wrote:
сложить R1 и R2, установить флаг знака и переноса

Я не силен в машинных командах, но почему нельзя "взводить" флаги всегда? Я, как понимаю, при таком простом процессоре всё равно будет аккумулятор (R1)?

Сейчас вырисовываются всего два флага:
- знак числа/ноль
- перенос/заём
Нужно ли ещё?


03 Oct 2017 13:02
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 224
Reply with quote
Думаю, что кроме carry и sign флагов не будет. Когда их устанавливать - это хороший вопрос. Смысла этого делать при копировании, например, не вижу. При всех арифметических операциях - да. А вот надо ли ставить при, например, потритовой инструкции OPA?


03 Oct 2017 13:57
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
haqreu wrote:
Смысла этого делать при копировании, например, не вижу.

Вопрос только в том, что их "взводит" - содержимое регистра-аккумулятора (если он есть), или именно инструкция. Во втором случае, мне кажется, будет усложнение ALU. Правда, пока не имею понятия, что больше займет в тримуксах, но интуитивно чувствую, что именно второе.


03 Oct 2017 14:12
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 224
Reply with quote
Меня сейчас не интересует экономия на тримуксах, меня интересует удобство программиста. Что удобнее?


03 Oct 2017 14:14
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
haqreu wrote:
Что удобнее?

Я в асме только теоретически, на 0,1%. Будем ждать профи.


03 Oct 2017 14:23
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
Подумав, решил от себя добавить: достаточно будет переходов по состоянию флага, а больше вроде не надо.
Устанавливать/сбрасывать? По моему совсем не нужно. Переход больше-ноль-меньше за одну команду - (опять же, по моему) лишнее в данной реализации.


03 Oct 2017 14:31
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 224
Reply with quote
AlexanderZh wrote:
Подумав, решил от себя добавить: достаточно будет переходов по состоянию флага, а больше вроде не надо.
Устанавливать/сбрасывать? По моему совсем не нужно. Переход больше-ноль-меньше за одну команду - (опять же, по моему) лишнее в данной реализации.


Ничего не понял. Как мне кажется, устанавливать флаги нужно при арифметических операциях (инкремент и сложение). А вот как делать ветвление всё же неясно. Shaos предлагал пропуск одной операции делать. Это пропустить-одну-команду-если-нулевой флаг? Если да, то какой именно флаг? Знака или переполнения?


03 Oct 2017 14:59
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
haqreu wrote:
Shaos предлагал пропуск одной операции делать.

Не видел такого. Утром на свежую голову перечитаю.
Последнее его предложение - использовать регистр R13 (который сегментный, типа) только в момент команды JMP (загружать в старшую часть IP) и её прочих "условных разнообразий", а загружать значение в регистр заранее, не важно за сколько. Так я его понял.
Quote:
чтобы регистр расширенного адреса использовался только при передаче управления

Не изучал пики, да и все другие МК тоже. Но по логике, нужно сделать именно так, а не пропускать 1 команду (если только в МК пик загрузка в данный регистр не является прямой загрузкой в старшие адреса IP)


03 Oct 2017 15:16
Profile
God

Joined: 02 Jan 2006 03:28
Posts: 1341
Location: Abakan
Reply with quote
Условные пропуски - это из RISC. Позволяет иметь всего одну операндную команду безусловного перехода и несколько безоперандных команд пропуска, либо одну операндную команду безусловного перехода и одну операндную команду пропуска.

Как программист: для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла. Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.


03 Oct 2017 19:10
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла.
Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.

Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.

Смешно, но это сработало в совершенно дикой ситуации - когда мы тестировали ранние dll-модели
разработанного на форуме процессора для Proteus. :lol:
У меня циклы были по флагу С - поэтому работало всё четко - а тут выяснилось, что в модели
флаг Z выставляется не всегда правильно. :wink:

_________________
iLavr


04 Oct 2017 04:06
Profile
God

Joined: 02 Jan 2006 03:28
Posts: 1341
Location: Abakan
Reply with quote
Lavr wrote:
Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.
Да, такое возможно, но и без флага Z проблематично работать.


04 Oct 2017 04:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
...но и без флага Z проблематично работать.

А вот пробабушка всея микропроцессоров - PDP-8 - без него как-то обходилась! :lol:

_________________
iLavr


04 Oct 2017 05:00
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
А не совмещаются ли флаги C и Z бинарные в один троичный?
0 - число равно нулю, -/+ - было переполнение с заёмом/переносом (он же больше/меньше при сравнениях)


04 Oct 2017 05:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
А не совмещаются ли флаги C и Z бинарные в один троичный?

Вот это - годная мысль! В троичном компьютере надо мыслить троично! :kruto:

_________________
iLavr


04 Oct 2017 05:08
Profile
Senior

Joined: 21 Mar 2017 13:50
Posts: 161
Location: Spb
Reply with quote
Вот же я опростоволосился... Есть же два флага всего: знака (где и определяется нуль) и переполнения (заём/перенос или ничего)


04 Oct 2017 05:12
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 339 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 23  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.