nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 09:34



Reply to topic  [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next
Программная модель Intel 8080/КР580ВМ80А 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos но весьма много простых контроллеров так и было сделано!
И я думаю - создатели это предусмотрели: простую систему можно построить
без буферов шин и системного контроллера, лишь с двумя стробами - WR и DBIN.
А хочешь сложную - наворачивай остальное.

Вопрос в том, что для нормальной работы аппаратного эмулятора может и не
надо точное потактовое соблюдение сигналов проца - достаточно соблюсти их
чтобы с ПЗУ, ОЗУ и УВВ можно было корректно обмениваться - вот я о чем...

_________________
iLavr


28 Aug 2012 15:55
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Shaos wrote:
Опять же у нас принято использовать в качестве !RD инвертированный сигнал DBIN, но это не везде проходит...

Как это не подходит? Это нормальный сигнал RD без инверсии.


28 Aug 2012 20:52
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
HardWareMan wrote:
Shaos wrote:
Опять же у нас принято использовать в качестве !RD инвертированный сигнал DBIN, но это не везде проходит...

Как это не подходит? Это нормальный сигнал RD без инверсии.

Что-то вспоминается мне, что в Радио писалось, что он толи коротковат толи ещё что...

_________________
:dj: https://mastodon.social/@Shaos


28 Aug 2012 21:26
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
HardWareMan wrote:
Как это не подходит? Это нормальный сигнал RD без инверсии.

Что-то вспоминается мне, что в Радио писалось, что он толи коротковат толи ещё что...

Не, это не про него!... С ним - как раз всё хорошо! :wink:
И даже я теперь склоняюсь к мысли, что и высокий активный уровень у него нарошно предусмотрен!


PS. Да вот хотя бы простой пример контроллера на i8080...

_________________
iLavr


28 Aug 2012 21:34
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
Lavr wrote:
PS. Да вот хотя бы простой пример контроллера на i8080...


И они снова откопали стюардессу... ;-) Отличный проект, спасибо за ссылку.


29 Aug 2012 01:58
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
HardWareMan wrote:
Как это не подходит? Это нормальный сигнал RD без инверсии.

Что-то вспоминается мне, что в Радио писалось, что он толи коротковат толи ещё что...

Не, это не про него!... С ним - как раз всё хорошо! :wink:
И даже я теперь склоняюсь к мысли, что и высокий активный уровень у него нарошно предусмотрен!

Мозги короткие у сказавшего это. А ты бы мог заюзать нашу умную книжку, а не слушать слухи.
ImageImage


29 Aug 2012 04:52
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
ага и точно - всё красиво :)

_________________
:dj: https://mastodon.social/@Shaos


29 Aug 2012 06:11
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
begoon wrote:
Shaos wrote:
P.P.S. оказалось, что AC после вычитания должен содержать ИНВЕРТИРОВАННОЕ значение полупереноса (точнее "полузаёма"), кроме того DAA у меня было реализовано не совсем правильно...


Надо полагать, что AC = A(3) | Param(3) в операциях AND ты тоже сделал? Остается загадкой, как господа svo и b2m до этого доперли в свое время.


Вот в этом топике выясняли этот момент:

http://www.nedopc.org/forum/viewtopic.php?t=8790

Я его сделал ещё в 2007 году ;)

_________________
:dj: https://mastodon.social/@Shaos


06 Sep 2012 09:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Объясните мне одну вещь, пожалуйста, уважаемые авторы прецизионных эмуляторов.

Известно ведь, что если представить байт кода операции i8080 как
D7 D6 D5 D4 D3 D2 D1 D0, то
Возможны следующие варианты:
D7 D6 - делят на 4 группы команд (можно сказать однотипных)

Почему тогда в ваших исходниках (и не только в ваших) код операции анализируется
в длинном:
Code:
switch (opcode) {
        case 0x00:            /* nop */
         ...
        case 0xFF:            /* rst 7 */
         ...
        }

Разве не было бы быстрее - выделить два старших бита в опкоде - D7 D6
и по их значению организовать 4 более коротких цикла switch (opcode)
по 4-м группам опкодов?

В этом случае, как мне представляется, опкоды 0FFh и 3Fh, к примеру,
анализировались бы одинаково быстро.

А в одном длинном switch (opcode) до значения 0FFh проверяются 255 других,
в то же время опкод 3Fh анализируется гораздо быстрее!

Или я в чем-то заблуждаюсь?

_________________
iLavr


10 Sep 2012 02:35
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Lavr wrote:
Объясните мне одну вещь, пожалуйста, уважаемые авторы прецизионных эмуляторов.

Известно ведь, что если представить байт кода операции i8080 как
D7 D6 D5 D4 D3 D2 D1 D0, то
Возможны следующие варианты:
D7 D6 - делят на 4 группы команд (можно сказать однотипных)

Почему тогда в ваших исходниках (и не только в ваших) код операции анализируется
в длинном:
Code:
switch (opcode) {
        case 0x00:            /* nop */
         ...
        case 0xFF:            /* rst 7 */
         ...
        }

Разве не было бы быстрее - выделить два старших бита в опкоде - D7 D6
и по их значению организовать 4 более коротких цикла switch (opcode)
по 4-м группам опкодов?

В этом случае, как мне представляется, опкоды 0FFh и 3Fh, к примеру,
анализировались бы одинаково быстро.

А в одном длинном switch (opcode) до значения 0FFh проверяются 255 других,
в то же время опкод 3Fh анализируется гораздо быстрее!

Или я в чем-то заблуждаюсь?


Потому что компилятор C развернет этот длинный switch в jump table, который будет работать гораздо быстрее, чем любая логика по разбору опкодов по методу дизассемблера.

Фактически, этот switch будет реализован одним jmp'ом.


10 Sep 2012 02:39
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
begoon wrote:
Потому что компилятор C развернет этот длинный switch в jump table, который будет работать гораздо быстрее, чем любая логика по разбору опкодов по методу дизассемблера.
Фактически, этот switch будет реализован одним jmp'ом.

Я этого не знал... но как поступят Java, Java Script - там тоже ты применяешь
этот длинный цикл?

А я пытаюсь на ассемблере PIC это сделать - как будет лучше?

_________________
iLavr


10 Sep 2012 02:43
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Lavr wrote:
begoon wrote:
Потому что компилятор C развернет этот длинный switch в jump table, который будет работать гораздо быстрее, чем любая логика по разбору опкодов по методу дизассемблера.
Фактически, этот switch будет реализован одним jmp'ом.

Я этого не знал... но как поступят Java, Java Script - там тоже ты применяешь
этот длинный цикл?
А я пытаюсь на ассемблере PIC это сделать - как лучше?

Для JavaScript вообще нет никакой гарантии. Надо тупо сравнивать реализации. Я этим не занимался, и уверен, что мой код i8080 на JS можно реально ускорить. Но это дело неблагодарное, так как в разных браузерах все будет по-разному.

Для Java всегда можно посмотреть генерируемый байт-код. Предположу, что там будет таблица, как в С, но сам не проверял. До версии эмулятора на JS у меня был попытка написать эмуль в виде Java Applet, но проект умер на стадии отладки, так как у меня аллергия на Java ;-).

А для PIC'ов обычно применяются более менее стандартные приемы оптимизации для языка C. Но вы всегда можешь глянуть код, который генерит твой компилятор. Вот, например, что генерит XC32 с -O3 для моего файла i8080.c. 100% это jump table.

Code:
...
   jal   rk86_memory_read_byte
   sh   $2,18($16)

   sltu   $3,$2,256
   bne   $3,$0,.L286
   lui   $3,%hi(.L242)

   li   $2,-1         # 0xffffffffffffffff
.L69:
   lw   $31,28($sp)
   lw   $17,24($sp)
   lw   $16,20($sp)
   j   $31
   addiu   $sp,$sp,32

.L286:
   sll   $2,$2,2
   addiu   $3,$3,%lo(.L242)
   addu   $2,$3,$2
   lw   $2,0($2)
   j   $2                <-- волшебный jmp
   nop

   .align   2
   .align   2
.L242:
   .word   .L4
   .word   .L5
   .word   .L6
   .word   .L7
   .word   .L8
   .word   .L9
   .word   .L10
   .word   .L11
   .word   .L4
   .word   .L12
   .word   .L13
   .word   .L14
   .word   .L15
   .word   .L16
   .word   .L17
   .word   .L18
   .word   .L4
   .word   .L19
   .word   .L20
   .word   .L21
   .word   .L22
   .word   .L23
   .word   .L24
   .word   .L25
   .word   .L4
   .word   .L26
   .word   .L27
   .word   .L28
   .word   .L29
   .word   .L30
   .word   .L31
        ...


10 Sep 2012 03:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Ну - проще говоря, это загрузка программного счётчика значением адреса перехода по таблице... так?

_________________
iLavr


10 Sep 2012 03:30
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
Lavr wrote:
Ну - проще говоря, это загрузка программного счётчика значением адреса перехода по таблице... так?

Да.


10 Sep 2012 03:36
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
в джаве тоже таблица - там спец-команда есть если я не ошибаюсь для реализации свича

_________________
:dj: https://mastodon.social/@Shaos


10 Sep 2012 05:31
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next

Who is online

Users browsing this forum: Mondx and 21 guests


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.