Add mnemonics.csv query to count mnemonics
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package Mnemonics;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
use FindBin;
|
||||
use lib "$FindBin::Bin/../Modules";
|
||||
use Filters;
|
||||
|
||||
use feature 'say';
|
||||
|
||||
sub query {
|
||||
my ( $experiment, $experiment_dir, $filter_config_name ) = @_;
|
||||
$filter_config_name //= '';
|
||||
|
||||
my $filters =
|
||||
Filters::build_filter_clause( $experiment_dir, $filter_config_name );
|
||||
|
||||
my $querystring = "SELECT
|
||||
CASE
|
||||
WHEN o.disassemble IS NOT NULL AND SUBSTRING_INDEX(TRIM(o.disassemble), ' ', 1) REGEXP '^[a-zA-Z][a-zA-Z0-9 ]*\$'
|
||||
THEN SUBSTRING_INDEX(TRIM(o.disassemble), ' ', 1)
|
||||
ELSE NULL
|
||||
END AS mnemonic,
|
||||
COUNT(DISTINCT CONCAT(t.instr2, '_', t.data_physical_address)) AS count
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
JOIN objdump o ON o.variant_id = v.id AND o.instr_address = t.instr2_absolute
|
||||
WHERE v.variant = '$experiment'$filters
|
||||
GROUP BY mnemonic
|
||||
ORDER BY count DESC;";
|
||||
|
||||
say $querystring;
|
||||
|
||||
return $querystring;
|
||||
}
|
||||
|
||||
sub args { return "--batch --raw"; }
|
||||
|
||||
sub filename {
|
||||
my ($filter_config_name) = @_;
|
||||
$filter_config_name //= '';
|
||||
my $suffix = length($filter_config_name) ? "_$filter_config_name" : "";
|
||||
return "mnemonics${suffix}.csv";
|
||||
}
|
||||
|
||||
sub postprocess { $_[0] =~ s/\t/,/g; }
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user