はじめまして。からさわと申します。 AKI-H8/gcc-2.95.3/binutils-2.11.2/newlib-1.9.0/gdb-4.18/FreeBSD4.3にて先 週からいろいろ試しています。 まだRAMを増設していないので書き込み回数がもったいない(^^;ということでgdb 上でシミュレートしている状態です。 #リモートデバッグには至っていません。 ところがSIGILLで落ちる(gdbがではなく)ので調べてみると場所は見つけました。 ーーーーーーーーーーーーーーここからーーーーーーーーーーーー > h8300-hms-gdb test.coff (gdb) set machine h8300h (gdb) target sim Connected to the simulator. (gdb) load Loading section .vectors, size 0xf4 vma 0x0 Loading section .text, size 0x1ad0 vma 0x200 Start address 0x200 Transfer rate: 56864 bits in <1 sec. (gdb) b *0x27e Breakpoint 1 at 0x27e: file crt1.c, line 2. (gdb) run Starting program: /home/export/gatesos/h8gcc/test.coff Breakpoint 1, 0x27e in __main () at crt1.c:2 2 { (gdb) info registers 〜〜〜省略〜〜〜 er6 0x0 0 sp 0xffef8 1048312 ccr 0x4 4 I-0 - H-0 - N-0 Z-1 V-0 C-0 u<= u>= == >= <= pc 0x27e 638 〜〜〜省略〜〜〜 (gdb) disassemble Dump of assembler code for function __main: 0x27e <__main>: 01 00 6d f6 mov.l er6,@-er7 0x282 <__main+4>: 0f f6 mov.l er7,er6 0x284 <__main+6>: 01 00 6d f4 mov.l er4,@-er7 〜〜〜省略〜〜〜 End of assembler dump. (gdb) si 0x282 2 { (gdb) info registers 〜〜〜省略〜〜〜 er6 0x0 0 sp 0x3fef4 261876 ccr 0x4 4 I-0 - H-0 - N-0 Z-1 V-0 C-0 u<= u>= == >= <= pc 0x282 642 〜〜〜省略〜〜〜 ーーーーーーーーーーーーーーここまでーーーーーーーーーーーー 0x27e <__main>: 01 00 6d f6 mov.l er6,@-er7 これは多分PUSH ER6だと思うんですが、これを実行した前後でSPの値がぜんぜん 違っています。このため__mainのエンドで変なアドレスへリターンして落ちてい ました。 #たぶん・・・(^_^; #PCみたら0x3fef4の値(0x0)だったので gdbの使い方が間違っているのでしょうか? あるいはこれで正しい動作??? しばらく悩んでいたのですがよくわからなくなってきたので教えてください。 よろしくお願いいたします。 -- karasawa <mak@xxxxxxxxxxxxxx>