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

User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 43

Тема: sdcc. с чего начать.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию sdcc. с чего начать.

    Помогите разобраться. Как создать хотя б хелло ворлд этой штукой.

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

  3. #2
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,692
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    30 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    Red face

    Цитата Сообщение от ALKO Посмотреть сообщение
    Помогите разобраться. Как создать хотя б хелло ворлд этой штукой.
    Код:
    #include <stdio.h>
    
    main() {
      printf("Hello world");
      while(1) {};
    }
    Погуглить?
    (๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ

  4. #3
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    #include <stdio.h>

    main() {
    printf("Hello world");
    while(1) {};
    }
    хех... спасибо,не знал.

    Я про то, как скомпилировать под Z80.
    Как записать допустим какое-либо значение в какую-нибудь область памяти. И тд.

    этот самый printf - работает как ассемблерный call(процедура печати символа в ПЗУ) ?

    ---------- Post added at 23:58 ---------- Previous post was at 23:57 ----------

    там куча бинарников в папке, а что с ними делать...хз... как настроить компоновщик...

  5. #4
    Member
    Регистрация
    08.01.2012
    Адрес
    г.Винница, Украина
    Сообщений
    65
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как записать допустим какое-либо значение в какую-нибудь область памяти
    Обычно под С это прямо не требуется, там идёт работа с переменными и указателями.
    Но если очень надо:
    *(char*)0xAAAA =0x55; // Записываем 55h по адресу ААААh

    насчёт того как скомпилить - не скажу, кури документацию.

  6. #5
    Master
    Регистрация
    27.01.2005
    Сообщений
    905
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    142 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от predatoralpha Посмотреть сообщение
    Обычно под С это прямо не требуется, там идёт работа с переменными и указателями.
    Но если очень надо:
    *(char*)0xAAAA =0x55; // Записываем 55h по адресу ААААh

    насчёт того как скомпилить - не скажу, кури документацию.
    чёйто не требуется? Под контроллеры пишешь - постоянно так делаешь. Особливо под те, что порты и память не различают - ARM. Да и для AVR тоже можно.
    Только там обычно делают грамотно.

    Определяют макрос типа:

    #define MEMORY_REGISTER (*(unsigned char*)0xABCD)

    А потом можно записать в эту ячейку:

    MEMORY_REGISTER = 5;

    Или считать значение ячейки:

    unsigned char d = MEMORY_REGISTER;

    Например (для спека) очистка экрана:

    Код:
    #define SCREEN     ((unsigned char*)0x4000)
    #define SCREENL    6912
    
    void cls(){
          unsigned char* begin_scr = SCREEN;
          unsigned int i;
          for(i=0; i<SCREENL; i++){
                *(begin_scr++) = 0;
          }
    }
    Это учёбный пример, быстрее и короче очистить экран так:
    Код:
    #include <string.h>
    memset((void*)0x4000, 0, 6192);
    



    Цитата Сообщение от ALKO Посмотреть сообщение
    этот самый printf - работает как ассемблерный call(процедура печати символа в ПЗУ) ?[COLOR="Silver"]
    Не обязательно. printf выводит символы при помощи функции putchar. Напиши свой putchar и будет вывод куда угодно и как угодно

  7. #6
    Member
    Регистрация
    08.01.2012
    Адрес
    г.Винница, Украина
    Сообщений
    65
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    чёйто не требуется? Под контроллеры пишешь - постоянно так делаешь. Особливо под те, что порты и память не различают - ARM. Да и для AVR тоже можно.
    Только там обычно делают грамотно.
    Под контроллеры - да. Да и то, правильней расписать порты в структуру, а потом эту структуру опциями линкера разместить в нужных адресах памяти.
    Но это частности.

  8. #7
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Не обязательно. printf выводит символы при помощи функции putchar. Напиши свой putchar и будет вывод куда угодно и как угодно
    Я б с радостью бы написАл. Но я не знаю как компилировать этой штукой.
    И не знаю компилирует ли она в асм или непосредственно в машинный код.
    Вот и решил спросить тех, кто знаком с данным компилятором.

    ---------- Post added at 07:22 ---------- Previous post was at 07:21 ----------

    Цитата Сообщение от SfS Посмотреть сообщение
    Например (для спека) очистка экрана:

    Код:
    #define SCREEN ((unsigned char*)0x4000)
    #define SCREENL 6912

    void cls(){
    unsigned char* begin_scr = SCREEN;
    unsigned int i;
    for(i=0; i<SCREENL; i++){
    *(begin_scr++) = 0;
    }
    }
    Именно про такой "хыллоу ворлд" я спрашивал.

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

    По умолчанию

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

    printf
    Не сработает, у sdcc нет либы для поддержки спектрума.

    Я в какой-то теме писал когда-то простой хелло ворлд, счас поищу.

    Вот - http://zx.pk.ru/showpost.php?p=471807&postcount=7
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  10. #9
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,260
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ALKO, покопайся в исходниках EvoSDK. там на этом SDCC игры можно писать и часть необходимых функций для работы на спеке реализована (правда с упором на 16С и прочие фенечки Эвы и АТМ).

  11. #10
    dig out your soul Аватар для scl^mc
    Регистрация
    26.01.2005
    Адрес
    Russia, Ulianovsk
    Сообщений
    5,425
    Записей в дневнике
    6
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Дмитрий Посмотреть сообщение
    ALKO, покопайся в исходниках EvoSDK. там на этом SDCC игры можно писать и часть необходимых функций для работы на спеке реализована (правда с упором на 16С и прочие фенечки Эвы и АТМ).
    есть исходники как минимум двух игр: xonix (идет в комплекте) и innsmouth
    'SONGS FROM CRUEL WORLD' IS REMASTERED!
    unmilky sky and other albums is here
    speccy merchandise

    we can dance beneath the fireflies on an empty road
    there is the light that never goes out... (the smiths)
    если кто-то что-то как-то, то вот моя аська - 371432992

Страница 1 из 5 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. БК-0011: С чего начать, или вопросы нуба
    от BYTEMAN в разделе БК-0010/0011
    Ответов: 82
    Последнее: 13.06.2021, 22:20
  2. Голая Амига с чего начать
    от alex51 в разделе Amiga
    Ответов: 335
    Последнее: 22.02.2016, 00:26
  3. C чего начать геймдэв для горбатыша?
    от ALKO в разделе Для начинающих
    Ответов: 69
    Последнее: 24.01.2012, 15:49
  4. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  5. Подскажите с чего начать знакомство со спекки...
    от aleksej в разделе Несортированное железо
    Ответов: 33
    Последнее: 28.12.2005, 23:00

Ваши права

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