実行形式ファイルは先のメモリを意識して作成されます。
gccが生成する実行形式ファイルのフォーマットはELF形式というものでreadelfコマンドを使用して中身をみることができます。
格納されている情報は、いくつかの領域に分割されており、さらにそれぞれの情報やファイルの情報を「ヘッダ」として持っています。各関数がどのようなアドレスに配置されているかもを知ることができるとのこと。
以下を実施してみる。
$ readelf -a kzload.elf
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start
ELF形式でないと??マイコンにもコピーしてばっちり今まで動いてきたではないか。。
う~ん、こまった。
しょうがないのでバイナリエディタで中をみてELF形式のファイルであるかいなかを確認してみることにする。

結果、ELF形式ではなさそう。
先頭16バイトの識別情報でELF形式であるかがわかるのだが、
ELF形式の場合は『7f 45 4c 46 (0x7f 'E''L''F')』とこないといけない。
しかし、『83 01 00』と始まっている。。
※5thステップのELF形式の説明参照(ブログでは現時点では触れていないが)
ここの章はELF形式をみないと理解が定着しそうもないのだが困ったぞ
gccが生成する実行形式ファイルのフォーマットはELF形式というものでreadelfコマンドを使用して中身をみることができます。
格納されている情報は、いくつかの領域に分割されており、さらにそれぞれの情報やファイルの情報を「ヘッダ」として持っています。各関数がどのようなアドレスに配置されているかもを知ることができるとのこと。
以下を実施してみる。
$ readelf -a kzload.elf
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start
ELF形式でないと??マイコンにもコピーしてばっちり今まで動いてきたではないか。。
う~ん、こまった。
しょうがないのでバイナリエディタで中をみてELF形式のファイルであるかいなかを確認してみることにする。

結果、ELF形式ではなさそう。
先頭16バイトの識別情報でELF形式であるかがわかるのだが、
ELF形式の場合は『7f 45 4c 46 (0x7f 'E''L''F')』とこないといけない。
しかし、『83 01 00』と始まっている。。
※5thステップのELF形式の説明参照(ブログでは現時点では触れていないが)
ここの章はELF形式をみないと理解が定着しそうもないのだが困ったぞ