Флейм
GameDev.ru / Флейм / Форум / Меряемся придуманными машинными архитектурами (5 стр)

Меряемся придуманными машинными архитектурами (5 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
=A=L=X=Постоялецwww23 мая 20188:59#60
О, придумал - как раз неиспользованный бит X3 в бранчах сделать так, что если он 1, то бранч превращается в привычный скоростной jump conditional relative с самыми востребованными условиями в битах X012. Так сказать и вашим и нашим.
=A=L=X=Постоялецwww23 мая 20189:21#61
Alikberov
> Нe будете банить за псевдо-оффтоп?

Да нет, почему, не оффтоп. Вроде норм так получилось.

=A=L=X=Постоялецwww23 мая 201810:21#62
Dexus
> Отдельную команду (точнее даже несколько, под каждое условие) в пространстве
> команд резервировать - это слишком расточительно.

Вообще подумал-подумал и решил что да, пусть будет единственный conditional short jump двухбайтовый, а условный префикс высвобожу под зарезервированные на будущее коды.
Тогда цикл копирования блока памяти станет 8 байт, даже меньше чем у однобайтовых опкодов.

=A=L=X=Постоялецwww23 мая 201811:15#63
Разложил опкоды с предыдущей страницы на битовые маски:
000FXXIB RRRRrrrr - LOAD/INCREMENT
0010XXLB RRRRrrrr - LOAD/STORE INDIRECT
0011XXLB RRRRrrrr - LOAD/STORE INDIRECT AUTO

01LBtttt RRRRrrrr - LOAD/STORE INDIRECT SUM
10MBMMMM RRRRrrrr - MATH/LOGIC
11000XXB          - BRANCH
11001CCC          - BRANCH CONDITIONAL

R - reg destination
r - reg source1
t - reg source2

F - update flags
XX - op subtype
I - load/increment
B - byte/word
L - load/store
M - math op
C - condition
TonalПостоялецwww23 мая 201815:26#64
=A=L=X=
> Я когда в соседней теме начал баловаться с ассемблером на Z80 у меня довольно
> часто стало вылазить такое:
>
> ld hl, other
> ld a, some
> cp a, some_test_value
> jr nz, .skip
> ld hl, another
> .skip ... ; работаем с hl
>
> то есть вилки значений - например конвертируя число в 16-ричную строку надо
> контролировать от 0 до 9 у тебя вычет или от A до F и так далее - в куче мест.
> и вот проще было бы так:
>
> ld hl, other
> ld a, some
> cp a, some_test_value
> ifz ld hl, another
> ... ; работаем с hl
Зачем?, для есть же десятичная коррекция DAA!

На входе пара Хекс в А, на выходе два ASCII кода в А,В

  MOV    B, A
CODE_L:  
  ANL    A, #0FH
  ADD    A, #90H
  DA    A
  ADDC  A, #40H
  DA    A

  XCH    A, B    ;
  SWAP  A
CODE_H:  
  ANL    A, #0FH
  ADD    A, #90H
  DA    A
  ADDC  A, #40H
  DA    A

Это мой код для 8051, у Z80 есть такая же камманда
http://www.emuverse.ru/wiki/Zilog_Z80/%D0%A1%D0%B8%D1%81%D1%82%D0… %BD%D0%B4/DAA[/s]
Чорд... нет такой команды у Z80, зато архитектурами померялись)))

Правка: 23 мая 2018 16:44

=A=L=X=Постоялецwww23 мая 201815:53#65
Tonal

Забавный трюк. Но по сравнению с Z80 код сильно короче не становится, больше всего по сравнению с этим кодом он страдает из-за отсутствия SWAP.

P.S.

> нет такой команды у Z80

Странно, вроде она везде одинакова была. Я на неё плююсь всегда - наследие микрокалькуляторов, а сидит даже в современном интеле. :)

Правка: 23 мая 2018 15:55

TonalПостоялецwww23 мая 201816:02#66
=A=L=X=
> SWAP
Хорошая штука, забирай в свою систему комманд)
TonalПостоялецwww23 мая 201816:39#67
=A=L=X=
Похоже я прогнал... У Z80 комманда DAA есть, это в эмуляторах ее 4килобайтной таблицей эмулируют)
Вот иакой же код для Z80,  в точности как мой))) http://qaru.site/questions/370619/z80-daa-instruction
 and  15
 add  a,90h
 daa
 adc  a,40h
 daa
Хороший код везде одинаков)

На 8051 это все однотактовые комманды, непосредственно на HEX->ASCII тратится всего пять тактов, это довольно быстро учитывая специфику задачи.

Правка: 24 мая 2018 0:41

=A=L=X=Постоялецwww24 мая 20182:18#68
Tonal
> Хорошая штука, забирай в свою систему комманд)
> Tonal

Не, у меня сдвига будет достаточно, т.к. он возможен по imm-смещению 0..15, то одной команды двухбайтовой хватит. А у Z80 приходится в несколько команд оформлять, что и представляет проблему.

AlikberovПостоялецwww24 мая 20186:53#69
=A=L=X=
> Вроде норм так получилось.
Угу, гoды эскиз делал.
Если не вчитывались, кратко опишу:
В процессоре всего 32 РОН 32-битных. В таблице команд в основном префиксы.
Один из 32 префиксов «DST» указывает, что выбранный РОН - приёмник;
Один из 32 префиксов «SRC» указывает, что выбранный РОН - источник;
Один из 32 префиксов «EXT» указывает, что выбранный РОН - помощник…

Далее просто комбинируются эти префиксы по простым правилам:
«DST»+«DST»: оба регистра - приёмники. Единственная операция, подходящая к ситуации - это «SWAP DST1,DST2» («XCHG»);
«SRC»+«SRC»: оба регистра - источники. Единственная операция, подходящая к ситуации - это «CMP SRC1,SRC2»;
«DST»+«SRC»: здесь классическое сочетание «приёмник»+«источник» и очевидная операция «MOV DST,SRC»;
и т.д…

Концепция казалась простой и идеальной: Сочетаешь два префикса трёх типов в любом порядке и получаешь 9 инструкций.
Вместо «CALL»/«JUMP» - «DASH»… Очень сложная инструкция… Без префиксов - аналог «JUMP» с размахом перехода до 256МБ…
А с префиксами - вызов внутренних ресурсов микропрограмм, где находится вся «вычислительная фигня» с АЛУ и условным выполнением…

P.S.: На практике задумка не взлетела из-за очень сложного «DASH-оборотня»…

=A=L=X=Постоялецwww24 мая 20187:36#70
Alikberov
> комбинируются эти префиксы по простым правилам

Ааа, понял, ну да, забавная идея. Что-то похожее на тему закладывания во VLIW-инструкцию схему подключения вычислительных блоков проца.

innuendoПостоялецwww24 мая 201810:48#71
Tonal
> У Z80 комманда DAA есть

да, помню как прочитал про неё первый раз лет так в 12 - подумал, фигня фигнёй, ан нет, полезная шутка когда делаешь часики

ZiltopПостоялецwww24 мая 201811:48#72
innuendo
да, помню как прочитал про неё первый раз лет так в 12 - подумал, фигня фигнёй,

Асм в 12 лет ! Святые ниндзи.
DAA теперь я понимаю почему ты не любишь асм оптимизации для Вулкан АЙПИ :)

Правка: 24 мая 2018 11:51

DexusУчастникwww24 мая 201814:22#73
Никогда не пользовался этим DAA. Проще десятичные счётчики делать в виде просто нескольких байт чем ради двухциферного обрезка с DAA разбираться.
innuendoПостоялецwww24 мая 201814:33#74
Dexus
> чем ради двухциферного обрезка с DAA разбираться.

просто мне в 12 лет знаний не хватало :)

Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Флейм / Железо

2001—2018 © GameDev.ru — Разработка игр