KOZOS (5)

とりあえず追加したナニを git add しとく。

$ git add Makefile defines.h ld.scr lib.c lib.h main.c serial.c serial.h startup.s vector.c
$ git commit -m '1st step'

中身を確認

H8 は 0x00000 から 0x000FF までの番地には割り込みベクタのテーブルが配置されているとの事。たしかに vector.c で

/*
 * 割込みベクタの設定.
 * リンカ・スクリプトの定義により,先頭番地に配置される.
 */
void (*vectors[])(void) = {
  start, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
};

な定義があったりコメントがあったり。リンカ・スクリプトを見てみるに

SECTIONS
{
	. = 0x0;

	.vectors : {
		vector.o(.data)
	}

	.text : {
		*(.text)
	}

みたいな記述もあります。vectors というポインタ配列は 4 bytes な要素が 64 で、指を折って数えてみるに、たしかに 0x0 から 0xff までですな。
しかもリンカ・スクリプトにある通り、0x00100 番地がプログラムの先頭との事。
あ、そーゆー意味では割り込みベクタ 0 がスタートアップルーチンになる模様。なので、startup.s で定義されてる _start がその入口になるのか。

そういえば

h8 なマニュアルも確認しとかないとマズいよな。というか実機が届いてどれだけハマるのか、色々な意味で本当に微妙。