User Tag List

Страница 5 из 13 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 125

Тема: LLVM Backend для Z80

  1. #41

    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    mastermind, нет, не в курсе. Если разбирался с этим, то думаю стоить обменяться контактами. Поможешь понять что это и с чем едят

  2. #42

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

    По умолчанию

    Всерьез не разбирался, но знаю что это либа (часть llvm) для эмуляции неподдерживаемых напрямую (на каком-либо процессоре) операций. Насколько я понимаю, она просто генерит ir-код используя доступные на процессоре операции. (т.е. полезно для быстрой реализации всяких умножений/делений, операций с разрядностью больше 8 и т.д.).
    Чтоб найти примеры использования просто поищи RTLIB в коде существующих таргетов.
    (ну контакты тоже сейчас скину в личку на всякий случай, хотя думаю что лучше на форуме все обсуждать, может это будет способствовать всеобщему brainstorming-у )

  3. #43

    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Имеется код сравнения двух чисел:
    Код:
        LD A,arg1
        CP arg2
        JP (CC),label
    CC - флаг условия.
    arg1, arg2 - числа для сравнения вида arg1 [условие] arg2, где условие может быть одним из всевозможных вариантов (>, <, ==, !=, >=, <=).
    Также сравниваемые значения могут быть двух типов: знаковые и беззнаковые.

    Для обоих типов:
    == - Z
    != - NZ
    Для беззнаковых:
    < - C
    >= - NC
    Для знаковых:
    < - M (для знаковых)
    > - P (для знаковых)

    Требуется помощь в составлении полной таблицы условия - флаги.

    Знаю, что для всех условий в Z80 не найдутся флаги, поэтому найти нужно хотя бы половину, а остальные можно будет инвертировать.
    Код:
        LD A,arg1
        CP arg2
        JP (CC),cont
        JP label
    cont:

  4. #44

    Регистрация
    20.02.2008
    Адрес
    Siauliai, Lithuania
    Сообщений
    367
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Альтернативная прошивка для тестера мелкой логики на Мега8515: http://www.8bit.lt/ru/ic-tester

    Этот пользователь поблагодарил Protom за это полезное сообщение:

    Oleg N. Cher(21.01.2024)

  5. #45

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

    По умолчанию

    Цитата Сообщение от mastermind Посмотреть сообщение
    Насколько я понимаю, она просто генерит ir-код используя доступные на процессоре операции. (т.е. полезно для быстрой реализации всяких умножений/делений, операций с разрядностью больше 8 и т.д.).
    Вот это было бы очень здорово. Компилер нужен именно с поддержкой 32-битных типов (хотя бы целочисленных), ибо 8/16 битных С-компилеров для Z80/8080 и так пруд пруди.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  6. #46

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Компилер нужен именно с поддержкой 32-битных типов (хотя бы целочисленных), ибо 8/16 битных С-компилеров для Z80/8080 и так пруд пруди.
    А для чего нужны 32-битные типы на Спектруме? Что за программы будут писаться?

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

  8. #47

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не обязательно на спеке. Например для ОС и ФС.

  9. #48

    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Цитата Сообщение от mastermind Посмотреть сообщение
    Насколько я понимаю, она просто генерит ir-код используя доступные на процессоре операции. (т.е. полезно для быстрой реализации всяких умножений/делений, операций с разрядностью больше 8 и т.д.).
    Вот это было бы очень здорово. Компилер нужен именно с поддержкой 32-битных типов (хотя бы целочисленных), ибо 8/16 битных С-компилеров для Z80/8080 и так пруд пруди.
    Разобрался я с этим RTLIB. Вообщем эта штука немного другое делает. Если в двух словах, то она для неподдерживаемых архитектурой команд вставляет вызовы функций с заданными именами. Т.е. можно будет написать библиотеку где будут эти функции и просто линковать скомпилированную программу с этой библиотекой. Например Z80 никак не поддерживает команду умножения и деления, а в llvm есть такие команды.
    Код:
    define i8 @test(i8 %a, i8 %b)
    {
    	%res = mul i8 %a, %b
    	ret i8 %res
    }
    После компиляции получается вот что:
    Код:
    	call	_mathLib_MULi8
    	ret
    Аргументы передаются в регистрах A, B. Функция возвращает результат в регистре A.

    Однако llvm все же радует кое чем. Например если архитектура имеет только 16 битные регистры, то llvm сам умеет создавать цепочку команд для вычисления 32 битных (и более) чисел с помощью имеющихся регистров.
    Последний раз редактировалось EARL; 02.11.2012 в 18:14.

  10. #49

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

    По умолчанию

    Цитата Сообщение от EARL Посмотреть сообщение
    Однако llvm все же радует кое чем. Например если архитектура имеет только 16 битные регистры, то llvm сам умеет создавать цепочку команд для вычисления 32 битных (и более) чисел с помощью имеющихся регистров.
    Это действительно радует.

    ---------- Post added at 18:29 ---------- Previous post was at 18:27 ----------

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    А для чего нужны 32-битные типы на Спектруме? Что за программы будут писаться?
    Портирование системного ПО с других платформ зачастую упирается в отсутствие поддержки компилятором long (32 бита). Простейший пример - библиотеки ФАТ32. Именно портирование, а не писание с нуля - реальный шанс поиметь на Спеке (или Орионе или еще чем-то) какое-то новое ПО. Просто в силу того, что уже никто не выдаст нужное количество человекочасов, сколько нужно для написания чего-то серьезного с нуля - уже не тот запал.
    Последний раз редактировалось Error404; 02.11.2012 в 18:32.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  11. #50

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Вот это было бы очень здорово. Компилер нужен именно с поддержкой 32-битных типов (хотя бы целочисленных), ибо 8/16 битных С-компилеров для Z80/8080 и так пруд пруди.
    Ну уж нет! стандартный float тоже надо. а libm - портируется...

Страница 5 из 13 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Ваши права

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