アフィリエイト広告を利用しています

2023年01月06日

PDP-11: プログラミングのための準備 (1) ── ドキュメントとチュートリアルとツール

PDP-11 アセンブリ言語でプログラミングの勉強をすることにした.


ビギナー向けチュートリアルが ChibiAkumas 氏によって YouTube 上で公開されている.
Learn PDP-11 Assembly Coding Lesson 1 - For absolute beginners!.


また, 同氏によるサイト Learn Assembly Programing with ChibiAkumas でチュートリアルの内容が解説されている.
ドキュメントも置いてある.


PDP-11 のアセンブリ言語でプログラムを作成したとして, その実行は SimH で行う.
SimH は, PDP-11 のみならず, Altair, HP3000 などいくつもの旧いコンピューターシステムに対するエミュレーターである.
OpenBSD パッケージとして用意されているので, それをインストールした.


# pkg_add simh


PDP-11 のプログラムを SimH で実行させる方法はサイト
The Ancient Bits adventure が参考になる.
このサイトによれば以下のツールが必要である.
・ クロスアセンブラ
・ bin2load

クロスアセンブラ


GNU BinutilsGCC をダウンロードし, configure オプションに --target=pdp11-aout を指定して各々のコンパイルを行う.


$ mkdir -p ~/src/obj/obj-binutils
$ cd ~/src/obj/obj-binutils
$ ~/src/binutils-2.39/configure --target=pdp11-aout --prefix=$HOME/opt
$ gmake
$ mkdir -p ~/src/obj/obj-pdp11
$ cd ~/src/obj/obj-pdp11
$ ~/src/gcc-11.2.0/configure \
'CFLAGS=-I/usr/include -I/usr/local/include' \
'LDFLAGS=-L/usr/lib -L/usr/local/lib' \
--target=pdp11-aout \
--with-gmp=/usr/local \
--with-mpfr=/usr/local \
--with-mpc=/usr/local \
--prefix=/home/pine/opt/pdp11-aout
$ gmake

残念ながら, クロスコンパイラのコンパイルには失敗したがクロスアセンブラは作成できた.
これらによって作成されたプログラムは \$HOME/opt 以下にインストールした.

$ ls ~/opt/bin/pdp11-aout-* ~/opt/pdp11-aout/bin ~/opt/pdp11-aout/lib
/home/pine/opt/bin/pdp11-aout-addr2line /home/pine/opt/bin/pdp11-aout-ld /home/pine/opt/bin/pdp11-aout-readelf
/home/pine/opt/bin/pdp11-aout-ar /home/pine/opt/bin/pdp11-aout-ld.bfd /home/pine/opt/bin/pdp11-aout-size
/home/pine/opt/bin/pdp11-aout-as /home/pine/opt/bin/pdp11-aout-nm /home/pine/opt/bin/pdp11-aout-strings
/home/pine/opt/bin/pdp11-aout-c++filt /home/pine/opt/bin/pdp11-aout-objcopy /home/pine/opt/bin/pdp11-aout-strip
/home/pine/opt/bin/pdp11-aout-elfedit /home/pine/opt/bin/pdp11-aout-objdump
/home/pine/opt/bin/pdp11-aout-gprof /home/pine/opt/bin/pdp11-aout-ranlib

/home/pine/opt/pdp11-aout/bin/:
ar as ld ld.bfd nm objcopy objdump ranlib readelf strip

/home/pine/opt/pdp11-aout/lib/:
ldscripts


bin2load


実際に SimH での実行イメージを作成するツールである.
Git リポジトリー からダウンロードできる.
コンパイルは UNIX ライクなシステムなら問題なくできるだろう.


ldaout.cmd


以下の内容を ldaout.cmd という名前で保存する.


OUTPUT_FORMAT("a.out-pdp11")
ENTRY(start)
phys = 00001000;
SECTIONS
{
.text phys : AT(phys) {
code = .;
*(.text)
*(.rodata)
. = ALIGN(0100);
}
.data : AT(phys + (data - code))
{
data = .;
*(.data)
. = ALIGN(0100);
}
.bss : AT(phys + (bss - code))
{
bss = .;
*(.bss)
. = ALIGN(0100);
}
end = .;
}

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/11807499

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1441)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1404)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村