@@ -90,7 +90,7 @@ public void Execute(string[] args)
90
90
if ( pArgs is null )
91
91
return ;
92
92
93
- if ( pArgs . TryGetValue ( "--locale" , out var localeName ) ) {
93
+ if ( pArgs . TryGetValue ( "--locale" , out var localeName ) ) {
94
94
Thread . CurrentThread . CurrentUICulture = new CultureInfo ( ( string ) localeName ) ;
95
95
}
96
96
@@ -227,7 +227,7 @@ private void Decompile(Dictionary<string, object> pArgs)
227
227
}
228
228
decompiler . ExtractResources ( ) ;
229
229
decompiler . ScanPrograms ( ) ;
230
- if ( ! pArgs . ContainsKey ( " disassemble") )
230
+ if ( ( string ) pArgs [ "majorCommand" ] != " disassemble")
231
231
{
232
232
decompiler . AnalyzeDataFlow ( ) ;
233
233
decompiler . ReconstructTypes ( ) ;
@@ -360,17 +360,17 @@ private void DecompileRawImage(Dictionary<string, object> pArgs)
360
360
var state = CreateInitialState ( arch , program . SegmentMap , pArgs ) ;
361
361
if ( pArgs . TryGetValue ( "heuristics" , out object oHeur ) )
362
362
{
363
- decompiler . Project . Programs [ 0 ] . User . Heuristics = ( ( string [ ] ) oHeur ) . ToSortedSet ( ) ;
363
+ program . User . Heuristics = ( ( string [ ] ) oHeur ) . ToSortedSet ( ) ;
364
364
}
365
365
if ( pArgs . TryGetValue ( "aggressive-branch-removal" , out object oAggressiveBranchRemoval ) )
366
366
{
367
367
if ( oAggressiveBranchRemoval is bool flag && flag )
368
368
{
369
- decompiler . Project . Programs [ 0 ] . User . Heuristics . Add ( "aggressive-branch-removal" ) ;
369
+ program . User . Heuristics . Add ( "aggressive-branch-removal" ) ;
370
370
}
371
371
}
372
372
decompiler . ScanPrograms ( ) ;
373
- if ( ! pArgs . ContainsKey ( "scan-only" ) )
373
+ if ( ( string ) pArgs [ "majorCommand" ] != "disassemble" )
374
374
{
375
375
decompiler . AnalyzeDataFlow ( ) ;
376
376
decompiler . ReconstructTypes ( ) ;
@@ -412,9 +412,11 @@ private static ProcessorState CreateInitialState(IProcessorArchitecture arch, Se
412
412
foreach ( var regValue in regs . Where ( r => ! string . IsNullOrEmpty ( r ) ) )
413
413
{
414
414
var rr = regValue . Split ( ':' ) ;
415
- if ( rr == null || rr . Length != 2 )
415
+ if ( rr is null || rr . Length != 2 )
416
416
continue ;
417
417
var reg = arch . GetRegister ( rr [ 0 ] ) ;
418
+ if ( reg is null )
419
+ continue ;
418
420
state . SetRegister ( reg , Constant . Create ( reg . DataType , Convert . ToInt64 ( rr [ 1 ] , 16 ) ) ) ;
419
421
}
420
422
return state ;
@@ -429,22 +431,24 @@ private Dictionary<string,object> ProcessArguments(TextWriter w, string[] args)
429
431
}
430
432
var parsedArgs = new Dictionary < string , object > ( ) ;
431
433
432
- // Eat major commands
434
+ // Eat major commands. The default major command is
435
+ // "decompile".
436
+ parsedArgs [ "majorCommand" ] = "decompile" ;
433
437
int i = 0 ;
434
438
switch ( args [ 0 ] )
435
439
{
436
440
case "asm" :
437
441
case "assemble" :
438
- parsedArgs [ "assemble " ] = true ;
442
+ parsedArgs [ "majorCommand " ] = "assemble" ;
439
443
++ i ;
440
444
break ;
441
445
case "decompile" :
442
- parsedArgs [ "decompile " ] = true ;
446
+ parsedArgs [ "majorCommand " ] = "decompile" ;
443
447
++ i ;
444
448
break ;
445
449
case "dasm" :
446
450
case "disassemble" :
447
- parsedArgs [ "disassemble " ] = true ;
451
+ parsedArgs [ "majorCommand " ] = "disassemble" ;
448
452
++ i ;
449
453
break ;
450
454
}
@@ -574,7 +578,8 @@ private Dictionary<string,object> ProcessArguments(TextWriter w, string[] args)
574
578
}
575
579
else if ( args [ i ] == "--scan-only" )
576
580
{
577
- parsedArgs [ "disassemble" ] = true ;
581
+ //$TODO: deprecate this command
582
+ parsedArgs [ "majorCommand" ] = "disassemble" ;
578
583
}
579
584
else if ( args [ i ] == "--extract-resources" )
580
585
{
@@ -672,7 +677,7 @@ private static void ShowVersion(TextWriter w)
672
677
if ( attrs . Length < 1 )
673
678
return ;
674
679
var attr = ( AssemblyFileVersionAttribute ) attrs [ 0 ] ;
675
- w . Write ( "Decompile.exe version {0}" , attr . Version ) ;
680
+ w . Write ( "Reko decompiler version {0}" , attr . Version ) ;
676
681
var githashAttr = typeof ( AssemblyMetadata ) . Assembly . GetCustomAttributes < AssemblyMetadataAttribute > ( )
677
682
. FirstOrDefault ( a => a . Key == "GitHash" ) ;
678
683
if ( githashAttr != null )
@@ -721,8 +726,6 @@ private void Usage(TextWriter w)
721
726
w . WriteLine ( " calls-respect-abi Assume procedure calls respect the platform ABI" ) ;
722
727
w . WriteLine ( " --aggressive-branch-removal Be more aggressive in removing unused branches" ) ;
723
728
w . WriteLine ( " --metadata <filename> Use the file <filename> as a source of metadata" ) ;
724
- w . WriteLine ( " --scan-only Only scans the binary to find instructions, forgoing" ) ;
725
- w . WriteLine ( " full decompilation." ) ;
726
729
w . WriteLine ( " --time-limit <s> Limit execution time to s seconds" ) ;
727
730
w . WriteLine ( " --debug-trace-proc <p1>[,<p2>...] Debug: trace Reko analysis phases of the" ) ;
728
731
w . WriteLine ( " given procedure names p1, p2 etc." ) ;
0 commit comments