From 5361b63b528390e69acd90504410a08d3160c137 Mon Sep 17 00:00:00 2001 From: JanLJL Date: Mon, 3 Aug 2020 09:38:50 +0200 Subject: [PATCH 1/4] version bump --- osaca/__init__.py | 2 +- osaca/data/bdw.yml | 2 +- osaca/data/csx.yml | 2 +- osaca/data/hsw.yml | 2 +- osaca/data/isa/aarch64.yml | 2 +- osaca/data/isa/x86.yml | 2 +- osaca/data/ivb.yml | 2 +- osaca/data/n1.yml | 2 +- osaca/data/skx.yml | 2 +- osaca/data/snb.yml | 2 +- osaca/data/tx2.yml | 2 +- osaca/data/zen1.yml | 2 +- osaca/data/zen2.yml | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/osaca/__init__.py b/osaca/__init__.py index d06d900..a1ee834 100644 --- a/osaca/__init__.py +++ b/osaca/__init__.py @@ -1,6 +1,6 @@ """Open Source Architecture Code Analyzer""" name = 'osaca' -__version__ = '0.3.3.dev0' +__version__ = '0.3.4' # To trigger travis deployment to pypi, do the following: # 1. Increment __version___ diff --git a/osaca/data/bdw.yml b/osaca/data/bdw.yml index d29c7ec..7346b62 100644 --- a/osaca/data/bdw.yml +++ b/osaca/data/bdw.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Intel Broadwell arch_code: BDW isa: x86 diff --git a/osaca/data/csx.yml b/osaca/data/csx.yml index e73d942..5aeed51 100644 --- a/osaca/data/csx.yml +++ b/osaca/data/csx.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Cascade Lake SP arch_code: CSX isa: x86 diff --git a/osaca/data/hsw.yml b/osaca/data/hsw.yml index 2f1a9f9..3d2b8c2 100644 --- a/osaca/data/hsw.yml +++ b/osaca/data/hsw.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Intel Haswell arch_code: HSW isa: x86 diff --git a/osaca/data/isa/aarch64.yml b/osaca/data/isa/aarch64.yml index 13b294a..2957a28 100644 --- a/osaca/data/isa/aarch64.yml +++ b/osaca/data/isa/aarch64.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.0 +osaca_version: 0.3.4 isa: "AArch64" # Contains all operand-irregular instruction forms OSACA supports for AArch64. # Operand-regular for a AArch64 instruction form with N operands in the shape of diff --git a/osaca/data/isa/x86.yml b/osaca/data/isa/x86.yml index 54ceeba..b5d8bc7 100644 --- a/osaca/data/isa/x86.yml +++ b/osaca/data/isa/x86.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.0 +osaca_version: 0.3.4 isa: "x86" # Contains all operand-irregular instruction forms OSACA supports for x86. # Operand-regular for a x86 AT&T instruction form with N operands in the shape of diff --git a/osaca/data/ivb.yml b/osaca/data/ivb.yml index 3da9bba..ae5f035 100644 --- a/osaca/data/ivb.yml +++ b/osaca/data/ivb.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Intel Ivy Bridge arch_code: IVB isa: x86 diff --git a/osaca/data/n1.yml b/osaca/data/n1.yml index 3738df4..d189c44 100644 --- a/osaca/data/n1.yml +++ b/osaca/data/n1.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.3 +osaca_version: 0.3.4 micro_architecture: Arm Neoverse N1 arch_code: n1 isa: AArch64 diff --git a/osaca/data/skx.yml b/osaca/data/skx.yml index 17bd85b..7c09473 100644 --- a/osaca/data/skx.yml +++ b/osaca/data/skx.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Intel Skylake SP arch_code: SKX isa: x86 diff --git a/osaca/data/snb.yml b/osaca/data/snb.yml index e0545dc..e1bf0ed 100644 --- a/osaca/data/snb.yml +++ b/osaca/data/snb.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Intel Sandy Bridge arch_code: SNB isa: x86 diff --git a/osaca/data/tx2.yml b/osaca/data/tx2.yml index 8c9765f..3df5f6d 100644 --- a/osaca/data/tx2.yml +++ b/osaca/data/tx2.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: Thunder X2 arch_code: tx2 isa: AArch64 diff --git a/osaca/data/zen1.yml b/osaca/data/zen1.yml index 04973a1..e45ba48 100644 --- a/osaca/data/zen1.yml +++ b/osaca/data/zen1.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: AMD Zen (family 17h) arch_code: ZEN1 isa: x86 diff --git a/osaca/data/zen2.yml b/osaca/data/zen2.yml index 125ba74..bfec889 100644 --- a/osaca/data/zen2.yml +++ b/osaca/data/zen2.yml @@ -1,4 +1,4 @@ -osaca_version: 0.3.2 +osaca_version: 0.3.4 micro_architecture: AMD Zen2 arch_code: ZEN2 isa: x86 From e715badcf988cc65e34800cf4a49575b3e2a0117 Mon Sep 17 00:00:00 2001 From: JanLJL Date: Mon, 3 Aug 2020 16:59:48 +0200 Subject: [PATCH 2/4] detects numeric label as label --- osaca/parser/parser_x86att.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index b6e42af..f594d0b 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -34,8 +34,13 @@ class ParserX86ATT(BaseParser): + pp.Optional(relocation).setResultsName('relocation') ).setResultsName('identifier') # Label + numeric_identifier = pp.Group( + pp.Word(pp.nums).setResultsName('name') + pp.Optional(pp.oneOf('b f', caseless=True)) + ).setResultsName('identifier') self.label = pp.Group( - identifier.setResultsName('name') + pp.Literal(':') + pp.Optional(self.comment) + (identifier | numeric_identifier).setResultsName('name') + + pp.Literal(':') + + pp.Optional(self.comment) ).setResultsName(self.LABEL_ID) # Register: pp.Regex('^%[0-9a-zA-Z]+{}{z},?') self.register = pp.Group( @@ -132,7 +137,7 @@ class ParserX86ATT(BaseParser): pp.alphanums ).setResultsName('mnemonic') # Combine to instruction form - operand_first = pp.Group(self.register ^ immediate ^ memory ^ identifier) + operand_first = pp.Group(self.register ^ immediate ^ memory ^ identifier ^ numeric_identifier) operand_rest = pp.Group(self.register ^ immediate ^ memory) self.instruction_parser = ( mnemonic @@ -305,7 +310,10 @@ class ParserX86ATT(BaseParser): def process_label(self, label): """Post-process label asm line""" # remove duplicated 'name' level due to identifier - label['name'] = label['name']['name'] + if 'name' in label['name'][0]: + label['name'] = label['name'][0]['name'] + else: + label['name'] = label['name'][0] return AttrDict({self.LABEL_ID: label}) def process_immediate(self, immediate): From 12a8506530e97344bbe3fd1ddc96af8236780c2c Mon Sep 17 00:00:00 2001 From: JanLJL Date: Mon, 3 Aug 2020 17:14:58 +0200 Subject: [PATCH 3/4] removed unnecessary code --- osaca/parser/parser_x86att.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index f594d0b..9576a0e 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -310,10 +310,7 @@ class ParserX86ATT(BaseParser): def process_label(self, label): """Post-process label asm line""" # remove duplicated 'name' level due to identifier - if 'name' in label['name'][0]: - label['name'] = label['name'][0]['name'] - else: - label['name'] = label['name'][0] + label['name'] = label['name'][0]['name'] return AttrDict({self.LABEL_ID: label}) def process_immediate(self, immediate): From 269148c2a1bc32c97e1417b511125cdba02fe3d9 Mon Sep 17 00:00:00 2001 From: JanLJL Date: Mon, 3 Aug 2020 18:08:29 +0200 Subject: [PATCH 4/4] save b/f in numeric identifier as suffix tag --- osaca/parser/parser_x86att.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index 9576a0e..ce79216 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -import re import string import pyparsing as pp @@ -35,7 +34,7 @@ class ParserX86ATT(BaseParser): ).setResultsName('identifier') # Label numeric_identifier = pp.Group( - pp.Word(pp.nums).setResultsName('name') + pp.Optional(pp.oneOf('b f', caseless=True)) + pp.Word(pp.nums).setResultsName('name') + pp.Optional(pp.oneOf('b f', caseless=True).setResultsName('suffix')) ).setResultsName('identifier') self.label = pp.Group( (identifier | numeric_identifier).setResultsName('name')