Step5ではXMODEMで転送したELFファイルの形式を解析するところまで実装しました。
以下、実行したログです。
※間違ってStep5のkzload.elfをロードしてしまいました。
Machine Name:step05 myaccount$ sudo cu -l /dev/cu.PL2303-00001004
Password:
Connected.
kzload (kozos boot loader) started.
kzload> load
~+ lsx kzload.elf
Sending kzload.elf, 43 blocks: Give your local XMODEM receive command now.
Bytes Sent: 5632 BPS:587
Transfer complete
XMODEM receive succeeded.
kzload> dump
size: 1600
7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
00 02 00 2e 00 00 00 01 00 00 01 00 00 00 00 34
00 00 0a 5c 00 81 00 00 00 34 00 20 00 04 00 28
00 0a 00 07 00 00 00 01 00 00 00 b4 00 00 00 00
中略
6f 64 61 74 61 00 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a
kzload> run
0000b4 00000000 00000000 00100 00100 06 01
0001b4 00000100 00000100 0079a 0079a 05 01
000950 0000089c 0000089c 000ad 000ad 04 01
000a00 00fffc20 00000949 00004 00018 06 01
kzload>
readelf -a kzload.elf のProgram Headers部分。
Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x0000b4 0x00000000 0x00000000 0x00100 0x00100 RW 0x1 LOAD 0x0001b4 0x00000100 0x00000100 0x0079a 0x0079a R E 0x1 LOAD 0x000950 0x0000089c 0x0000089c 0x000ad 0x000ad R 0x1 LOAD 0x000a00 0x00fffc20 0x00000949 0x00004 0x00018 RW 0x1
この後の論理回路の説明は論理回路の意味がうっすらわかって面白かったです。
まだちゃんと理解出来ていないけど、またの機会にちゃんと読みたい。