DUMP
で出力された内容を ダンプリスト と呼ぶ
ダンプリスト左端はアドレス(ファイル先頭からの位置)
ダンプリスト中央にある16進数(バイト)が列挙されてる部分がマシン語プログラム(バイトコード)を表している。
ダンプリスト右端は、バイトコードをキャラクタコードで表現したときの内容。ただしバイトで表現可能な数値はキャラクタコードの範疇を超えることがあるため、そのような場合はピリオドで表現される。
dump.c
#include <stdio.h> int main(int argc, char* argv[]) { FILE *fp; unsigned char buf[16]; /* 読み込みバッファ */ unsigned long addr = 0; /* 先頭からのアドレス */ int readnum, i; if(argc <= 1) { printf("usage:dump filename\n"); return 1; } if(!(fp = fopen(argv[1], "rb"))) { printf("file open error.\n"); return 1; } while(1) { printf("%08x ", addr); readnum = fread(buf, 1, 16, fp); /* パイナリデータの表示 */ for(i = 0; i < readnum; i++) { if( i == 8) printf(" "); printf("%02x ", buf[i]); } for(i =readnum; i < 16; i++) { if(i == 8) printf(" "); printf(" "); } printf(" "); for(i = 0; i < readnum; i++) printf("%c", (32 <= buf[i] && buf[i] <= 126) ? buf[i] : '.'); printf("\n"); addr += 16; if(feof(fp)) break; } fclose(fp); return 0; }