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,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  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,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    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 ----------

    Завел
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  7. #57

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

    По умолчанию

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

  8. #58

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

    По умолчанию

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

  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,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 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

Ваши права

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