User Tag List

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

Тема: A давайте разработаем собственный Z80 на VHDL.

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

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

    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    236
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    20 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я вообще-то совсем другой аспект его архитектуры имел ввиду. (абстрагированность фронтэндов от архитектуры target-а). Впрочем адресация также в общем-то часть этого принципа.
    из этой самой архитектуры следует только то что она не рассматривает проблему ограниченности адресуемого пространства совсем, ну т.е. подразумевается что есть пространство адресов которого ХВАТАЕТ (т.е. подразумевается что оно бесконечное???)
    Я бы не сказал так. Скорее LLVM оставляет вопрос реализации адресного пространства полностью на усмотрение разработчика бэкенда. В частности хотя LLVM IR имеет тип "pointer" (указатель), но не допускает арифметики с указателями (иначе говоря, он ничего не знает и не зависит от линейности или иных свойств адресного пространства), вместо нее имеются инструкции вроде getelementptr (которые позволяют обойтись без этой самой адресной/указательной арифметики). Плюс указатели могут ссылаться на разные адресные пространства.

    Т.е. даже обычную страничную адресацию не особо сложно реализовать (вернее, правильнее сказать, заюзать страничную адресацию имеющуюся в существующем железе), причем потенциально более чем одним способом. (вопрос в выборе/поиске оптимума)

    Вообще LLVM - штука крайне гибкая в плане адаптации к любым архитектурам. Грубо говоря он дает разработчикам бэкендов набор инструментов оптимизированных для типичных современных процессоров (да, желательно с большим кол-вом регистров и большим линейным адресным пространством, тогда удастся имеющиеся уже инструменты заюзать максмимально, меньше доделывать придется), но что и как из этого использовать (или нет) - практически полностью на усмотрение разработчика, если что-то не очень подходит для архитектуры назначения (target), ничто не мешает доработать или сделать какие-то собственные элементы. (к примеру, скажем, register allocator учитывающий альтернативные регистры Z80 или тот же механизм paged-адресации) Вон даже javascript очень успешно используется в качестве "процессора" (проект emscripten), хотя, очевидно, там вообще нет никакого ни "адресного пространства", ни "регистров" в терминологии используемой для микропроцессоров.

    Да, конечно, у некоторых фронтэндов (вроде clang, С/С++ компилятора) есть собственные предположения насчет линейности адресного пространства, тем не менее, такие фронтэнды все равно можно будет использовать без доработок или с минимальными доработками. Скажем, если бэкенд реализует страничную адресацию и таким образом "скрывает" нелинейность адресного пространства от фронтендов, нужно будет просто иметь ввиду что структурами, размер которых сравним с или превышает размер страниц, не стоит злоупотреблять, чтоб не заставлять бэкенд генерировать супер-неэффективный код.
    Последний раз редактировалось mastermind; 20.12.2012 в 09:30.

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

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

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

Похожие темы

  1. Ответов: 135
    Последнее: 12.05.2020, 19:58
  2. Сырок FDC1772 в VHDL
    от fan в разделе Несортированное железо
    Ответов: 10
    Последнее: 24.03.2017, 16:45
  3. YM2149 - а вот кому VHDL код?
    от icebear в разделе Звук
    Ответов: 15
    Последнее: 11.01.2006, 14:46

Ваши права

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