User Tag List

Страница 16 из 38 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя
Показано с 151 по 160 из 377

Тема: Ищу Си для Z80

  1. #151

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    ... пока воюю с хатехом. с ним я знаком и там привычнее.
    Ну, раз так, будь добр, поделись настройками HiTech C для хорошего кода.
    Речь же о версии 3.09 для cp/m? Пробовал его "в общем порядке" - сгенереный код ничем не отличается от кучи других компиляторов тех лет.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  2. #151
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #152

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sergey, я по совету Еррора перепроверил доку на предмет работы оптимизатора, перепроверил то, что я ему скармливал и пришёл к выводу, что всё время я ему пытался скормить файлы получаемые от p1.com. он же генерирует подобие "байткода", который потом нужно скормить cgen, который потом выдаст асм листинг. я и не думал, что оптимизатору нужно именно его подсовывать. я думал, байткодовый файл оптимизатору нужен. устранив свой же косяк я увидел ооочень хорошо оптимизированный код. ну как оптимизированный, на фоне того, что он генерит до оптимизации, это оптимизация. да и sdcc явно не лучше даёт код ну или в крайнем случае, рядом где-то ходят. самое простое, пример с hello world, без оптимизатора:
    Код:
    	psect	text
    	global	_main
    _main:
    	global	ncsv, cret, indir
    	call	ncsv
    	defw	f38
    	global	_printf
    	ld	hl,19f
    	push	hl
    	call	_printf
    	ld	hl,2
    	add	hl,sp
    	ld	sp,hl
    l3:	jp	cret
    f38	equ	0
    
    	psect	data
    19:	defb	72,101,108,108,111,32,119,111,114,108,100,33,33,33,10,0
    а это с оптимизатором:
    Код:
    	global	_main
    	global	ncsv, cret, indir
    	global	_printf
    	psect	text
    _main:
    	ld	hl,19f
    	push	hl
    	call	_printf
    	pop	bc
    	ret	
    
    	psect	data
    19:	defb	72,101,108,108,111,32,119,111,114,108,100,33,33,33,10,0
    
    	psect	text
    тем более, если говорить про тот же evosdk, то там используется старая версия sdcc, а с новой, говорят. косяки. у меня у самого не получается нормально заставить нормально работать сдк с новым sdcc.
    Последний раз редактировалось Sayman; 23.03.2015 в 06:31.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  4. #153

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    ... тем более, если говорить про тот же evosdk, то там используется старая версия sdcc, а с новой, говорят. косяки. у меня у самого не получается нормально заставить нормально работать сдк с новым sdcc.
    Надеюсь, ты добавил еще одно подчеркивание к "_asm", "_endasm" и "_naked" в исходниках evo-sdk? У меня всё работает:
    http://zx-pk.ru/showpost.php?p=702247&postcount=100
    Правда, там надо было crt0.s поправить. и заработало как надо: http://zx-pk.ru/showpost.php?p=702743&postcount=107
    Вот здесь есть EVO-SDK (под TS-Config, правда) переделанная под SDCC v.3.x.x.
    http://forum.tslabs.info/viewtopic.p...t=211&start=25
    C 3.4.0 будет работать. Почитай тред - увидишь, какие были проблемы с переводом.
    Последний раз редактировалось Sergey; 23.03.2015 в 11:34.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  5. #154

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sergey, я незнаю. crt0 я тоже правил. мелкие проектики из пакета сдк собрались. а вот ксоникс, с ним пришлось попарится, но в итоге оно заработало, хотя при сборке выдавало несколько варнингов. а вот robo, там даже автор в теме про игру пишет, что тоже не смог пересобрать под 3.х.х.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  6. #155

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    не знаю почему, но хайтеховый оптимизатор нагло выкидывает из кода строку с halt. например, делаю ei halt, оптимизатор выкидывает halt. свинья!!!
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  7. #156

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    не знаю почему, но хайтеховый оптимизатор нагло выкидывает из кода строку с halt. например, делаю ei halt, оптимизатор выкидывает halt. свинья!!!
    А еще он выкидывает RET. Ну выкидывает и выкидывает, подумаешь. Я же писал: ассемберные процедуры компилируй без оптимизации в отдельном объектном модуле. Оптимизатор там для оптимизации его собственных С-транслированных конструкций, в которых не предусмотрены ни HALT ни лишние RET из тела процедур. А твой АСМ нафига оптимизировать? Он небось и так нормальный.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. #157

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сделал иначе:
    Код:
    #define _sync()			asm("	ei"); asm("	defb 76h");
    на это макросе компилятор выдаёт несколько ошибок:
    Код:
    :                                 asm("   ei"); asm("     defb 76h");
    
                                      ) expected ^
                                      ; expected ^
                                       ( expected ^
                                expression syntax ^
                                       ) expected ^
                                                            ) expected ^
                                                            ; expected ^
                                                             ( expected ^
                                                      expression syntax ^
                                                             ) expected ^
    но при этом всё собирается, и халт на месте.
    если засовывать в либу, тогда конструкция выростает до:
    Код:
    _sync:		pop de  ; return address
    		push de
                    ei
                    halt
                    ret
    т.е. лишние телодвижения.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  9. #158

    Регистрация
    21.05.2006
    Адрес
    Canada
    Сообщений
    78
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    [b] i need worked library for Sprinter. I can see - z88dk have small (for console and file io) Sprinter support (pps config).
    Sayman, ЭЛТ вы показываете здесь PPS у всех есть код, начинающийся в 0x8100 и стек на 0xc000. Этот регион (~ 16k) достаточно мала для скомпилированной программы C.

    Рассматривали ли вы другие карты памяти?

    Для PPS-ZX цели я хотел бы поставить барана в 0-16k области и заполнить, что с библиотекой кода. Область между конец файла отображения и 0x8000 я мог бы использовать для STDIO дисковых буферов и таНос регионе. В 0x8000 - 0x8300 я бы поставил стека и im2 блок. После 0x8300 я бы просто пусть программа растут вверх, чтобы 0xffff (~ 32k). 32k для C не считая библиотек приличного размера.

    Я использую автоматический перевод http://sprinter.winglion.ru/sp2000.pdf для информации, но она по-прежнему трудно выяснить.

    Будет что-то нравится эта работа? Я представляю себе небольшую программу загрузчик, который бы ознакомиться с полным C Runtime в 0-16k области и загрузить программу C в 0x8300, прежде чем прыгать на ЭЛТ.

    То, что я не знаю, если память утверждал на спринтера в гх режиме и является ли файлы на диске (в частности, HDD) можно прочитать в виде файлов. Функции BIOS документально выше, только говорить о чтении и записи абсолютных секторах на диске.

    Там также нет слова на действительно ли спринтер дос-либо буферизации. Большинство дисков ОС на Z80 машин очень просты и не буфер все данные так, чтобы они трэш, когда типовые программы C у файловый ввод / вывод. Например, если вы читаете один символ в то время, из файла вот так:

    в то время как ((с = fgetc (в))! = EOF)
    do_something (с);

    на большинстве z80 дисковых операционных систем, читал, что один символ может привести весь сектор для чтения, а затем выбросить. Есть также проблемы с имеющих более одного открытого файла или с открытого файла для обновления ("+", где есть две файловые указатели, работающие на файле).

    Информация о спринтер DOS, кажется, очень мало. Если спринтер DOS не делает эти вещи, которые мы должны поставить код, чтобы сделать это, но мы не имеем, что готов.

    Скрытый текст


    Sayman, the crts you are showing here for pps all have code starting at 0x8100 and the stack at 0xc000. This region (~16k) is quite small for a compiled C program.

    Have you considered other memory maps?

    For a pps-zx target I would like to put ram in the 0-16k area and fill that with library code. The area between the end of the display file and 0x8000 I might use for stdio disk buffers and malloc region. At 0x8000 - 0x8300 I'd put the stack and im2 block. After 0x8300 I would just let the program grow upward to 0xffff (~32k). 32k for C not counting the libraries is a decent size.

    I'm using the an automatic translation of http://sprinter.winglion.ru/sp2000.pdf for information but it's still hard to figure out.

    Would something like this work? I imagine a small loader program that would read a complete c runtime into the 0-16k area and load the C program at 0x8300 before jumping to the crt.

    What I don't know is if memory is contended on the sprinter in zx mode and whether files on disk (particularly hdd) can be read as files. The bios functions documented above only talk about reading and writing to absolute sectors on disk.

    There's also no word on whether the sprinter dos does any buffering. Most disk oses on z80 machines are very simple and do not buffer any data so that they thrash when typical C programs do file i/o. Eg, if you read one char at a time from a file like so:

    while ((c = fgetc(in)) != EOF)
    do_something(c);

    on most z80 disk operating systems, reading that one char will cause the entire sector to be read and then thrown away. There are also issues with having more than one file open or having a file open for update ("a+" where there are two file pointers operating on the file).

    Information on the sprinter dos seems very sparse. If the sprinter dos does not do these things we have to supply the code to do it but we don't have that ready yet.
    [свернуть]

  10. #159

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    сделал иначе:
    Код:
    #define _sync()			asm("	ei"); asm("	defb 76h");
    на это макросе компилятор выдаёт несколько ошибок:
    Код:
    :                                 asm("   ei"); asm("     defb 76h");
    
                                      ) expected ^
                                      ; expected ^
                                       ( expected ^
                                expression syntax ^
                                       ) expected ^
                                                            ) expected ^
                                                            ; expected ^
                                                             ( expected ^
                                                      expression syntax ^
                                                             ) expected ^
    но при этом всё собирается, и халт на месте.
    если засовывать в либу, тогда конструкция выростает до:
    Код:
    _sync:		pop de  ; return address
    		push de
                    ei
                    halt
                    ret
    т.е. лишние телодвижения.
    Не понял зачем там pop/push
    у V3.09 какие-то проблемы с пониманием конструкции asm("ор"), я ее заменял на #asm #endasm
    Если тебе надо вставить всего лишь 2 команды которые не понимает оптимизатор и избежать лишнего call/ret, как вариант можно использовать опкоды
    #asm
    defb
    defb
    #endasm

    В моем случае были объемные процедуры на голом ASM, я их выносил в отдельный модуль.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  11. #160

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не понял зачем там pop/push
    при написании какой то процедуры на асме, чтобы прога не тупанула, нужно вести для хайтеха стек. при входе нужно дёрнуть адрес возврата и все аргументы.
    в данном случае я скорей всего тупанул, т.к. для процедуры нет аргументов. но если они есть, то делать нужно как уже сказал. можно пушами и попами, можно через ld hl,2 add hl,sp или через ix. но тогда при выходе ix обязательно нужно восстановить, иначе всё дохнет.
    Если тебе надо вставить всего лишь 2 команды которые не понимает оптимизатор и избежать лишнего call/ret, как вариант можно использовать опкоды
    не хотелось бы пихать в основное тело (типа в main()) всякие куски с #asm #endasm. потому пихаю макрос. выдаёт варнинг, да, но зато работает и меньше байтов и тактов тратится.

    ---------- Post added at 14:34 ---------- Previous post was at 14:33 ----------

    Alcoholics Anonymous, I answer to you in z88dk forum, soon.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

Страница 16 из 38 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •