Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
Вот наткнулся тут в рассылке одной | | | | Quote: > I've occasionally wished for a compiler that would recognize the > assembly languages from obsolete architectures, as an alternative > to the the object-code emulators that seem to be popular. I guess > it's a bit tricky, though... Do you mean convert the assembler source for architectures A to machine code for architectures B? e.g. If so, XCASM can already do this XCASM is the meta assembler used by the XCSB compiler and the PIC edition of ZMech. http://www.xcprod.com/titan/XCSB - optimising PIC compiler LITE edition free for personal non-commercial use | | | | |
|
25 Oct 2004 20:52 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится
|
29 Oct 2004 17:28 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо: - установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение) - затем выставляем 0 в !RD - еще один цикл (всего 3) - читаем с порта D байт - еще 1 цикл ( 4 ) - устанавливаем 1 в !RD ( 5 ) - переход по таблице для выполнения команды - 2 цикла ( 7 ) Если это была пересылка из регистра в регистр, то: - скопировать данные из регистра в W - 1 ( 8 ) - скопировать данные из W в регистр - 1 ( 9 ) - вернутся к началу - 2 такта ( 11 ) Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый.
|
06 Nov 2004 08:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
| | | | Shaos wrote: Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо: - установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение) - затем выставляем 0 в !RD - еще один цикл (всего 3) - читаем с порта D байт - еще 1 цикл ( 4 ) - устанавливаем 1 в !RD ( 5 ) - переход по таблице для выполнения команды - 2 цикла ( 7 ) Если это была пересылка из регистра в регистр, то: - скопировать данные из регистра в W - 1 ( 8 ) - скопировать данные из W в регистр - 1 ( 9 ) - вернутся к началу - 2 такта ( 11 ) Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый. | | | | |
А вот если взять и сделать что-нибудь типа клона Радио-86РК на PICе
|
11 Nov 2004 21:05 |
|
|
acidrain
Senior
Joined: 28 Feb 2005 02:31 Posts: 159 Location: Krasnodar, Russia
|
Интересно, а для чего это? =)
|
28 Jul 2005 00:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
Ну как для чего? Сделать классический компьютер из современных дешевых компонентов (8080/8085 давно не выпускаются).
|
28 Jul 2005 05:27 |
|
|
Ronin
Maniac
Joined: 29 Mar 2005 06:06 Posts: 304 Location: Krasnodar
|
ну конечно, эт у вас там не выпускаюца, а у нас все есть у нас даже военные этот 1821ВМ85 юзают, гы!
|
28 Jul 2005 05:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
| | | | Shaos wrote: | | | | Shaos wrote: Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо: - установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение) - затем выставляем 0 в !RD - еще один цикл (всего 3) - читаем с порта D байт - еще 1 цикл ( 4 ) - устанавливаем 1 в !RD ( 5 ) - переход по таблице для выполнения команды - 2 цикла ( 7 ) Если это была пересылка из регистра в регистр, то: - скопировать данные из регистра в W - 1 ( 8 ) - скопировать данные из W в регистр - 1 ( 9 ) - вернутся к началу - 2 такта ( 11 ) Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый. | | | | |
А вот если взять и сделать что-нибудь типа клона Радио-86РК на PICе | | | | |
А если вместо пика взять 75-мегагерцовый SX28, то его еще можно заставить и на экране телевизора что-то рисовать одновременно с эмуляцией системы команд 8080
По идее и ZX-Spectrum с Z80 можно сэмулировать с минимальными внешними довесками как память и т.д. - но это дольше
|
01 Apr 2006 19:30 |
|
|
acidrain
Senior
Joined: 28 Feb 2005 02:31 Posts: 159 Location: Krasnodar, Russia
|
О, как раз я делаю на аврке эмуль 68к, но думаю 68к тяжковато будет, а вот з80 можно попробовать %)
Правда, не планировал точной эмуляции 68к, а простой асм из внешней sram интерпритировать так сказать виртуальная машина
|
02 Apr 2006 04:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
AVR будет медленноватый я думаю
|
02 Apr 2006 05:41 |
|
|
acidrain
Senior
Joined: 28 Feb 2005 02:31 Posts: 159 Location: Krasnodar, Russia
|
Так он же риск и делает оп за 1 такт (правда только во внутренней сраме и не все операнды).
Вот ссылк по теме: http://akps.ssau.ru/hardw/hobbit/Fcomp/index.html
|
02 Apr 2006 06:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
За один такт или за один цикл (который 4 такта скорее всего)? К тому же не забывай что тебе придется эмулировать 16-битные операции с 32-битными регистрами на 8-битке - что выльется в невообразимые тормоза.
|
02 Apr 2006 07:03 |
|
|
acidrain
Senior
Joined: 28 Feb 2005 02:31 Posts: 159 Location: Krasnodar, Russia
|
Вот я и говорю - буду для начала асм z80 мулировать =) мож правда деление и умножение добавлю... но пока все довольно смутно представляю, мыслю так сказать
|
02 Apr 2006 07:06 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22729 Location: Silicon Valley
|
Z80 тоже нелегко сэмулить - из-за неимоверного количества команд, то ли дело 8080/8085 - один человек вполне справится за разумное время
|
02 Apr 2006 07:14 |
|
|
Ronin
Maniac
Joined: 29 Mar 2005 06:06 Posts: 304 Location: Krasnodar
|
командный цикл у АВР - 3 такта, но есть конвейер, поэтому линейные программы выполняются 1 инструкция/1 такт, да и асм не такой тяжелый "чиста риск", так что АВР одназначно пошустрее будет
|
02 Apr 2006 21:59 |
|
|