User Tag List

Страница 2 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 11 по 20 из 53

Тема: к вопросу о разумности использования компиляторов C на спеке

  1. #11

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я вышеквоченное не писал че за глюки?
    С уважением,
    Jerri / Red Triangle.

  2. #12

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,086
    Спасибо Благодарностей отдано 
    102
    Спасибо Благодарностей получено 
    151
    Поблагодарили
    99 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri
    я вышеквоченное не писал че за глюки?
    Эот слова Raider'а
    квотильщик иногда глюкавит. вообще глюкавый форум %)

  3. #13

    Регистрация
    16.01.2005
    Адрес
    Пермь
    Сообщений
    514
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Red face Oops =)

    Цитата Сообщение от jerri
    я вышеквоченное не писал че за глюки?
    Согласен - мой косяк Вот что бывает когда почти всю мессагу стерёшь вместе с тегами.. вот потом и вспоминаешь, чью же мессагу ты квотишь Мне в данном случает почему-то твой ник запомнился, а не ник Raider'а..

    Извиняюсь перед обоими..

  4. #14

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

    По умолчанию

    По поводу SDCC - там вроде отдельной программой оптимизатор идет, который можно самому настроить.

  5. #15

    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron
    я и не смотрел на код до и после моего цикла
    а внутри него никаких последствий от main'а быть уже не должно
    Не совсем так. Как повезет. Могут быть side effects.

    Оптимизирующий компилятор (мы же проверяем оптимизацию) занимается распределением процессорных ресурсов, таких как регистры процессора, ячейки во фрейме стека, формы команд, предпочтение коротких форм адресации, итд итп. (ну это как бы по-идее, на самом деле не стоит ожидать всего такого от примитивных компиляторов типа z88, zcc, smallc и им подобных).

    Простенький компилятор обязан следовать всему что ты напишешь. И сигнатуре функции в том числе.

    И между

    void foo() {}

    и

    void foo(int variable) {}

    может быть разница.

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

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

    Для z80 компиляторов можно попробовать избегать использования фреймов стека и локальных переменных, обращаясь к глобальным переменным модуля (их можно объявить как static и они будут видны только этому модулю). Это может построить более эффективный, быстрый код, так как обращение к глобальной переменной это будет прямой

    LD A,(...)
    или LD HL,(...)

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


    ну, это понятно, не первый раз замужем :-)
    просто плох тот компилятор, который при отсутствии argv и argc будет городить код для их обработки, а компайлер, не могущий посчитать константу вообще можно сразу на свалку
    выше я сказал, что ждать волшебства от простеньких компиляторо не нужно. Они вполне могут иметь side-effects.

    это да, конечно же надо цикл обратно к нулю крутить, но я же не задавался мыслью написать оптимально, чтоб компилер выдал красотищу, я писал примитив и смотрел, что скажут разные компилеры
    Но для меня полезнее знать следущее. Когда я пишу УЖЕ эффективный код, насколько компилятор помогает мне в этом, насколько эффективный он строит код согласно моим замыслам.
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  6. #16

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

    По умолчанию

    Цитата Сообщение от Raider
    Еще есть некий Avocet compiler - доступен в edonkey network (правда лучше пользовать emule клиента).
    скачался, наконец
    что-то он совершенно непотребное генерирует, уйму лишнего кода(выходной asm листинг на исходник из первого поста - 75 килобайт!), вовсю работает с двухбайтными операциями и не оптимизирует вообще ничего
    причем, в составе есть некий Pre-optimizer, но ни описания его работы, ни списка настроек нигде нет
    фтопку, в общем, не впечатлило меня :-))
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

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

  8. #17

    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Wink

    А никто ведь не запрещает самому взять и написать компилятор С (я про плюсы ничего не грю ))

    Теоретически это несложно - есть СИнтаксис, есть умелые руки
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  9. #18

    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я писал (не 100% СИ конечно), правда под вакуумный процессор в сферическом прострнстве (читать виртуальный). юзаю как скриптовый язык для писишных и амижных проектов.

    если будет время, то заюмусь на досуге портом на спек.
    правда он АНТИоптимизирующий ^_~

    надо кому? ибо я быстрее на спеке на асме напишу.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  10. #19

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

    По умолчанию

    Надо. Компилятор Си нужен для Спектрума. Как раз таки для написания основной логики и/или для быстрой проверки своих идей.

  11. #20

    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на самом деле кроме как быстро протестить идею, больше ничего и нельзя будет сделать ^_~ ибо будут тормоза.

    я собираюсь делать именно нативный (т.е. хост-машина == спектрум) компилер.
    ибо те кто юзают пэцэ могут заюзать разные другие компилеры (точно не помню, но два есть совсем хороших. они правда не бесплатные, но всё давно сломано)
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

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

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

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

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

Ваши права

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