Ejemplo n.º 1
0
int main( int argc, char ** argv ) {
    opdis_off_t offset = 0;

    if ( argc < 2 ) {
        printf( "Usage: %s file [offset]\n", argv[0] );
        return 1;
    } else if ( argc >= 3 ) {
        offset = (opdis_off_t) strtoul( argv[2], NULL, 0 );
    }
    return disassemble_file( argv[1], offset );
}
Ejemplo n.º 2
0
int main( int argc, char **argv )
{
	parse_args( argc, argv );

	if( nullptr == binary_name ) {
		fprintf( stderr, "Error:  No binary specified\n" );
		exit( 1 );
	}

	remu::oshal::File file( binary_name );
	if( !file.isOpen() ) {
		fprintf( stderr, "Error:  Unable to open file \"%s\"\n", binary_name );
		exit( 1 );
	}

	auto binary = remu::binary::binaryForFile( file, binary_options );

	if( !binary ) {
		fprintf( stderr, "Error:  Unable to divine filetype for file \"%s\"\n", binary_name );
		exit( 1 );
	}

	switch( binary->machineType() ) {
		case remu::binary::MachineType::UNKNOWN: {
			fprintf( stderr, "Error: Unknown machine type in file \"%s\"\n", binary_name );
			exit( 1 );
		}
		break;

		case remu::binary::MachineType::PPC: {
			disassembler = std::unique_ptr<remu::jitpp::Disassembler>( new remu::jitpp::ppc::Disassembler() );
		}
		break;

		case remu::binary::MachineType::ARM: {
			disassembler = std::unique_ptr<remu::jitpp::Disassembler>( new remu::jitpp::arm::Disassembler() );
		}
		break;
	}

	disassemble_file( binary.get() );

	return 0;
}
Ejemplo n.º 3
0
/**
 * @brief casl2revコマンドのメイン
 *
 * @return 正常終了時は0、異常終了時は1
 *
 * @param argc コマンドライン引数の数
 * @param *argv[] コマンドライン引数の配列
 */
int main(int argc, char *argv[])
{
    int opt = 0;
    int stat = 0;
    const char *version = PACKAGE_VERSION;
    const char *cmdversion = "disassemble of YACASL2 version %s\n";
    const char *usage = "Usage: %s [-vh] FILE\n";

    /* エラーの定義 */
    cerr_init();
    addcerrlist_load();

    /* オプションの処理 */
    while((opt = getopt_long(argc, argv, "vh", longopts, NULL)) != -1) {
        switch(opt) {
        case 'v':
            fprintf(stdout, cmdversion, version);
            goto casl2revfin;
        case 'h':
            fprintf(stdout, usage, argv[0]);
            goto casl2revfin;
        case '?':
            fprintf(stderr, usage, argv[0]);
            setcerr(212, "");    /* invalid option */
            goto casl2revfin;
        }
    }
    if(argv[optind] == NULL) {
        setcerr(211, "");    /* object file not specified */
        fprintf(stderr, "disassemble error - %d: %s\n", cerr->num, cerr->msg);
        goto casl2revfin;
    }
    disassemble_file(argv[optind]);                /* プログラム実行 */
casl2revfin:
    if(cerr->num > 0) {
        stat = 1;
    }
    freecerr();                 /* エラーの解放 */
    return stat;
}