С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В настройках - компиляторы, там есть кнопка автодетект, сам путя найдет. Еще лучше прописать путь к SDCC bin в PATH, для постбилдинг удобно, что бы из Code::Blocks можно было сразу образы собирать и тд.
Пример проектов Сode::Blocks на C SDCC для Z80 можно посмотреть в сырках Speccy 2007 и если не ошибаюсь в Speccy2010. Там настройки можно посмотреть, как бинарник сразу делают итд.
Code::Blocks сам генерит make файлы, и пересобирает только изменившиеся файлы, удобно при тормозах SDCC 3.2
Последний раз редактировалось ZEK; 15.09.2012 в 13:51.
Кроме того, существует проект создания интегрированной среды SDCC+ProgrammersNotepad. Это единственный в мире проект для SDCC, в котором поддерживается отладчик прямо из GUI (можно на экране прошагать программу, причем с вотчами). Во всех остальных проектах интеграции реализован только вызов компилятора из редактора. Правда пока что отладчик только для режима Ориона (т.к. отладчик шагает "в реальной железке") и сама среда несколько недопилена (нету нормального make - из ГУЯ пересобирается только файл на который укажешь и то что в него явно включается по include, не поддерживается сборка библиотек и линковка с библиотеками). Но если вы убедите b2m что это вам надо, то он врядли откажет и допилит таки до варианта когда в этой среде станет можно собирать серьезные проекты (для helloword она прекрасно подходит уже сейчас) и сделает отладку "внутри Спека".
Я там педалировал тему с SDCC и Орионом, но после того как убедился что SDCC по-прежнему глючня-глючнёй, бросил. Попробуйте теперь вы.
Последний раз редактировалось Error404; 15.09.2012 в 14:08.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
SDCC всегда прикручивает во время линковки стандартный crt0.o файл. Это инициализатор программы. И он ВСЕГДА должен лежать с адреса 0x0000.
Опция --code-loc перемещает весь код КРОМЕ того, что содержится в crt0.o
По-хорошему - чтобы вся программа переместилась в нужные адреса необходимо написать свой crt0.o и прицепить его во время линковки.
Так что просто скомпилировать не получится.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
В общем инструкция. Имеется файл. на С (например cls.c)
Имеется файл crt0.s
В файле crt0.s после ORG указываем адрес начала программы. (START)
При линковке - указываем опции --code-loc START+6 --data-loc 0.
Для нашего примера (пусть стартовый адрес - 0x8000, указываем его после ORG в файле crt0.s):
# as-z80 -o crt0.o crt0.s # создаём объектник crt0.o
# sdcc -mz80 --code-loc 0x8006 --data-loc 0 -c cls.c # создаём объектник cls.o
# sdcc -mz80 --code-loc 0x8006 --data-loc 0 --no-std-crt0 cls.o crt0.o -o cls.ihx # линкуем объектники и получаем hex
# hex2bin cls.ihx # получаем бинарник cls.bin
Далее этот бинарник надо загрузить по адресу 0x8000 в спектрум и перейти по этому адресу.
Во вложении - исходники и спиок команд для борки примера в README
читай внимательнее - я написал, что "чтобы вся программа переместилась в нужные адреса необходимо написать свой crt0.o и прицепить его во время линковки".
Эта опция откусывает crt0, но точку входа то всё равно надо задавать - так что отвертется от написания нескольких байт на асме - не удастся)
См. мой пример. Разумеется что всё это на раз автоматизируется.
---------- Post added at 18:45 ---------- Previous post was at 18:25 ----------
Да. Мой crt0 много чего не делает. Например не обнуляет секцию неинициализированных данных, не устанавливает стек и т.п. Так что дописывайте по вкусу)
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
правда? ты даёшь гарантию, что процедуры будут размещены в памяти именно в том порядке, как ты их описываешь? стандарт С такого не описывает.
То что такой вариант работает сейчас - я в курсе.
Но самое правильное - свой crt0.o с секцией ABS, которая гарантированно будет расположена там где сказано.
---------- Post added at 23:08 ---------- Previous post was at 22:24 ----------
Кстати, если по-нормальному использовать C - то надо как минимум make и желательно - Unix ну или на худой конец cygwin с bash и утилитами....
Иначе - гемор с автоматизацией полный.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)