(toppers-users 194) Re: マシンコード

Takayuki WAKABAYASHI takayuki @ ertl.ics.tut.ac.jp
2001年 6月 5日 (火) 12:26:57 JST


豊橋技術科学大学の若林です.

Takeda Masaru さんは書きました:
 > どんな風にソースコード→アセンブラ→マシンコードと
 > 変換されているのか分かりません。
 > なにか変換がわかる方法があれば教えてください。

最終的なアセンブリコードを見たいのであれば,
binutilsについてくるobjdumpコマンドを使うと見ることができます.
  objdump --disassemble-all $(ロードモジュール)

変換最中のアセンブリコードを見たいのであれば,
gccに-Sオプションをつけることで
変換したアセンブリコードを出力させることができます.

もっと違う粒度で見たいのであれば,
gccに-dオプションをつけることで実現できます.
詳細はinfo(Invoking GCC::Debugging Optionsの'-dLETTERS'部)を
参照してください.

シンボルの値とアセンブリコードだけあればよいのであれば,
こういう風にMakefileを修正すると便利です.
私もシンボリックデバッガが使えないときに良くやります.

jsp/$(TARGET)/Makefile:190行付近 $(JSPOBJ)のルール
 #下の2行を挿入する (SHでの例)
---8<---
$(JSPOBJ): Makefile Makefile.depend kernel_cfg.c offset.h $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o jsp $(OBJS) $(LIBS)
	sh-hitachi-elf-objdump --disassemble-all $(JSPOBJ) > asm
	sh-hitachi-elf-objdump --syms $(JSPOBJ) | sort > syms
---8<---

以上 ご参考まで.

//-------------------------------------------------
//Takayuki WAKABAYASHI (わかばやし たかゆき)
//  mailto: takayuki @ ertl.ics.tut.ac.jp
//-------------------------------------------------
//豊橋技術科学大学 工学研究科 情報工学専攻
//  組込みリアルタイムシステム研究室
//    Embedded and realtime system laboratory
//      Dept. of information and computer science
//        Toyohashi univ. of technology