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

User Tag List

Страница 11 из 11 ПерваяПервая ... 7891011
Показано с 101 по 109 из 109

Тема: Кросскомпилятор Си под 8080

  1. #101
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    С чего это? Пременную в любом ассемблере можно как явно положить в память по абсолютному адресу при помощи EQU, так и отдать на откуп линкеру на этапе сборки. В обоих случаях в исходнике обращение к ней идет по символическому имени. Или общая память это нечто отличающееся от обычной оперативной? Не понимаю.
    Сейчас аргументы и переменные функций располагаются в общей памяти. И это не очень оптимально, так как одновременно memset и memcpy выполняться не могут. Логично разместить их аргументы и переменные в одной области памяти.

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

    memset_dest EQU variables_area + 100
    memset_c EQU variables_area + 102
    memcpy_dest EQU variables_area + 100
    memcpy_src EQU variables_area + 102

    То есть потребуется анализ всех исходников и переформирование OBJ файлов каждый раз. Либо свой линкер.

  2. #102
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    выход компилятора для 8080 (просто текст программы, есть пара комяков. НАпример перепутал mvi m и shld)
    Вложения Вложения
    Последний раз редактировалось vinxru; 24.09.2012 в 19:09.

  3. #103
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Сейчас аргументы и переменные функций располагаются в общей памяти. И это не очень оптимально, так как одновременно memset и memcpy выполняться не могут. Логично разместить их аргументы и переменные в одной области памяти.

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

    memset_dest EQU variables_area + 100
    memset_c EQU variables_area + 102
    memcpy_dest EQU variables_area + 100
    memcpy_src EQU variables_area + 102

    То есть потребуется анализ всех исходников и переформирование OBJ файлов каждый раз. Либо свой линкер.
    Я правильно понимаю - весь этот гемор оттого чтобы не передавать параметры стеком (который автоматически утилизирует память увеличением вершины стека после возврата из функции), но получить похожее удобство пользования?

    Ну хрен с ним, пусть переменные не будут определены одна поверх другой - баловство все это. Не надо ничего экономить в памяти переменных, экономия получится за счет компактного кода.
    Последний раз редактировалось Error404; 24.09.2012 в 18:42.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  4. #104
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Я правильно понимаю - весь этот гемор оттого чтобы не передавать параметры стеком (который автоматически утилизирует память увеличением вершины стека после возврата из функции), но получить похожее удобство пользования?
    Ага

    ---------- Post added at 19:05 ---------- Previous post was at 18:52 ----------

    Я добавил оператор $. Это 8-битное умножение. Работает быстрее.

    ---------- Post added at 19:06 ---------- Previous post was at 19:05 ----------

    Аналогично (uchar)(a*b), только быстрее и короче. Использовать не обязательно.

    ---------- Post added at 19:39 ---------- Previous post was at 18:06 ----------

    Ух ты блин. Эмулятор b2m подхватил названия переменных из LST файла, который генерирует tasm


  5. #105
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,849
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Ух ты блин. Эмулятор b2m подхватил названия переменных из LST файла, который генерирует tasm
    Дык для tasm и делал!

  6. #106
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сделал сумматор тактов всех команд программы. И замерял результат до работы оптимизатора и после. Пока получается оптимизация 90%. (стало/было*100)

    Но в оптимизаторе нет самого главного. Он не умеет работать с ветвлениями и циклами. Сегодня добавлю их.

    ---------- Post added at 16:07 ---------- Previous post was at 14:12 ----------

    Сделал, несколько команд пропало. Оценка 89%.

    Красные - это поправки (удаления)

    Код:
    test:
      push b
      ; 4 c = 100;
      mvi b, 100
      ; 5 x = (uchar*)0xA000;
      lxi h, 40960
      shld test_x
      ; 6 do { *x = 0; ++x; } while(--c);
    l0:
      ; 6 *x = 0; ++x; } while(--c);
      lhld test_x
      mvi m, 0
      ; 6 ++x; } while(--c);
      lhld test_x
      inx h
      shld test_x
      dcr b
      mov a, b
      ora a
      jnz l0
    l1:
      pop b
      ret
    Последний раз редактировалось vinxru; 25.09.2012 в 20:45.

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

  8. #107
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Версии компилятора буду выкладывать на LJ, меня сейчас тут забанят.

  9. #108
    Junior
    Регистрация
    07.10.2012
    Адрес
    г. Лондон, Великобритания
    Сообщений
    16
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    А посоветуйте компилятор ассемблера для 8080, я бы сразу его прикрутил.
    Пока ничего удобнее http://john.ccac.rwth-aachen.de:8000/as/ не встречал. Продвинутая макро-поддержка, работает на Windows, Mac и Linux.

    ---------- Post added at 23:06 ---------- Previous post was at 21:23 ----------

    Цитата Сообщение от vinxru Посмотреть сообщение
    Версии компилятора буду выкладывать на LJ, меня сейчас тут забанят.
    А почему бы не создать проект на github/bitbucket/googlecode/etc?
    Последний раз редактировалось begoon; 11.10.2012 в 00:33.

  10. #109
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vinxru, собрал вчера твой компилятор clang-ом под OS X. Пришлось помучиться из-за винапи и прочих премудростей VC++, которые собственно к компилятору отношения не имеют. У тебя есть интерес развивать его дальше, или делать его более портабельным?

    Вроде работает, хотя с оценкой "пре-пре-пре альфа" я вынужден согласиться
    Больше игр нет

Страница 11 из 11 ПерваяПервая ... 7891011

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

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

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

Похожие темы

  1. Ассемблер 8080
    от Kakos_nonos в разделе Утилиты
    Ответов: 0
    Последнее: 21.09.2011, 23:35
  2. Продам пару платок с процами 8080
    от RedLine в разделе Барахолка (архив)
    Ответов: 15
    Последнее: 23.12.2010, 18:39
  3. схема АОН на 8080/z80
    от sergey2b в разделе Разный софт
    Ответов: 7
    Последнее: 07.02.2010, 22:43
  4. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

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