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

User Tag List

Страница 6 из 10 ПерваяПервая ... 2345678910 ПоследняяПоследняя
Показано с 51 по 60 из 100

Тема: Кодогенерация SDCC: пожелания об улучшении компилятора

  1. #51

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    я бы не сделал лучше, но тоже мог бы на это накатить, если бы меня это сильно заботило, но факта с "косяком" это не отменяет. а уж наезд или просто сгоряча высказал что думал... каждый сам решит.
    Вообще я не про тебя говорил, но тоже выскажу:

    Если тебе что-то не нравится в продукте- сообщи автору, это не так сложно. Критика на левом форуме, не выходящая за пределы "негодования" - признак того, что хочется лишь почесать языком, а не получить рабочий продукт.

  2. #52

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Мне стыдно будет показать Филиппу эту ветку, насколько неблагодарно некоторые... гм... оценивают его труд. Обвиняя во всех смертных грехах. А Вы не думали о том, что может он просто ещё не добрался до этого направления работы?

    Так что поменьше эмоций. Вам никто ничего не должен хорошо и безплатно делать. Мы здесь все никому ничего не должны. А Вы не принимаете промежуточные черновые варианты поведения кодогенератора за эталон?
    Я критикую не Филипа - респект ему и уважуха, сам проект мне нравится. Иначе бы я просто не писал в эту ветку.

    Я критикую реализацию простой в общемто вещи - генерации кода инициализации переменных типа static. А эмоции... Ну сам понимаешь. Когда что-то давно хочешь, а этого нет - они возникают Както раз я пытался разобраться с кодогенерацией SDCC, чтобы поправить эту фичу, но не разобрался.

    Во всех известных мне компиляторах C - в секцию .data помещаются уже инициализированные данные. И нигде код не генерится. Исключение - микроконтроллеры - но там слепок секции .data хранится в ПЗУ и при инициализации полностью копируется на своё место в ОЗУ.

    Так что если кого задела моя ругань - извиняюсь.

    Но если кто подскажет - где и как в исходниках SDCC генерится инициализация переменных - то скажу спасибо.

  3. #53

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Если тебе что-то не нравится в продукте- сообщи автору, это не так сложно.
    с другой стороны, если я представляю себя на месте автора... мне бы не хотелось, чтобы спрашивали одно и то же куча людей. плюс, надо посмотреть всякие трекеры и прочие места, не сообщалось ли там уже такое. данная вещь (про инициализацию) - очевидна, я не поверю, что никто про это раньше не говорил и что автор не в курсе. я уверен, что это есть в планах давным давно. могу ошибаться, но скорее всего - нет.

    и мотивацию тоже надо учитывать ее недостаточно для написания нормального репорта, а просто мнение выразить - пожалуйста.

  4. #54

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,083
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    494
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    с другой стороны, если я представляю себя на месте автора... мне бы не хотелось, чтобы спрашивали одно и то же куча людей. плюс, надо посмотреть всякие трекеры и прочие места, не сообщалось ли там уже такое. данная вещь (про инициализацию) - очевидна, я не поверю, что никто про это раньше не говорил и что автор не в курсе. я уверен, что это есть в планах давным давно. могу ошибаться, но скорее всего - нет.
    Там на трекере всего порядка десяти открытых тикетов по z80. Филлип все читает, и довольно оперативно все фиксит. Про инициализацию там нет, правда, это скорее всего не специфичная для z80 вещь, для других архитектур sdcc наверняка генерит точно так же.

  5. #55

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    для других архитектур sdcc наверняка генерит точно так же
    и всем пофиг? или просто Филлип не может за это отвечать?

  6. #56

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,083
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    494
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что-то вообще странное с инициализацией у нас
    Код:
    char* hello1 = "Hello";
    char hello2[] = { 'H', 'e', 'l', 'l', 'o', 0 };
    
    void main() { }
    По идее, первые две строки абсолютно равнозначны. Однако
    Код:
    	.area _DATA
    _hello1::
    	.ds 2
    _hello2::
    	.ds 6
    
    	.area _GSINIT
    ;1.c:1: char* hello1 = "Hello";
    	ld	hl,#__str_0
    	ld	(_hello1),hl
    ;1.c:2: char hello2[] = { 'H', 'e', 'l', 'l', 'o', 0 };
    	ld	hl,#_hello2
    	ld	(hl),#0x48
    	inc	hl
    	ld	(hl),#0x65
    	ld	hl,#_hello2 + 2
    	ld	(hl),#0x6C
    	ld	hl,#_hello2 + 3
    	ld	(hl),#0x6C
    	ld	hl,#_hello2 + 4
    	ld	(hl),#0x6F
    	ld	hl,#_hello2 + 5
    	ld	(hl),#0x00
    
    	.area _CODE
    __str_0:
    	.ascii "Hello"
    Цитата Сообщение от Eltaron Посмотреть сообщение
    для других архитектур sdcc наверняка генерит точно так же.
    А ведь нет! Попробовал для ds390 (от балды), там все хорошо. Надо заводить тикет.

    ---------- Post added at 00:24 ---------- Previous post was at 00:03 ----------

    Завел

  7. #57

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,930
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    По идее, первые две строки абсолютно равнозначны.
    Нифига. В первом случае присваивается указатель, во втором - каждый элемент массива.

  8. #58

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,083
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    494
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Нифига. В первом случае присваивается указатель, во втором - каждый элемент массива.
    Эмм... Ну да, приведенный код именно это и показывает.
    Но вот почему? Что мешает массив тоже разместить в _CODE? То, что _CODE в ROM? Но тогда почему стринга размещена там, а не инициализируется в рантайме тем же способом?

  9. #59

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Но тогда почему стринга размещена там, а не инициализируется в рантайме тем же способом?
    потому что "Hello" - в данном случае - константа. А char* hello1 - переменная-указатаель.

    Если ты напишешь

    char a[10]="hello", то сгенерится

    Код:
         .area _DATA                                                                                                                                                                           
    _a::                                                                                                                                                                                          
         .ds 10                                                                                                                                                                                
    ;--------------------------------------------------------                                                                                                                                     
    ; overlayable items in  ram 
    ;--------------------------------------------------------
            .area _OVERLAY
    ;--------------------------------------------------------
    ; external initialized ram data
    ;--------------------------------------------------------
    ;--------------------------------------------------------
    ; global & static initialisations
    ;--------------------------------------------------------
            .area _HOME
            .area _GSINIT
            .area _GSFINAL
            .area _GSINIT
    ;cls.c:4: char a[10]="hello";
            ld      hl,#_a
            ld      (hl),#0x68
            ld      a,#0x65
            ld      (#_a + 1),a
            ld      a,#0x6C
            ld      (#_a + 2),a
            ld      (#_a + 3),a
            ld      a,#0x6F
            ld      (#_a + 4),a
            ld      bc,#_a + 5
            ld      a,#0x00
            ld      (bc),a

    Я говорю - кодогенерация для инита переменных Z80 - очень сырая. Кто хорошо знает английский - напишите аффтору, еслти нет такой темы.

    По-хорошему надо просто генерить

    Код:
         .area _DATA
    _a::
         .ascii "hello",0,0,0,0,0
    И никакого кода

    Если написать
    const char a[10]="hello", то сгенерится всё верно, только в сегмент _CODE
    Последний раз редактировалось SfS; 19.09.2012 в 05:03.

  10. #60

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,083
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    494
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Я говорю - кодогенерация для инита переменных Z80 - очень сырая. Кто хорошо знает английский - напишите аффтору, еслти нет такой темы.
    Я писал, закрыли, потому что дубликат древнего http://sourceforge.net/tracker/?func...99&atid=350599

Страница 6 из 10 ПерваяПервая ... 2345678910 ПоследняяПоследняя

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

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

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

Похожие темы

  1. SDCC - Small Device C Compiler
    от Valen в разделе Программирование
    Ответов: 52
    Последнее: 06.04.2012, 20:44
  2. Конструктор для компилятора с Си
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:14
  3. Пожелания ваще
    от svofski в разделе Эмуляторы отечественных компьютеров
    Ответов: 7
    Последнее: 01.09.2009, 18:27
  4. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  5. Пожелания по сервисам форума
    от andrews в разделе Форум
    Ответов: 10
    Последнее: 14.08.2006, 13:47

Ваши права

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