- GCC с поддержкой PDP11
- [+] Старые сообщения (9)
-
? Дмитрий - 24.02.2017 01:34
Все либы нашел.
-
? Дмитрий - 24.02.2017 01:55
Не находит sys\types.h. Папку include взял от готового компилятора. Миллион ошибок из-за проблем в этих файлах. Нужна папка include, которая должна лежать в папке pdp11-aout.
-
? Vslav - 24.02.2017 16:00
Так вообще папки sys нет, оно под bare-metal собиралось, не было целевой операционной системы. Поэтому все ручками.
PDP-11 для GCC4.x уже официально не поддерживается, собиралось на свой страх и риск. Но код генерируется вроде нормально, я кое-какие тесты писал, работает.
-
? Дмитрий - 24.02.2017 16:41
>> PDP-11 для GCC4.x уже официально не поддерживается
Его никуда не выпиливали. В последнем 6.3.0 все еще есть код для pdp-11. Надо только собрать под него компилятор.
¤
>> Поэтому все ручками.
Не, все ручками не годится. return (a+b) я и на чистом асме напишу. Я Си знаю на базовом уровне - код худо-бедно (не слишком сложный) прочитать смогу, а вот писать на этом ужасе - увольте...
-
? Дмитрий - 24.02.2017 16:55
Кстати, при отключении аппаратного fpu код ссылается на реализацию команд. А где сама реализация этих команд?
-
? Vslav - 24.02.2017 17:50
>>все ручками не годится
В смысле ручками дописать функции под ту операционку, под которую планируется. У меня своя, поэтому sys/*.h у меня вообще в моих проектах не используется. Что и под какую ОС собираете?
¤
>>А где сама реализация этих команд?
Должна быть тут - lib\gcc\pdp11-aout\4.6.2\msoft-float
-
? Vslav - 24.02.2017 17:51
>>Его никуда не выпиливали.
Да, но никто процесс сборки не проверяет и никакого тестирования не проводится. Под windows оно и так коряво собирается, crt.a я так и не смог собрать.
-
? Дмитрий - 24.02.2017 18:33
>> смысле ручками дописать функции под ту операционку, под которую планируется.
Я уже попробовал. В принципе годится. Не сахар, но уже что-то. Правда все include приходится выкидывать либо серьезно править. Но это решаемо, ибо мне не офис под pdp собирать.
¤
>> Да, но никто процесс сборки не проверяет и никакого тестирования не проводится.
Даже больше скажу - код никто уже не правит.
¤
>> Должна быть тут - lib\gcc\pdp11-aout\4.6.2\msoft-float
Нашел. А как сделать, чтобы при компиляции эти реализации сразу цеплялись к объектнику? Так сказать получить на выходе "все-в-одном", без зависимостей?
-
? Дмитрий - 25.02.2017 20:27
И еще. Не могу избавиться от "не-БК" инструкций. При использовании сдвига опция -Wa,-mno-extentions не работает - в код все равно суется ash/ashc.
-
? Vslav - 25.02.2017 22:39
Ключ -m10 должен помочь
-
? Vslav - 25.02.2017 22:55
Даже предвижу следующий вопрос :)
Функции ___ashlhi3 у меня нет, но прототип у нее такой:
¤
int __ashrhi3(int a,int b)
{
return a>>b;
}
¤
Можно написать ее на ассемблере и слинковать
-
? Дмитрий - 26.02.2017 00:02
1) Ключ -m10 не работает. Простейший пример:
¤
int shift(int a, int b)
{ return (a >> b); }
¤
int primer()
{ return shift(345,3); }
¤
выдает ошибку:
¤
test2.c: In function 'shift':
test2.c:2:1: error: unrecognizable insn:
(insn 8 7 9 3 (set (reg:HI 26)
(ashift:HI (reg/v:HI 24 [ a ])
(reg:HI 27))) test2.c:2 -1
(expr_list:REG_EQUAL (ashiftrt:HI (reg/v:HI 24 [ a ])
(reg/v:HI 25 [ b ]))
(nil)))
test2.c:2:1: internal compiler error: in extract_insn, at recog.c:2109
¤
2) Запихнуть в обж код эмуляции FPU так и не могу.
-
? Дмитрий - 26.02.2017 00:20
Обжи извлек, __adddf3 нашел. Но! В obj все ссылки на подпрограммы нулевые и фактически ссылаются на начало obj-кода. objdump не может (не умеет) брать имена из соотв. секции и подставлять вместо нуля. Как их искать вручную - я хз. Нужен исходник msoft-float\libgcc.
-
? Vslav - 26.02.2017 00:46
Значит компилятор приехал, у меня тоже на коде со сдвигом вправо дает такую же ошибку.
-
? Дмитрий - 26.02.2017 02:03
А исходник msoft-float\libgcc есть? Ручками вытащить все, что нужно, и собрать в один модуль, а потом его к асму цеплять. ASH/ASHC заменить потом на ROL/ROR.
-
? Дмитрий - 26.02.2017 02:09
И почему-то не работают опции "PDP-11 instruction set extentions" и "PDP-11 CPU model options" из bin\gcc-help.txt. Правда проверял я на сдвиге как раз. Пробовал и инструкции запрещать и модель ЦПУ менял - результата ноль.
-
? Дмитрий - 27.02.2017 18:43
Интересный оптимизатор у этой сборки. Нормально работает только -O1. С другими (-O2..-Os) простейший пример сложения двух float-чисел в асм-выводе (ключ -S вместо -c) теряет одно число! С -O1 оба числа на месте.
¤
Кстати, -m10 работает только с отключенной оптимизацией. -mint32 также работает только с отключенной оптимизацией.
-
? Дмитрий - 07.03.2017 15:19
Порылся в своих архивах - чет не нашел. Есть у кого асм-исходник блока эмуляции EIS/FIS/FPU? В СМК зашит обработчик только первых двух.
-
? Vslav - 07.03.2017 15:38
>> работает только с отключенной оптимизацией
Дык, не тестирует никто давно порт-то, вот косяки и прут. Можно попробовать собрать GCC 3.x какой, вдруг оживет.
Мне Clang LLVM для PDP-11 прислали, пока закрытый и сырой. Если доведем до ума (ну вдруг) и владелец прав даст добро - выложу.
-
? Дмитрий - 07.03.2017 20:24
>> Clang LLVM для PDP-11
Оо, это интересно. Я поглядел в сырцы на предмет написания backend'а для LLVM - там моих познаний в Си категорически недостаточно для написания. Максимум - парсер LLVM-асма для компиляции в код.
-
? Дмитрий - 10.08.2017 17:16
>> Если доведем до ума (ну вдруг) и владелец прав даст добро - выложу.
Как успехи? Есть какие-нить результаты?
- << Форум