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

User Tag List

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 31 по 40 из 53

Тема: SDCC - Small Device C Compiler

  1. #31
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А ты загляни в .map, там всё побайтно расписано, с какого адреса какая функция. Судя по всему, компилятор прилепил всю арифметику для long. Функция kprint использует ltoa, а последняя - всю остальную арифметику.
    Увы мне!
    Это действительно частично мой код (от всяческих моих самописных printf-ов), а частично математические функции.
    Маленькая программа (во вложении), не использующая никакие модули кроме crt0cpm вышла всего в 300 байт.

    Вообще, конечно, удручает. Два экрана кода на С (моих самописных printf-ов) транслируется в 3 с гаком кб кода. CP/M-овский Hitech C 3.06 образца 1987 года компилировал этот же самый код моих самописных printf-ов куда как компактнее (раза в два примерно).
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

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

  3. #32
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    144
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    CP/M-овский Hitech C 3.06 образца 1987 года компилировал этот же самый код моих самописных printf-ов куда как компактнее (раза в два примерно).
    а у HITECH long какой длины был?
    у sdcc - 32 бита, отсюда и громоздкость
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  4. #33
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тоже 32 бита. один из немногих СРМ-овских кто умел 32 бита лонг
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  5. #34
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Вообще, конечно, удручает. Два экрана кода на С (моих самописных printf-ов) транслируется в 3 с гаком кб кода.
    Ещё раз увы тебе
    Посмотрим внимательнее на твой .map

    Код test1
    начало 017D конец 01AE длина 49 байт

    Код conio
    начало 01FF конец 09DB длина 2012 байт

    Код dos
    начало 09DB конец 0AA9 длина 206 байт

    Из библиотеки Z80.rel
    начало 0AA9 конец 124C длина 1955 байт!

    ---------- Post added at 23:35 ---------- Previous post was at 23:28 ----------

    Последние 2Кб из-за того, что conio ссылается на:
    __moduint_rrx_s
    __divuint_rrx_s
    __modslong_rrx_s
    __divslong_rrx_s

    А они ведут в stubs.rel из z80.lib. А там какая-то фигня, когда подцепляется этот модуль, то за ним тянется вся арифметика. Причём в самом модуле лишь переходы на реальные процедуры, перед которыми иногда присутствуют команды LD A,5 / RST 8. Так что, если написать свою арифметику, то будет компактнее.

  6. #35
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А там какая-то фигня, когда подцепляется этот модуль, то за ним тянется вся арифметика. Причём в самом модуле лишь переходы на реальные процедуры, перед которыми иногда присутствуют команды LD A,5 / RST 8.
    выкинув из printf все связанное с long, получил уменьшение кода с 4к до 2к.

    Цитата Сообщение от b2m Посмотреть сообщение
    Так что, если написать свою арифметику, то будет компактнее.
    Не, нафиг. Тогда уж проще сразу писать на ассемблере с макросами
    Я компилер ищу не для того, чтобы его еще наполовину переписывать, это не интересно.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  7. #36
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так доооолго компилирует. Буквально часами исходный файлик на полста килобайт. Комп селерон2дуо (2 ядра каждое по 2ГГц). Кто знает отчего это, и можно с этим что-нибудь сделать?
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  8. #37
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >селерон<
    Под виндой так сразу сказать сложно, под линуксом я бы попробовал пересобрать sdcc с graphite(и его плюшками), -march=native, -O3 и перекинуть его в рамдиск.
    Последний раз редактировалось NovaStorm; 04.04.2012 в 15:28.

  9. #38
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Так доооолго компилирует. Буквально часами исходный файлик на полста килобайт. Комп селерон2дуо (2 ядра каждое по 2ГГц). Кто знает отчего это, и можно с этим что-нибудь сделать?
    А вот чем оно несколько часов занималось.
    Кроме того что долго, оно на выходе еще дает полный *****кретинизм (см. asm во вложении).
    Для массив static char [] оно сначала делает нужного размера .ds N (кусок пустого места) в сегменте _DATA (т.е. в бинаре), потом в секции _GSINIT копирует туда данные ПОБАЙТНО в конструкции вида:

    ;fsdata.c:11: static char data_cgi_files[] = {
    ld hl,#_data_cgi_files
    ld (hl),#0x2F
    inc hl
    ld (hl),#0x63
    ld hl,#_data_cgi_files + 2
    ld (hl),#0x67
    ld hl,#_data_cgi_files + 3
    ld (hl),#0x69
    ld hl,#_data_cgi_files + 4
    ld (hl),#0x2F
    и так несколько тысяч раз
    Вместо того чтобы единократно СРАЗУ определить заполненный массив через .db

    Вопрос - что за кретины это сочиняли? Я уже смирился со "студенческими" болезнями компилятора (на энтузиазме пишется какими-то непонятными людьми, понятно что не приходится ждать оттуда профессионального компилятора, которые умудрялись работать на Z80 и в 48к ОЗУ в середине прошлого века), но такое явное УГ это уже перебор.
    Последний раз редактировалось Error404; 08.01.2015 в 15:14.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  10. #39
    ZEK
    Гость

    По умолчанию

    2 страницы назад уже обсуждали
    const поставь

  11. #40
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    зашибись. Оттого что у авторов бардак в голове, теперь во всех исходниках определение строк править... Ну, поправлю конечно, куда я денусь то.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ZX COMPILER
    от ALKO в разделе Программирование
    Ответов: 33
    Последнее: 13.01.2010, 02:15
  2. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  3. C compiler
    от vitasam в разделе Программирование
    Ответов: 17
    Последнее: 25.08.2005, 16:42
  4. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

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