|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Программная модель Intel 8080/КР580ВМ80А
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22574 Location: Silicon Valley
|
Если "васюк" написан правильно (а микрософские бейсики были написаны правильно), то он не юзает DAA, т.к. с числами идёт работа в бинарном представлении с плавающей точкой. Команду DAA юзает BCD математика, которой скорее всего пользуется финансовый софт, т.к. по какому то старому американскому закону требуется, чтобы финансовое программное обеспечение считало деньги в ДЕСЯТИЧНОЙ системе с точностью до центов - без всяких там плавающих точек и переполнений...
|
12 Sep 2012 12:40 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Может всё-же перенаправить печать на 0C809H?
Где ж я ему принтер в эмуляторе возьму?
Или я что-то не так понял?
_________________ iLavr
|
12 Sep 2012 12:57 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22574 Location: Silicon Valley
|
Напиши перехватчик, который будет перенаправлять и размести его по адресу 5
|
12 Sep 2012 13:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
По времени - тест длительный? Вроде как ЗетХники жаловались, что он долгий....
_________________ iLavr
|
12 Sep 2012 13:06 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22574 Location: Silicon Valley
|
автор пишет про 3 часа, но его можно укоротить убрав один самый длинный этап
|
12 Sep 2012 13:15 |
|
|
begoon
Senior
Joined: 22 Aug 2012 17:06 Posts: 144 Location: 188.220.42.216
|
Кстати, я тут поерзал немного в плане исследования, где больше всего код моего эмулятора тормозит, работая на PIC32.
Выводы не самые утешительные. Для начала, компилятор XC32 (хотя, я думаю это проблема языка С в целом) совершенно не умеет инлайнить, если функция в другом модуле. Я тупо слил два исходника (которые активно вызывают друг друга) в один и сразу получил _видимое_ ускорение, так как компилятор начал активного инлайнить.
Я читал, что в новых GCC где-то есть так называемая link optimization, но, думаю, в XC32, хоть он и на базе GCC, этого точно нет.
Посему второй вывод. Как это и не голимо, использовать макросы, но так как они инлайняться по определению, то проблем с разбиением на модули не будет. Увы, трейдофф между "правильным программированием" и реализациями для недо-железок.
|
13 Sep 2012 08:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А под PIC16 ты не сможешь компильнуть свой исходник?
Я ориентируюсь на прототип, написанный на ассемблере,
там разбор идёт через старшие 2 бита, как я и спрашивал здесь...
Интересно бы глянуть - насколько лучше язык C делает код...
Если что, PIC-декомпилятор у меня есть...
_________________ iLavr
|
17 Sep 2012 13:29 |
|
|
begoon
Senior
Joined: 22 Aug 2012 17:06 Posts: 144 Location: 188.220.42.216
|
| | | | Lavr wrote: А под PIC16 ты не сможешь компильнуть свой исходник? Я ориентируюсь на прототип, написанный на ассемблере, там разбор идёт через старшие 2 бита, как я и спрашивал здесь... Интересно бы глянуть - насколько лучше язык C делает код... Если что, PIC-декомпилятор у меня есть... | | | | |
А сам? Все, что нужно сделать, это поставить компилятор, взять файл https://github.com/begoon/i8080-core/blob/master/i8080.c и сказать , где заменить на путь к компилятору. Итак, кто будет компилятор ставить: я или ты?
|
17 Sep 2012 13:36 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я надеялся, компилятор у тебя сто ит уже... Я несколько опасаюсь его (компилятора) нелюбви к Венде 98,
под которой я работаю...
Файл-то i8080.c я давно уж взял и почитал... а вот с компилятором у меня...
_________________ iLavr
|
17 Sep 2012 13:42 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
А ты попробуй в хидере определять inline функции, примерно так: Тут есть один минус: если функция большая или по каким-то другим причинам не инлайнится, то в результате в бинаре будет несколько одинаковых функций. Но тут уже просто мозгом думать придётся: что инлайнить, а что нет.
|
18 Sep 2012 19:00 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Джентльмены, а как тогда обрабатывать HLT ?
Ну по RESET понятно -> INIT_CPU...
А если всё-же есть прерывание, ну, скажем, как в " ЮТ-88" ?
_________________ iLavr
|
19 Sep 2012 13:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22574 Location: Silicon Valley
|
| | | | Lavr wrote: Джентльмены, а как тогда обрабатывать HLT ? Ну по RESET понятно -> INIT_CPU... А если всё-же есть прерывание, ну, скажем, как в " ЮТ-88" ? | | | | |
А в чём проблема? Эмулятор встречает HLT и встаёт, а по прерыванию - вызывает нужную подпрограммку, которая в свою очередь может вернутся куда угодно...
|
19 Sep 2012 14:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну это и дураку понятно, что железный i8080 встаёт...
А кто подсовывает нужную подпрограммку и откуда?
И как эмулируется этот механизм прерываний?
А вот вернутся куда угодно - непонятно мне вообще...
_________________ iLavr
|
19 Sep 2012 14:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22574 Location: Silicon Valley
|
| | | | Lavr wrote: Ну это и дураку понятно, что железный i8080 встаёт... А кто подсовывает нужную подпрограммку и откуда? И как эмулируется этот механизм прерываний? А вот вернутся куда угодно - непонятно мне вообще... | | | | |
Дык и софтверный 8080 встанет точно также
А кто подсовывает и откуда - это зависит от программы эмулятора, в которой можно накодить всё что угодно - хоть RST7, хоть ВН59...
Вернутся куда угодно может подпрограмма поменявшая SP - соответственно по RET она уже не попадёт на HLT и сможет продолжить работу - так?
P.S. Хм, а тут кстати в моих знаниях пробел - а что будет если она таки вернётся по RET? Пойдёт на следующую команду после HLT?
|
19 Sep 2012 14:35 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Именно так.
Но из ваших исходников мне с HLT нифига непонятно...
А сказки и трололо я при случае рассказывать тоже - ой как умею!
_________________ iLavr
|
19 Sep 2012 14:57 |
|
|
Who is online |
Users browsing this forum: No registered users and 88 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
|
|