Важная информация

User Tag List

Страница 20 из 91 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 907

Тема: Мощная среда ZXDev для разработки НА ПЯТИ ЯЗЫКАХ для ZX готова к тестированию

  1. #191
    Master
    Регистрация
    27.03.2005
    Адрес
    CПб
    Сообщений
    711
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Ну да SDCC дает не самый оптимальный код. мягко говоря.
    SDCC может и такой код выдать:
    Код:
    ;main.c:15: for(n=32;n<128;n++)
    	ld	h,#0x20
    00106$:
    ;main.c:16: Console_WriteCh(n);
    	push	hl
    	push	hl
    	inc	sp
    	call	_Console_WriteCh
    	inc	sp
    	pop	hl
    ;main.c:15: for(n=32;n<128;n++)
    	inc	h
    	ld	a,h
    	sub	a, #0x80
    	jr	C,00106$

  2. #192
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Blade Посмотреть сообщение
    SDCC может и такой код выдать
    это где опции крутить?

  3. #193
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,627
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня получилось так:

    Исходный Оберон:

    Код:
    MODULE ASCII; (*$MAIN*)
    IMPORT Console;
    VAR
    	n: SHORTINT;
    BEGIN
    	FOR n := 32 TO 127 DO Console.WriteCh(CHR(n)) END;
    END ASCII.
    Скомпилировалось в:

    Код:
    _main_start::
    _main:
    	push	ix
    ;ASCII.c:20: ASCII_n = 32;
    	ld	hl,#_ASCII_n + 0
    	ld	(hl), #0x20
    ;ASCII.c:22: ASCII__for__1 = (ASCII__for__1 - ASCII_n) + 1;
    	ld	hl,#_ASCII__for__1 + 0
    	ld	(hl), #0x60
    ;ASCII.c:23: do {
    00101$:
    ;ASCII.c:24: Console_WriteCh((CHAR)ASCII_n);
    	ld	a,(#_ASCII_n + 0)
    	push	af
    	inc	sp
    	call	_Console_WriteCh_ROM
    	inc	sp
    ;ASCII.c:25: ASCII_n += 1;
    	ld	hl, #_ASCII_n+0
    	inc	(hl)
    ;ASCII.c:26: ASCII__for__1 -= 1;
    	ld	hl, #_ASCII__for__1+0
    	dec	(hl)
    ;ASCII.c:27: } while (!(ASCII__for__1 == 0));
    	ld	a,(#_ASCII__for__1 + 0)
    	or	a, a
    	jr	NZ,00101$
    ;ASCII.c:28: __FINI;
    	ld	hl,#0x0000
    	pop	ix
    	ret
    _main_end::
    Немножечко "догнал" опцией --oldralloc, немножечко можно попробовать реализацией FOR от Saferoll (впрочем, прироста именно в этом случае не даёт). Немножечко отказом от OUTPUT_COMPACT в пользу OUTPUT_ROM. Итоговая TAP'ка весит 198 байт.

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    И что за строки типа .area _CODE?
    Директива секции кода, встроенная в SDCC-асм.

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    ну и смысл всё это использовать?
    Сделай лучше. Потихоньку.

    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    (или модулу, она мне как-то больше приглянулас)
    Чем планируем транслировать Модулу в код Z80?

  4. #194
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как мне избавиться от индексного регистра iy и скомпилировать, как у тебя, с регистром hl

    ---------- Post added at 13:55 ---------- Previous post was at 13:54 ----------

    и чтобы бредятина типа .area сама выкидывалась

  5. #195
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,627
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Жосткая оптимизация - 192 байта.

    Код:
    MODULE ASCII; (*$MAIN*)
    IMPORT Console;
    VAR
    	n: SHORTINT;
    BEGIN
    	n := 3*32; REPEAT Console.WriteCh(CHR(3*32-n+32)); DEC(n) UNTIL n = 0;
    END ASCII.
    Можно и ещё меньше конечно.

    ---------- Post added at 13:02 ---------- Previous post was at 12:57 ----------

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Как мне избавиться от индексного регистра iy и скомпилировать, как у тебя, с регистром hl
    Сам не пойму, то с hl компилит, то с iy. Попробуй поиграться с опцией --reserve-regs-iy

    --reserve-regs-iy This option tells the compiler that it is not allowed to use register pair iy.The option can be useful for systems where iy is reserved for the OS.

    However in general, the use of ix may depend on --reserve-regs-iy: sdcc should try to generate good code. And sdcc might decide whether using ix is a good idea depending on whether iy is available: When there are few accesses to the stack, sdcc might decide to not use ix, and instead access the stack using hl and iy only. But if iy is not available, sdcc will be more likely to decide to use ix for accessing the stack. The option for forbidding the use of ix is --fomit-frame-pointer (which in your case might be a usable workaround for the issue).

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    и чтобы бредятина типа .area сама выкидывалась
    Да не надо её выкидывать, она не мешает. Это асм такой. Разве только прикрутить к SDCC другой асм, но смысл?

  6. #196
    Veteran Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,155
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    24 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а .Mod файлы в архиве это не модула?

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

  8. #197
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,627
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, это тоже Оберон. Придумаем как транслировать Модулу - будет поддержана и Модула.

  9. #198
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    286
    Поблагодарили
    214 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    Cool

    Цитата Сообщение от Blade Посмотреть сообщение
    SDCC может и такой код выдать:
    Код:
    ;main.c:15: for(n=32;n<128;n++)
    	ld	h,#0x20
    00106$:
    ;main.c:16: Console_WriteCh(n);
    	push	hl
    	push	hl
    	inc	sp
    	call	_Console_WriteCh
    	inc	sp
    	pop	hl
    ;main.c:15: for(n=32;n<128;n++)
    	inc	h
    	ld	a,h
    	sub	a, #0x80
    	jr	C,00106$
    Круто, чо.
    весь вопрос КАК?

    ---------- Post added at 14:20 ---------- Previous post was at 14:13 ----------

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    У меня получилось так:

    Исходный Оберон:

    Код:
    MODULE ASCII; (*$MAIN*)
    IMPORT Console;
    VAR
    	n: SHORTINT;
    BEGIN
    	FOR n := 32 TO 127 DO Console.WriteCh(CHR(n)) END;
    END ASCII.
    объявление переменной вижу я
    С уважением,
    Jerri / Red Triangle.

  10. #199
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чухня полная. лучше я сам напишу, чем этот код причесывать.

  11. #200
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    286
    Поблагодарили
    214 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    denpopov, его не надо причесывать, его надо использовать.
    тут сам принцип - не писать на асме а программировать на ЯВУ.
    но конечно для начала надо настройки выставить чтобы SDCC создавало что-то приемлемое. раз уж автор за этим не следил.
    С уважением,
    Jerri / Red Triangle.

Страница 20 из 91 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. мощная игрушка
    от ZEman в разделе Игры
    Ответов: 129
    Последнее: 23.03.2024, 17:05
  2. Ответов: 5
    Последнее: 20.06.2011, 03:18
  3. Видеоконтроллер из пяти микросхем
    от zx-kit в разделе Изображение
    Ответов: 20
    Последнее: 31.03.2011, 14:48

Метки этой темы

Ваши права

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