Skip to content

Commit ee49f01

Browse files
committed
Revert "Add files via upload"
This reverts commit f8ef271.
1 parent f3ecd8a commit ee49f01

File tree

4 files changed

+809
-911
lines changed

4 files changed

+809
-911
lines changed

miasm/jitter/jitcore_cc_base.py

Lines changed: 121 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,121 @@
1-
#-*- coding:utf-8 -*-
2-
3-
import os
4-
import tempfile
5-
import platform
6-
import sysconfig
7-
from distutils.sysconfig import get_python_inc
8-
9-
from miasm.jitter.jitcore import JitCore
10-
from miasm.core.utils import keydefaultdict
11-
12-
is_win = platform.system() == "Windows"
13-
14-
def gen_core(arch, attrib):
15-
lib_dir = os.path.dirname(os.path.realpath(__file__))
16-
17-
txt = ""
18-
txt += '#include "%s/queue.h"\n' % lib_dir
19-
txt += '#include "%s/op_semantics.h"\n' % lib_dir
20-
txt += '#include "%s/vm_mngr.h"\n' % lib_dir
21-
txt += '#include "%s/vm_mngr_py.h"\n' % lib_dir
22-
txt += '#include "%s/bn.h"\n' % lib_dir
23-
txt += '#include "%s/JitCore.h"\n' % lib_dir
24-
txt += '#include "%s/arch/JitCore_%s.h"\n' % (lib_dir, arch.name)
25-
26-
txt += r'''
27-
#define RAISE(errtype, msg) {PyObject* p; p = PyErr_Format( errtype, msg ); return p;}
28-
'''
29-
return txt
30-
31-
32-
class myresolver(object):
33-
34-
def __init__(self, offset):
35-
self.offset = offset
36-
37-
def ret(self):
38-
return "return PyLong_FromUnsignedLongLong(0x%X);" % self.offset
39-
40-
41-
class resolver(object):
42-
43-
def __init__(self):
44-
self.resolvers = keydefaultdict(myresolver)
45-
46-
def get_resolver(self, offset):
47-
return self.resolvers[offset]
48-
49-
50-
class JitCore_Cc_Base(JitCore):
51-
"JiT management, abstract class using a C compiler as backend"
52-
53-
def __init__(self, ir_arch, bin_stream):
54-
self.jitted_block_delete_cb = self.deleteCB
55-
super(JitCore_Cc_Base, self).__init__(ir_arch, bin_stream)
56-
self.resolver = resolver()
57-
self.ir_arch = ir_arch
58-
self.states = {}
59-
self.tempdir = os.path.join(tempfile.gettempdir(), "miasm_cache")
60-
try:
61-
os.mkdir(self.tempdir, 0o755)
62-
except OSError:
63-
pass
64-
if not os.access(self.tempdir, os.R_OK | os.W_OK):
65-
raise RuntimeError(
66-
'Cannot access cache directory %s ' % self.tempdir)
67-
self.exec_wrapper = None
68-
self.libs = None
69-
self.include_files = None
70-
71-
def deleteCB(self, offset):
72-
raise NotImplementedError()
73-
74-
def load(self):
75-
lib_dir = os.path.dirname(os.path.realpath(__file__))
76-
ext = sysconfig.get_config_var('EXT_SUFFIX')
77-
if ext is None:
78-
ext = self._get_ext()
79-
80-
libs = [
81-
os.path.join(lib_dir, "VmMngr" + ext),
82-
os.path.join(
83-
lib_dir,
84-
"arch",
85-
"JitCore_%s%s" % (self.ir_arch.arch.name, ext)
86-
)
87-
]
88-
89-
include_files = [
90-
os.path.dirname(__file__),
91-
get_python_inc()
92-
]
93-
self.include_files = include_files
94-
self.libs = libs
95-
96-
def init_codegen(self, codegen):
97-
"""
98-
Get the code generator @codegen
99-
@codegen: an CGen instance
100-
"""
101-
self.codegen = codegen
102-
103-
def gen_c_code(self, block):
104-
"""
105-
Return the C code corresponding to the @irblocks
106-
@irblocks: list of irblocks
107-
"""
108-
f_declaration = '_MIASM_EXPORT int %s(block_id * BlockDst, JitCpu* jitcpu)' % self.FUNCNAME
109-
out = self.codegen.gen_c(
110-
block,
111-
log_mn=self.log_mn,
112-
log_regs=self.log_regs
113-
)
114-
out = [f_declaration + '{'] + out + ['}\n']
115-
c_code = out
116-
117-
return self.gen_C_source(self.ir_arch, c_code)
118-
119-
@staticmethod
120-
def gen_C_source(ir_arch, func_code):
121-
raise NotImplementedError()
122-
123-
def _get_ext(self):
124-
raise NotImplementedError()
1+
#-*- coding:utf-8 -*-
2+
3+
import os
4+
import tempfile
5+
import platform
6+
import sysconfig
7+
from distutils.sysconfig import get_python_inc
8+
9+
from miasm.jitter.jitcore import JitCore
10+
from miasm.core.utils import keydefaultdict
11+
12+
is_win = platform.system() == "Windows"
13+
14+
def gen_core(arch, attrib):
15+
lib_dir = os.path.dirname(os.path.realpath(__file__))
16+
17+
txt = ""
18+
txt += '#include "%s/queue.h"\n' % lib_dir
19+
txt += '#include "%s/op_semantics.h"\n' % lib_dir
20+
txt += '#include "%s/vm_mngr.h"\n' % lib_dir
21+
txt += '#include "%s/vm_mngr_py.h"\n' % lib_dir
22+
txt += '#include "%s/bn.h"\n' % lib_dir
23+
txt += '#include "%s/JitCore.h"\n' % lib_dir
24+
txt += '#include "%s/arch/JitCore_%s.h"\n' % (lib_dir, arch.name)
25+
26+
txt += r'''
27+
#define RAISE(errtype, msg) {PyObject* p; p = PyErr_Format( errtype, msg ); return p;}
28+
'''
29+
return txt
30+
31+
32+
class myresolver(object):
33+
34+
def __init__(self, offset):
35+
self.offset = offset
36+
37+
def ret(self):
38+
return "return PyLong_FromUnsignedLongLong(0x%X);" % self.offset
39+
40+
41+
class resolver(object):
42+
43+
def __init__(self):
44+
self.resolvers = keydefaultdict(myresolver)
45+
46+
def get_resolver(self, offset):
47+
return self.resolvers[offset]
48+
49+
50+
class JitCore_Cc_Base(JitCore):
51+
"JiT management, abstract class using a C compiler as backend"
52+
53+
def __init__(self, ir_arch, bin_stream):
54+
self.jitted_block_delete_cb = self.deleteCB
55+
super(JitCore_Cc_Base, self).__init__(ir_arch, bin_stream)
56+
self.resolver = resolver()
57+
self.ir_arch = ir_arch
58+
self.states = {}
59+
self.tempdir = os.path.join(tempfile.gettempdir(), "miasm_cache")
60+
try:
61+
os.mkdir(self.tempdir, 0o755)
62+
except OSError:
63+
pass
64+
if not os.access(self.tempdir, os.R_OK | os.W_OK):
65+
raise RuntimeError(
66+
'Cannot access cache directory %s ' % self.tempdir)
67+
self.exec_wrapper = None
68+
self.libs = None
69+
self.include_files = None
70+
71+
def deleteCB(self, offset):
72+
raise NotImplementedError()
73+
74+
def load(self):
75+
lib_dir = os.path.dirname(os.path.realpath(__file__))
76+
ext = sysconfig.get_config_var('EXT_SUFFIX')
77+
if ext is None:
78+
ext = ".so" if not is_win else ".lib"
79+
80+
libs = [
81+
os.path.join(lib_dir, "VmMngr" + ext),
82+
os.path.join(
83+
lib_dir,
84+
"arch",
85+
"JitCore_%s%s" % (self.ir_arch.arch.name, ext)
86+
)
87+
]
88+
89+
include_files = [
90+
os.path.dirname(__file__),
91+
get_python_inc()
92+
]
93+
self.include_files = include_files
94+
self.libs = libs
95+
96+
def init_codegen(self, codegen):
97+
"""
98+
Get the code generator @codegen
99+
@codegen: an CGen instance
100+
"""
101+
self.codegen = codegen
102+
103+
def gen_c_code(self, block):
104+
"""
105+
Return the C code corresponding to the @irblocks
106+
@irblocks: list of irblocks
107+
"""
108+
f_declaration = '_MIASM_EXPORT int %s(block_id * BlockDst, JitCpu* jitcpu)' % self.FUNCNAME
109+
out = self.codegen.gen_c(
110+
block,
111+
log_mn=self.log_mn,
112+
log_regs=self.log_regs
113+
)
114+
out = [f_declaration + '{'] + out + ['}\n']
115+
c_code = out
116+
117+
return self.gen_C_source(self.ir_arch, c_code)
118+
119+
@staticmethod
120+
def gen_C_source(ir_arch, func_code):
121+
raise NotImplementedError()

0 commit comments

Comments
 (0)