GCC для PDP-10
2025-03-19 22:10Собрал компилятор GCC для PDP-10 по инструкции: http://pdp10.nocrew.org/netbsd/build-gcc.txt
Исходник скачивается по ссылке: http://pdp10.nocrew.org/gcc/download/gcc-pdp10-20030606.tar.bz2
Пришлось маленько подрихтовать, чтобы собиралось на современном линуксе. Пропущен третий параметр (mode) в вызове open(). Есть пример автономной программы на Си: http://pdp10.nocrew.org/netbsd/boot.c
При её компиляции получается ассемблерный код:Не так интересна сама PDP-10, как факт наличия компилятора Си для словной архитектуры (без байтовой адресации) с размером слова 36 бит. Значит и для БЭСМ-6 можно переделать. Чем слово 48 бит хуже?
Исходник скачивается по ссылке: http://pdp10.nocrew.org/gcc/download/gcc-pdp10-20030606.tar.bz2
Пришлось маленько подрихтовать, чтобы собиралось на современном линуксе. Пропущен третий параметр (mode) в вызове open(). Есть пример автономной программы на Си: http://pdp10.nocrew.org/netbsd/boot.c
При её компиляции получается ассемблерный код:
TITLE boot
.DIRECTIVE KL10
DEFINE OWGBP (PS,Y)<<ps>B5+<y>*%ONE> ; one-word global byte pointer
DEFINE GIW (Y)<<y>*%ONE> ; global indirect word
DEFINE %EXIND (I,X,Y)<<i>B1+<x>B5+<<y>*%ONE>> ; extended format indirect word
.PSECT .text/ronly
SEARCH MONSYM
.ENDPS
.PSECT .text/ronly
dte.talk:
xmovei 17,2(17)
movem 16,-1(17)
xmovei 16,-1(17)
movem 1,1(16)
move 6,1(16)
movem 6,@[GIW 451]
aos @[GIW 452]
CONO DTE,20000
%2:!
move 6,@[GIW 444]
jumpe 6,%2
setzm @[GIW 444]
move 6,@[GIW 450]
move 1,6
move 16,-1(17)
xmovei 17,-2(17)
popj 17,
dte.init:
xmovei 17,1(17)
movem 16,(17)
xmovei 16,(17)
setzm @[GIW 444]
setzm @[GIW 445]
setzm @[GIW 446]
move 16,(17)
xmovei 17,-1(17)
popj 17,
getchar:
xmovei 17,2(17)
movem 16,-1(17)
xmovei 16,-1(17)
jfcl ; nop
%7:!
movei 1,3400
pushj 17,dte.talk
move 6,1
andi 6,177
movem 6,1(16)
move 6,1(16)
jumpe 6,%7
move 6,1(16)
move 1,6
move 16,-1(17)
xmovei 17,-2(17)
popj 17,
putchar:
xmovei 17,2(17)
movem 16,-1(17)
xmovei 16,-1(17)
movem 1,1(16)
move 6,1(16)
andi 6,177
move 1,6
pushj 17,dte.talk
move 16,-1(17)
xmovei 17,-2(17)
popj 17,
puts:
xmovei 17,3(17)
movem 16,-2(17)
xmovei 16,-2(17)
movem 1,1(16)
ldb 6,1(16)
movem 6,2(16)
move 6,2(16)
jumpn 6,%13
jrst %12
%13:!
jfcl ; nop
%14:!
move 1,2(16)
pushj 17,putchar
ibp 1(16)
ldb 6,1(16)
movem 6,2(16)
move 6,2(16)
jumpn 6,%14
%12:!
move 16,-2(17)
xmovei 17,-3(17)
popj 17,
.ENDPS
.PSECT .rodata/ronly
%LC0:!
BYTE (9)103,145,143,151
BYTE (9)040,156,047,145
BYTE (9)163,164,040,160
BYTE (9)141,163,040,165
BYTE (9)156,040,160,157
BYTE (9)162,164,040,144
BYTE (9)145,040,125,156
BYTE (9)151,170,056,015
BYTE (9)012,000
%LC1:!
BYTE (9)015,012,131,157
BYTE (9)165,040,164,171
BYTE (9)160,145,144,072
BYTE (9)040,000
%LC2:!
BYTE (9)015,012,000
.ENDPS
.PSECT .text/ronly
ENTRY main
main:
xmovei 17,4(17)
movem 16,-3(17)
xmovei 16,-3(17)
movem 1,1(16)
movem 2,2(16)
pushj 17,..main
pushj 17,dte.init
skipa 1,.+1
OWGBP 70,%LC0
pushj 17,puts
pushj 17,getchar
move 6,1
movem 6,3(16)
skipa 1,.+1
OWGBP 70,%LC1
pushj 17,puts
move 1,3(16)
pushj 17,putchar
skipa 1,.+1
OWGBP 70,%LC2
pushj 17,puts
movei 6,0
move 1,6
move 16,-3(17)
xmovei 17,-4(17)
popj 17,
.ENDPS
EXTERN %ONE
EXTERN ..main
; expanded load unsigned 16 left: 0
; output load unsigned 16 left: 0
; expanded load unsigned 16 right: 0
; output load unsigned 16 right: 0
; expanded load unsigned 32: 0
; output load unsigned 32: 0
; output load signed 9: 0
; expanded load signed 16 left: 0
; output load signed 16 left: 0
; expanded load signed 16 right: 0
; output load signed 16 right: 0
; expanded load signed 32: 0
; output load signed 32: 0
; expanded load signed: 0
; output load signed: 0
; expanded ffs: 0
END

no subject
Date: 2025-03-19 21:54 (UTC)no subject
Date: 2025-03-19 22:16 (UTC)no subject
Date: 2025-03-19 22:36 (UTC)no subject
Date: 2025-03-19 23:04 (UTC)no subject
Date: 2025-03-20 22:30 (UTC)no subject
Date: 2025-03-21 00:28 (UTC)PDP-10, кстати, есть в относительно современной версии в виде маленькой коробочки (1-u или 2-u rackmount). В когдатошнем музее Аллена, который нынче продан в Атланту, были и работающие старые PDP-10 и вот такие коробочки.
no subject
Date: 2025-03-20 06:30 (UTC)no subject
Date: 2025-03-20 08:15 (UTC)no subject
Date: 2025-03-20 23:58 (UTC)no subject
Date: 2025-03-21 10:27 (UTC)