User Tag List

Показано с 1 по 10 из 53

Тема: SDCC - Small Device C Compiler

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #15

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Тогда мне скорее непонятно откуда этот call взялся.
    Вообще, sdcc не спрашивает про точку входа, игнорирует main, и всегда в начало бинарника кладет первую функцию первого файла. Поэтому я, дабы с ним не бороться, просто первой функцией кладу
    Код:
    void main_jump() __naked 
    {
     jp _main
    }
    Но в случае, когда GSINIT не пустой, это не сработает.
    Совершенно справедливый вопрос, этот call - рукотворный, он из самописного модуля crt0cpm.s (которым я меняю штатный crt0.rel)
    Просто как оказалось, в современном SDCC в области инита за каким-то хреном сначала зачем-то всегда идет поле в 5 кодов 0FFh, а уже затем код инициализации. Когда я это поле в 5 кодов 0FFh стал пропускать, все стало инициализироваться как надо и работает как надо, т.е. можно считать, что катомизация для CP/M есть.

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Может где-нибудь явно ORG указано? Тогда промежуток между участками кода нулями забивается.
    Еще если используются инициализированные массивы, то код тоже разрастается до гигантских размеров - но это как раз за счет GSINIT.
    Массивы пока не использую (пример пока что простейший - с одним printf, тоже самописным - небольшим). ORG имеется - в crt0cpm.s (в ассеблерном модуле) перво-наперво делается "org 0x100" - это нормально, все CP/M-овские программы имеют стартовый адрес 100h. Но даже если и из-за него, 100h это 256байт, а не 4кб.

    Откуда же эти 4к оверхеда? Весь мой код (как ассемблерный, так и С-шныий) я в бинарнике вижу (и в отладчике прошагал), он весь в начале файла - 3 сотни байт. За ним идет 4кб какого-то мусора и уже затем в конце файла код инициализации переменных (в моем примере это всего десяток байт). Общий размер файла бинарника 4,3кб. Отчего такое может быть?
    Последний раз редактировалось Error404; 28.03.2012 в 19:32.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

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

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

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

Похожие темы

  1. ZX COMPILER
    от ALKO в разделе Программирование
    Ответов: 33
    Последнее: 13.01.2010, 02:15
  2. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  3. C compiler
    от vitasam в разделе Программирование
    Ответов: 17
    Последнее: 25.08.2005, 16:42
  4. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

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