FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Tools/scripts/generate_opcode_h.py at 3.5 · python-emscripten/cpython · GitHub
python-emscripten
cpython
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Tools
/
scripts
/
generate_opcode_h.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
54 lines (41 loc) · 1.5 KB
Breadcrumbs
cpython
/
Tools
/
scripts
/
generate_opcode_h.py
Copy path
File metadata and controls
54 lines (41 loc) · 1.5 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# This script generates the opcode.h header file.
from
__future__
import
with_statement
import
sys
header
=
"""/* Auto-generated by Tools/scripts/generate_opcode_h.py */
#ifndef Py_OPCODE_H
#define Py_OPCODE_H
#ifdef __cplusplus
extern "C" {
#endif
/* Instruction opcodes for compiled code */
"""
footer
=
"""
/* EXCEPT_HANDLER is a special, implicit block type which is created when
entering an except handler. It is not an opcode but we define it here
as we want it to be available to both frameobject.c and ceval.c, while
remaining private.*/
#define EXCEPT_HANDLER 257
enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN,
PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
#ifdef __cplusplus
}
#endif
#endif /* !Py_OPCODE_H */
"""
def
main
(
opcode_py
,
outfile
=
'Include/opcode.h'
):
opcode
=
{}
exec
(
open
(
opcode_py
).
read
(),
opcode
)
opmap
=
opcode
[
'opmap'
]
with
open
(
outfile
,
'w'
)
as
fobj
:
fobj
.
write
(
header
)
for
name
in
opcode
[
'opname'
]:
if
name
in
opmap
:
fobj
.
write
(
"#define %-23s %3s
\n
"
%
(
name
,
opmap
[
name
]))
if
name
==
'POP_EXCEPT'
:
# Special entry for HAVE_ARGUMENT
fobj
.
write
(
"#define %-23s %3d
\n
"
%
(
'HAVE_ARGUMENT'
,
opcode
[
'HAVE_ARGUMENT'
]))
fobj
.
write
(
footer
)
if
__name__
==
'__main__'
:
main
(
sys
.
argv
[
1
],
sys
.
argv
[
2
])
Back
|
FazBrowse Home
|
New Git URL