mastermind, нет, не в курсе. Если разбирался с этим, то думаю стоить обменяться контактами. Поможешь понять что это и с чем едят
mastermind, нет, не в курсе. Если разбирался с этим, то думаю стоить обменяться контактами. Поможешь понять что это и с чем едят
Всерьез не разбирался, но знаю что это либа (часть llvm) для эмуляции неподдерживаемых напрямую (на каком-либо процессоре) операций. Насколько я понимаю, она просто генерит ir-код используя доступные на процессоре операции. (т.е. полезно для быстрой реализации всяких умножений/делений, операций с разрядностью больше 8 и т.д.).
Чтоб найти примеры использования просто поищи RTLIB в коде существующих таргетов.
(ну контакты тоже сейчас скину в личку на всякий случай, хотя думаю что лучше на форуме все обсуждать, может это будет способствовать всеобщему brainstorming-у )
Имеется код сравнения двух чисел:
CC - флаг условия.Код:LD A,arg1 CP arg2 JP (CC),label
arg1, arg2 - числа для сравнения вида arg1 [условие] arg2, где условие может быть одним из всевозможных вариантов (>, <, ==, !=, >=, <=).
Также сравниваемые значения могут быть двух типов: знаковые и беззнаковые.
Для обоих типов:
== - Z
!= - NZ
Для беззнаковых:
< - C
>= - NC
Для знаковых:
< - M (для знаковых)
> - P (для знаковых)
Требуется помощь в составлении полной таблицы условия - флаги.
Знаю, что для всех условий в Z80 не найдутся флаги, поэтому найти нужно хотя бы половину, а остальные можно будет инвертировать.
Код:LD A,arg1 CP arg2 JP (CC),cont JP label cont:
Альтернативная прошивка для тестера мелкой логики на Мега8515: http://www.8bit.lt/ru/ic-tester
Oleg N. Cher (21.01.2024)
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Не обязательно на спеке. Например для ОС и ФС.
Разобрался я с этим RTLIB. Вообщем эта штука немного другое делает. Если в двух словах, то она для неподдерживаемых архитектурой команд вставляет вызовы функций с заданными именами. Т.е. можно будет написать библиотеку где будут эти функции и просто линковать скомпилированную программу с этой библиотекой. Например Z80 никак не поддерживает команду умножения и деления, а в llvm есть такие команды.
После компиляции получается вот что:Код:define i8 @test(i8 %a, i8 %b) { %res = mul i8 %a, %b ret i8 %res }
Аргументы передаются в регистрах A, B. Функция возвращает результат в регистре A.Код:call _mathLib_MULi8 ret
Однако llvm все же радует кое чем. Например если архитектура имеет только 16 битные регистры, то llvm сам умеет создавать цепочку команд для вычисления 32 битных (и более) чисел с помощью имеющихся регистров.
Последний раз редактировалось EARL; 02.11.2012 в 18:14.
Это действительно радует.
---------- Post added at 18:29 ---------- Previous post was at 18:27 ----------
Портирование системного ПО с других платформ зачастую упирается в отсутствие поддержки компилятором long (32 бита). Простейший пример - библиотеки ФАТ32. Именно портирование, а не писание с нуля - реальный шанс поиметь на Спеке (или Орионе или еще чем-то) какое-то новое ПО. Просто в силу того, что уже никто не выдаст нужное количество человекочасов, сколько нужно для написания чего-то серьезного с нуля - уже не тот запал.
Последний раз редактировалось Error404; 02.11.2012 в 18:32.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)