Skip to content

Commit 6084ae9

Browse files
serpilliereDimitriPapadopoulos
authored andcommitted
Merge pull request #1474 from DimitriPapadopoulos/codespell
Fix typos found by codespell
2 parents 319229f + 46a201e commit 6084ae9

File tree

13 files changed

+135
-135
lines changed

13 files changed

+135
-135
lines changed

doc/ir/lift.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1729,7 +1729,7 @@
17291729
"\n",
17301730
"```\n",
17311731
"\n",
1732-
"This is the generic code used in `x86_64` to model function calls. But you can finely model functions. For example, suppose you are analysing code on `x86_32` with `stdcall` convention. Suppose you know the callee clean its stack arguments. Supppose as well you know for each function how many arguments it has. You can then customize the model to match the callee and compute the correct stack modification, as well as getting the arguments from stack:\n",
1732+
"This is the generic code used in `x86_64` to model function calls. But you can finely model functions. For example, suppose you are analysing code on `x86_32` with `stdcall` convention. Suppose you know the callee clean its stack arguments. Suppose as well you know for each function how many arguments it has. You can then customize the model to match the callee and compute the correct stack modification, as well as getting the arguments from stack:\n",
17331733
"\n",
17341734
"\n",
17351735
"\n"

doc/locationdb/locationdb.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
"metadata": {},
66
"source": [
77
"# LocationDB object \n",
8-
"The `LocationDB` is the Miasm object responsible of the symbols' management. A `Location` is an object representing a code or data (or anywhere else) position. As the name explicits it, the `LocationDB` is a database of locations. Here are some rules:\n",
8+
"The `LocationDB` is the Miasm object responsible of the symbols' management. A `Location` is an object representing a code or data (or anywhere else) position. As the name says, the `LocationDB` is a database of locations. Here are some rules:\n",
99
"- each location has exactly *one* associated `LocKey`\n",
1010
"- a `LocKey` is linked to a unique `LocationDB` (and must not be used in another `LocationDB`)\n",
1111
"- a `LocKey` is very similar to primary key object in a database.\n",
1212
"- a `LocKey` can have an optional *offset*.\n",
1313
"- a `LocKey` can have multiple symbol names\n",
14-
"- two `Lockey`s cannot share an identic offset\n",
14+
"- two `Lockey`s cannot share an identical offset\n",
1515
"- two `LocKey`s cannot share a symbol name\n",
1616
"\n",
1717
"Below are manipulations of the `LocationDB`"

example/disasm/dis_binary.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
loc_db = LocationDB()
99

1010
# The Container will provide a *bin_stream*, bytes source for the disasm engine
11-
# It will prodive a view from a PE or an ELF.
11+
# It will provide a view from a PE or an ELF.
1212
cont = Container.from_stream(fdesc, loc_db)
1313

1414
# The Machine, instantiated with the detected architecture, will provide tools

example/expression/interfer.py

Lines changed: 0 additions & 113 deletions
This file was deleted.

example/expression/interfere.py

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
from miasm.analysis.data_flow import State
2+
from miasm.expression.expression import *
3+
4+
"""
5+
Test memory interferences
6+
7+
A memory interference may appear when two ExprMem objects relate to the same area of memory: editing one may impact the other.
8+
"""
9+
10+
a32 = ExprId('a', 32)
11+
b32 = ExprId('b', 32)
12+
13+
a64 = ExprId('a', 64)
14+
b64 = ExprId('b', 64)
15+
16+
mem_a32_32 = ExprMem(a32, 32)
17+
mem_b32_32 = ExprMem(b32, 32)
18+
19+
mem_a64_32 = ExprMem(a64, 32)
20+
21+
mem_a32_m1_8 = ExprMem(a32 + ExprInt(-1, 32), 8)
22+
mem_a32_p0_8 = ExprMem(a32, 8)
23+
mem_a32_p1_8 = ExprMem(a32 + ExprInt(1, 32), 8)
24+
mem_a32_p2_8 = ExprMem(a32 + ExprInt(2, 32), 8)
25+
mem_a32_p3_8 = ExprMem(a32 + ExprInt(3, 32), 8)
26+
mem_a32_p4_8 = ExprMem(a32 + ExprInt(4, 32), 8)
27+
28+
29+
mem_a32_m4_32 = ExprMem(a32 + ExprInt(-4, 32), 32)
30+
mem_a32_m3_32 = ExprMem(a32 + ExprInt(-3, 32), 32)
31+
mem_a32_m2_32 = ExprMem(a32 + ExprInt(-2, 32), 32)
32+
mem_a32_m1_32 = ExprMem(a32 + ExprInt(-1, 32), 32)
33+
mem_a32_p0_32 = ExprMem(a32, 32)
34+
mem_a32_p1_32 = ExprMem(a32 + ExprInt(1, 32), 32)
35+
mem_a32_p2_32 = ExprMem(a32 + ExprInt(2, 32), 32)
36+
mem_a32_p3_32 = ExprMem(a32 + ExprInt(3, 32), 32)
37+
mem_a32_p4_32 = ExprMem(a32 + ExprInt(4, 32), 32)
38+
39+
40+
mem_a64_m4_32 = ExprMem(a64 + ExprInt(-4, 64), 32)
41+
mem_a64_m3_32 = ExprMem(a64 + ExprInt(-3, 64), 32)
42+
mem_a64_m2_32 = ExprMem(a64 + ExprInt(-2, 64), 32)
43+
mem_a64_m1_32 = ExprMem(a64 + ExprInt(-1, 64), 32)
44+
mem_a64_p0_32 = ExprMem(a64, 32)
45+
mem_a64_p1_32 = ExprMem(a64 + ExprInt(1, 64), 32)
46+
mem_a64_p2_32 = ExprMem(a64 + ExprInt(2, 64), 32)
47+
mem_a64_p3_32 = ExprMem(a64 + ExprInt(3, 64), 32)
48+
mem_a64_p4_32 = ExprMem(a64 + ExprInt(4, 64), 32)
49+
50+
51+
state = State()
52+
53+
54+
assert state.may_interfere(set([mem_a32_32]), mem_b32_32) == True
55+
assert state.may_interfere(set([mem_b32_32]), mem_a32_32) == True
56+
57+
# Test 8 bit accesses
58+
assert state.may_interfere(set([mem_a32_m1_8]), mem_a32_32) == False
59+
assert state.may_interfere(set([mem_a32_p0_8]), mem_a32_32) == True
60+
assert state.may_interfere(set([mem_a32_p1_8]), mem_a32_32) == True
61+
assert state.may_interfere(set([mem_a32_p2_8]), mem_a32_32) == True
62+
assert state.may_interfere(set([mem_a32_p3_8]), mem_a32_32) == True
63+
assert state.may_interfere(set([mem_a32_p4_8]), mem_a32_32) == False
64+
65+
assert state.may_interfere(set([mem_a32_32]), mem_a32_m1_8) == False
66+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p0_8) == True
67+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p1_8) == True
68+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p2_8) == True
69+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p3_8) == True
70+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p4_8) == False
71+
72+
73+
# Test 32 bit accesses
74+
assert state.may_interfere(set([mem_a32_m4_32]), mem_a32_32) == False
75+
assert state.may_interfere(set([mem_a32_m3_32]), mem_a32_32) == True
76+
assert state.may_interfere(set([mem_a32_m2_32]), mem_a32_32) == True
77+
assert state.may_interfere(set([mem_a32_m1_32]), mem_a32_32) == True
78+
assert state.may_interfere(set([mem_a32_p0_32]), mem_a32_32) == True
79+
assert state.may_interfere(set([mem_a32_p1_32]), mem_a32_32) == True
80+
assert state.may_interfere(set([mem_a32_p2_32]), mem_a32_32) == True
81+
assert state.may_interfere(set([mem_a32_p3_32]), mem_a32_32) == True
82+
assert state.may_interfere(set([mem_a32_p4_32]), mem_a32_32) == False
83+
84+
assert state.may_interfere(set([mem_a32_32]), mem_a32_m4_32) == False
85+
assert state.may_interfere(set([mem_a32_32]), mem_a32_m3_32) == True
86+
assert state.may_interfere(set([mem_a32_32]), mem_a32_m2_32) == True
87+
assert state.may_interfere(set([mem_a32_32]), mem_a32_m1_32) == True
88+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p0_32) == True
89+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p1_32) == True
90+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p2_32) == True
91+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p3_32) == True
92+
assert state.may_interfere(set([mem_a32_32]), mem_a32_p4_32) == False
93+
94+
# Test 32 bit accesses with 64 bit memory address
95+
assert state.may_interfere(set([mem_a64_m4_32]), mem_a64_32) == False
96+
assert state.may_interfere(set([mem_a64_m3_32]), mem_a64_32) == True
97+
assert state.may_interfere(set([mem_a64_m2_32]), mem_a64_32) == True
98+
assert state.may_interfere(set([mem_a64_m1_32]), mem_a64_32) == True
99+
assert state.may_interfere(set([mem_a64_p0_32]), mem_a64_32) == True
100+
assert state.may_interfere(set([mem_a64_p1_32]), mem_a64_32) == True
101+
assert state.may_interfere(set([mem_a64_p2_32]), mem_a64_32) == True
102+
assert state.may_interfere(set([mem_a64_p3_32]), mem_a64_32) == True
103+
assert state.may_interfere(set([mem_a64_p4_32]), mem_a64_32) == False
104+
105+
assert state.may_interfere(set([mem_a64_32]), mem_a64_m4_32) == False
106+
assert state.may_interfere(set([mem_a64_32]), mem_a64_m3_32) == True
107+
assert state.may_interfere(set([mem_a64_32]), mem_a64_m2_32) == True
108+
assert state.may_interfere(set([mem_a64_32]), mem_a64_m1_32) == True
109+
assert state.may_interfere(set([mem_a64_32]), mem_a64_p0_32) == True
110+
assert state.may_interfere(set([mem_a64_32]), mem_a64_p1_32) == True
111+
assert state.may_interfere(set([mem_a64_32]), mem_a64_p2_32) == True
112+
assert state.may_interfere(set([mem_a64_32]), mem_a64_p3_32) == True
113+
assert state.may_interfere(set([mem_a64_32]), mem_a64_p4_32) == False

miasm/analysis/data_flow.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1877,7 +1877,7 @@ class State(object):
18771877
The state is represented using equivalence classes
18781878
18791879
Each assignment can create/destroy equivalence classes. Interferences
1880-
between expression is computed using `may_interfer` function
1880+
between expression is computed using `may_interfere` function
18811881
"""
18821882

18831883
def __init__(self):
@@ -1908,9 +1908,9 @@ def __ne__(self, other):
19081908
# required Python 2.7.14
19091909
return not self == other
19101910

1911-
def may_interfer(self, dsts, src):
1911+
def may_interfere(self, dsts, src):
19121912
"""
1913-
Return True is @src may interfer with expressions in @dsts
1913+
Return True if @src may interfere with expressions in @dsts
19141914
@dsts: Set of Expressions
19151915
@src: expression to test
19161916
"""
@@ -2084,8 +2084,8 @@ def eval_assignblock(self, assignblock):
20842084
# Remove interfering known classes
20852085
to_del = set()
20862086
for node in list(classes.nodes()):
2087-
if self.may_interfer(dsts, node):
2088-
# Interfer with known equivalence class
2087+
if self.may_interfere(dsts, node):
2088+
# Interfere with known equivalence class
20892089
self.equivalence_classes.del_element(node)
20902090
if node.is_id() or node.is_mem():
20912091
self.undefined.add(node)
@@ -2104,8 +2104,8 @@ def eval_assignblock(self, assignblock):
21042104
if node.is_id() or node.is_mem():
21052105
self.undefined.add(node)
21062106

2107-
# Don't create equivalence if self interfer
2108-
if self.may_interfer(dsts, src):
2107+
# Don't create equivalence if self interfere
2108+
if self.may_interfere(dsts, src):
21092109
if dst in self.equivalence_classes.nodes():
21102110
self.equivalence_classes.del_element(dst)
21112111
if dst.is_id() or dst.is_mem():
@@ -2137,7 +2137,7 @@ def merge(self, other):
21372137
undefined = set(node for node in self.undefined if node.is_id() or node.is_mem())
21382138
undefined.update(set(node for node in other.undefined if node.is_id() or node.is_mem()))
21392139
# Should we compute interference between srcs and undefined ?
2140-
# Nop => should already interfer in other state
2140+
# Nop => should already interfere in other state
21412141
components1 = classes1.get_classes()
21422142
components2 = classes2.get_classes()
21432143

@@ -2173,7 +2173,7 @@ def merge(self, other):
21732173
continue
21742174
if common:
21752175
# Intersection contains multiple nodes
2176-
# Here, common nodes don't interfer with any undefined
2176+
# Here, common nodes don't interfere with any undefined
21772177
nodes_ok.update(common)
21782178
out.append(common)
21792179
diff = component1.difference(common)

miasm/arch/mep/regs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
csr_exprs, csr_inits, csr_infos = gen_regs(csr_names, globals())
4545

4646
# Define aliases to control/special registers
47-
PC = csr_exprs[0] # Program Conter. On MeP, it is the special register R0
47+
PC = csr_exprs[0] # Program Counter. On MeP, it is the special register R0
4848
LP = csr_exprs[1] # Link Pointer. On MeP, it is the special register R1
4949
SAR = csr_exprs[2] # Shift Amount Register. On MeP, it is the special register R2
5050
RPB = csr_exprs[4] # Repeat Begin. On MeP, it is the special register R4

miasm/arch/x86/sem.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5057,7 +5057,7 @@ def ldmxcsr(ir, instr, dst):
50575057

50585058

50595059
def _select4(src, control):
5060-
# Implementation inspired from Intel Intrisics Guide
5060+
# Implementation inspired from Intel Intrinsics Guide
50615061
# @control is already resolved (was an immediate)
50625062

50635063
if control == 0:

miasm/expression/expression_helper.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def merge_sliceto_slice(expr):
8989
def is_pure_int(e):
9090
"""
9191
return True if expr is only composed with integers
92-
[!] ExprCond returns True is src1 and src2 are integers
92+
[!] ExprCond returns True if src1 and src2 are integers
9393
"""
9494
def modify_cond(e):
9595
if isinstance(e, m2_expr.ExprCond):
@@ -344,7 +344,7 @@ class ExprRandom(object):
344344
compose_max_layer = 5
345345
# Maximum size of memory address in bits
346346
memory_max_address_size = 32
347-
# Re-use already generated elements to mimic a more realistic behavior
347+
# Reuse already generated elements to mimic a more realistic behavior
348348
reuse_element = True
349349
generated_elements = {} # (depth, size) -> [Expr]
350350

@@ -450,7 +450,7 @@ def _gen(cls, size=32, depth=1):
450450
if not cls.perfect_tree:
451451
depth = random.randint(max(0, depth - 2), depth)
452452

453-
# Element re-use
453+
# Element reuse
454454
if cls.reuse_element and random.choice([True, False]) and \
455455
(depth, size) in cls.generated_elements:
456456
return random.choice(cls.generated_elements[(depth, size)])

miasm/jitter/jitload.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def init_stack(self):
476476
def get_exception(self):
477477
return self.cpu.get_exception() | self.vm.get_exception()
478478

479-
# commun functions
479+
# common functions
480480
def get_c_str(self, addr, max_char=None):
481481
"""Get C str from vm.
482482
@addr: address in memory

0 commit comments

Comments
 (0)