Line 34... |
Line 34... |
instruction_properties *insn_props)
|
instruction_properties *insn_props)
|
{
|
{
|
or1k_32_collect_stats(insn, insn_props);
|
or1k_32_collect_stats(insn, insn_props);
|
}
|
}
|
|
|
|
|
|
void generate_stats(FILE * stream)
|
|
{
|
|
or1k_32_generate_stats(stream);
|
|
}
|
|
|
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
{
|
{
|
FILE *fp;
|
FILE *fp;
|
|
|
char insn_buff[INSN_SIZE_BYTES]; // Buffer for instruction data
|
char insn_buff[INSN_SIZE_BYTES]; // Buffer for instruction data
|
Line 65... |
Line 71... |
|
|
// Endianness is little when read in from binary file created with
|
// Endianness is little when read in from binary file created with
|
// or32-elf-objcopy, so swap;
|
// or32-elf-objcopy, so swap;
|
*insn = htonl(*insn);
|
*insn = htonl(*insn);
|
|
|
reset_instruction_properties(&insn_props);
|
if (*insn == 0) // most probably dead space in binary, skip
|
|
continue;
|
|
|
analyse_insn(*insn, &insn_props);
|
reset_instruction_properties(&insn_props);
|
|
|
print_insn(&insn_props);
|
|
printf("\n");
|
|
|
|
|
if (analyse_insn(*insn, &insn_props) == 0)
|
|
{
|
|
/*
|
|
print_insn(&insn_props);
|
|
printf("\n");
|
|
*/
|
insns_seen_total++;
|
insns_seen_total++;
|
|
|
collect_stats(*insn, &insn_props);
|
collect_stats(*insn, &insn_props);
|
|
}
|
|
else
|
|
{
|
|
printf("\n");
|
}
|
}
|
|
|
insn_lists_free();
|
}
|
|
|
fclose(fp);
|
fclose(fp);
|
|
|
printf("Saw %d instructions\n", insns_seen_total);
|
printf("Saw %d instructions\n", insns_seen_total);
|
|
|
|
generate_stats(stdout);
|
|
|
|
insn_lists_free();
|
|
|
return 0;
|
return 0;
|
|
|
}
|
}
|
|
|
No newline at end of file
|
No newline at end of file
|