~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.12-docs-html/_sources/library/dis.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
:mod:`dis` --- Disassembler for Python bytecode
 
2
===============================================
 
3
 
 
4
.. module:: dis
 
5
   :synopsis: Disassembler for Python bytecode.
 
6
 
 
7
**Source code:** :source:`Lib/dis.py`
 
8
 
 
9
--------------
 
10
 
 
11
The :mod:`dis` module supports the analysis of CPython :term:`bytecode` by
 
12
disassembling it. The CPython bytecode which this module takes as an input is
 
13
defined in the file :file:`Include/opcode.h` and used by the compiler and the
 
14
interpreter.
 
15
 
 
16
.. impl-detail::
 
17
 
 
18
   Bytecode is an implementation detail of the CPython interpreter!  No
 
19
   guarantees are made that bytecode will not be added, removed, or changed
 
20
   between versions of Python.  Use of this module should not be considered to
 
21
   work across Python VMs or Python releases.
 
22
 
 
23
Example: Given the function :func:`myfunc`::
 
24
 
 
25
   def myfunc(alist):
 
26
       return len(alist)
 
27
 
 
28
the following command can be used to get the disassembly of :func:`myfunc`::
 
29
 
 
30
   >>> dis.dis(myfunc)
 
31
     2           0 LOAD_GLOBAL              0 (len)
 
32
                 3 LOAD_FAST                0 (alist)
 
33
                 6 CALL_FUNCTION            1
 
34
                 9 RETURN_VALUE
 
35
 
 
36
(The "2" is a line number).
 
37
 
 
38
The :mod:`dis` module defines the following functions and constants:
 
39
 
 
40
 
 
41
.. function:: dis([bytesource])
 
42
 
 
43
   Disassemble the *bytesource* object. *bytesource* can denote either a module,
 
44
   a class, a method, a function, or a code object.  For a module, it
 
45
   disassembles all functions.  For a class, it disassembles all methods.  For a
 
46
   single code sequence, it prints one line per bytecode instruction.  If no
 
47
   object is provided, it disassembles the last traceback.
 
48
 
 
49
 
 
50
.. function:: distb([tb])
 
51
 
 
52
   Disassembles the top-of-stack function of a traceback, using the last
 
53
   traceback if none was passed.  The instruction causing the exception is
 
54
   indicated.
 
55
 
 
56
 
 
57
.. function:: disassemble(code[, lasti])
 
58
 
 
59
   Disassembles a code object, indicating the last instruction if *lasti* was
 
60
   provided.  The output is divided in the following columns:
 
61
 
 
62
   #. the line number, for the first instruction of each line
 
63
   #. the current instruction, indicated as ``-->``,
 
64
   #. a labelled instruction, indicated with ``>>``,
 
65
   #. the address of the instruction,
 
66
   #. the operation code name,
 
67
   #. operation parameters, and
 
68
   #. interpretation of the parameters in parentheses.
 
69
 
 
70
   The parameter interpretation recognizes local and global variable names,
 
71
   constant values, branch targets, and compare operators.
 
72
 
 
73
 
 
74
.. function:: disco(code[, lasti])
 
75
 
 
76
   A synonym for :func:`disassemble`.  It is more convenient to type, and kept
 
77
   for compatibility with earlier Python releases.
 
78
 
 
79
 
 
80
.. function:: findlinestarts(code)
 
81
 
 
82
   This generator function uses the ``co_firstlineno`` and ``co_lnotab``
 
83
   attributes of the code object *code* to find the offsets which are starts of
 
84
   lines in the source code.  They are generated as ``(offset, lineno)`` pairs.
 
85
 
 
86
 
 
87
.. function:: findlabels(code)
 
88
 
 
89
   Detect all offsets in the code object *code* which are jump targets, and
 
90
   return a list of these offsets.
 
91
 
 
92
 
 
93
.. data:: opname
 
94
 
 
95
   Sequence of operation names, indexable using the bytecode.
 
96
 
 
97
 
 
98
.. data:: opmap
 
99
 
 
100
   Dictionary mapping operation names to bytecodes.
 
101
 
 
102
 
 
103
.. data:: cmp_op
 
104
 
 
105
   Sequence of all compare operation names.
 
106
 
 
107
 
 
108
.. data:: hasconst
 
109
 
 
110
   Sequence of bytecodes that have a constant parameter.
 
111
 
 
112
 
 
113
.. data:: hasfree
 
114
 
 
115
   Sequence of bytecodes that access a free variable.
 
116
 
 
117
 
 
118
.. data:: hasname
 
119
 
 
120
   Sequence of bytecodes that access an attribute by name.
 
121
 
 
122
 
 
123
.. data:: hasjrel
 
124
 
 
125
   Sequence of bytecodes that have a relative jump target.
 
126
 
 
127
 
 
128
.. data:: hasjabs
 
129
 
 
130
   Sequence of bytecodes that have an absolute jump target.
 
131
 
 
132
 
 
133
.. data:: haslocal
 
134
 
 
135
   Sequence of bytecodes that access a local variable.
 
136
 
 
137
 
 
138
.. data:: hascompare
 
139
 
 
140
   Sequence of bytecodes of Boolean operations.
 
141
 
 
142
 
 
143
.. _bytecodes:
 
144
 
 
145
Python Bytecode Instructions
 
146
----------------------------
 
147
 
 
148
The Python compiler currently generates the following bytecode instructions.
 
149
 
 
150
 
 
151
.. opcode:: STOP_CODE ()
 
152
 
 
153
   Indicates end-of-code to the compiler, not used by the interpreter.
 
154
 
 
155
 
 
156
.. opcode:: NOP ()
 
157
 
 
158
   Do nothing code.  Used as a placeholder by the bytecode optimizer.
 
159
 
 
160
 
 
161
.. opcode:: POP_TOP ()
 
162
 
 
163
   Removes the top-of-stack (TOS) item.
 
164
 
 
165
 
 
166
.. opcode:: ROT_TWO ()
 
167
 
 
168
   Swaps the two top-most stack items.
 
169
 
 
170
 
 
171
.. opcode:: ROT_THREE ()
 
172
 
 
173
   Lifts second and third stack item one position up, moves top down to position
 
174
   three.
 
175
 
 
176
 
 
177
.. opcode:: ROT_FOUR ()
 
178
 
 
179
   Lifts second, third and forth stack item one position up, moves top down to
 
180
   position four.
 
181
 
 
182
 
 
183
.. opcode:: DUP_TOP ()
 
184
 
 
185
   Duplicates the reference on top of the stack.
 
186
 
 
187
Unary Operations take the top of the stack, apply the operation, and push the
 
188
result back on the stack.
 
189
 
 
190
 
 
191
.. opcode:: UNARY_POSITIVE ()
 
192
 
 
193
   Implements ``TOS = +TOS``.
 
194
 
 
195
 
 
196
.. opcode:: UNARY_NEGATIVE ()
 
197
 
 
198
   Implements ``TOS = -TOS``.
 
199
 
 
200
 
 
201
.. opcode:: UNARY_NOT ()
 
202
 
 
203
   Implements ``TOS = not TOS``.
 
204
 
 
205
 
 
206
.. opcode:: UNARY_CONVERT ()
 
207
 
 
208
   Implements ``TOS = `TOS```.
 
209
 
 
210
 
 
211
.. opcode:: UNARY_INVERT ()
 
212
 
 
213
   Implements ``TOS = ~TOS``.
 
214
 
 
215
 
 
216
.. opcode:: GET_ITER ()
 
217
 
 
218
   Implements ``TOS = iter(TOS)``.
 
219
 
 
220
Binary operations remove the top of the stack (TOS) and the second top-most
 
221
stack item (TOS1) from the stack.  They perform the operation, and put the
 
222
result back on the stack.
 
223
 
 
224
 
 
225
.. opcode:: BINARY_POWER ()
 
226
 
 
227
   Implements ``TOS = TOS1 ** TOS``.
 
228
 
 
229
 
 
230
.. opcode:: BINARY_MULTIPLY ()
 
231
 
 
232
   Implements ``TOS = TOS1 * TOS``.
 
233
 
 
234
 
 
235
.. opcode:: BINARY_DIVIDE ()
 
236
 
 
237
   Implements ``TOS = TOS1 / TOS`` when ``from __future__ import division`` is
 
238
   not in effect.
 
239
 
 
240
 
 
241
.. opcode:: BINARY_FLOOR_DIVIDE ()
 
242
 
 
243
   Implements ``TOS = TOS1 // TOS``.
 
244
 
 
245
 
 
246
.. opcode:: BINARY_TRUE_DIVIDE ()
 
247
 
 
248
   Implements ``TOS = TOS1 / TOS`` when ``from __future__ import division`` is
 
249
   in effect.
 
250
 
 
251
 
 
252
.. opcode:: BINARY_MODULO ()
 
253
 
 
254
   Implements ``TOS = TOS1 % TOS``.
 
255
 
 
256
 
 
257
.. opcode:: BINARY_ADD ()
 
258
 
 
259
   Implements ``TOS = TOS1 + TOS``.
 
260
 
 
261
 
 
262
.. opcode:: BINARY_SUBTRACT ()
 
263
 
 
264
   Implements ``TOS = TOS1 - TOS``.
 
265
 
 
266
 
 
267
.. opcode:: BINARY_SUBSCR ()
 
268
 
 
269
   Implements ``TOS = TOS1[TOS]``.
 
270
 
 
271
 
 
272
.. opcode:: BINARY_LSHIFT ()
 
273
 
 
274
   Implements ``TOS = TOS1 << TOS``.
 
275
 
 
276
 
 
277
.. opcode:: BINARY_RSHIFT ()
 
278
 
 
279
   Implements ``TOS = TOS1 >> TOS``.
 
280
 
 
281
 
 
282
.. opcode:: BINARY_AND ()
 
283
 
 
284
   Implements ``TOS = TOS1 & TOS``.
 
285
 
 
286
 
 
287
.. opcode:: BINARY_XOR ()
 
288
 
 
289
   Implements ``TOS = TOS1 ^ TOS``.
 
290
 
 
291
 
 
292
.. opcode:: BINARY_OR ()
 
293
 
 
294
   Implements ``TOS = TOS1 | TOS``.
 
295
 
 
296
In-place operations are like binary operations, in that they remove TOS and
 
297
TOS1, and push the result back on the stack, but the operation is done in-place
 
298
when TOS1 supports it, and the resulting TOS may be (but does not have to be)
 
299
the original TOS1.
 
300
 
 
301
 
 
302
.. opcode:: INPLACE_POWER ()
 
303
 
 
304
   Implements in-place ``TOS = TOS1 ** TOS``.
 
305
 
 
306
 
 
307
.. opcode:: INPLACE_MULTIPLY ()
 
308
 
 
309
   Implements in-place ``TOS = TOS1 * TOS``.
 
310
 
 
311
 
 
312
.. opcode:: INPLACE_DIVIDE ()
 
313
 
 
314
   Implements in-place ``TOS = TOS1 / TOS`` when ``from __future__ import
 
315
   division`` is not in effect.
 
316
 
 
317
 
 
318
.. opcode:: INPLACE_FLOOR_DIVIDE ()
 
319
 
 
320
   Implements in-place ``TOS = TOS1 // TOS``.
 
321
 
 
322
 
 
323
.. opcode:: INPLACE_TRUE_DIVIDE ()
 
324
 
 
325
   Implements in-place ``TOS = TOS1 / TOS`` when ``from __future__ import
 
326
   division`` is in effect.
 
327
 
 
328
 
 
329
.. opcode:: INPLACE_MODULO ()
 
330
 
 
331
   Implements in-place ``TOS = TOS1 % TOS``.
 
332
 
 
333
 
 
334
.. opcode:: INPLACE_ADD ()
 
335
 
 
336
   Implements in-place ``TOS = TOS1 + TOS``.
 
337
 
 
338
 
 
339
.. opcode:: INPLACE_SUBTRACT ()
 
340
 
 
341
   Implements in-place ``TOS = TOS1 - TOS``.
 
342
 
 
343
 
 
344
.. opcode:: INPLACE_LSHIFT ()
 
345
 
 
346
   Implements in-place ``TOS = TOS1 << TOS``.
 
347
 
 
348
 
 
349
.. opcode:: INPLACE_RSHIFT ()
 
350
 
 
351
   Implements in-place ``TOS = TOS1 >> TOS``.
 
352
 
 
353
 
 
354
.. opcode:: INPLACE_AND ()
 
355
 
 
356
   Implements in-place ``TOS = TOS1 & TOS``.
 
357
 
 
358
 
 
359
.. opcode:: INPLACE_XOR ()
 
360
 
 
361
   Implements in-place ``TOS = TOS1 ^ TOS``.
 
362
 
 
363
 
 
364
.. opcode:: INPLACE_OR ()
 
365
 
 
366
   Implements in-place ``TOS = TOS1 | TOS``.
 
367
 
 
368
The slice opcodes take up to three parameters.
 
369
 
 
370
 
 
371
.. opcode:: SLICE+0 ()
 
372
 
 
373
   Implements ``TOS = TOS[:]``.
 
374
 
 
375
 
 
376
.. opcode:: SLICE+1 ()
 
377
 
 
378
   Implements ``TOS = TOS1[TOS:]``.
 
379
 
 
380
 
 
381
.. opcode:: SLICE+2 ()
 
382
 
 
383
   Implements ``TOS = TOS1[:TOS]``.
 
384
 
 
385
 
 
386
.. opcode:: SLICE+3 ()
 
387
 
 
388
   Implements ``TOS = TOS2[TOS1:TOS]``.
 
389
 
 
390
Slice assignment needs even an additional parameter.  As any statement, they put
 
391
nothing on the stack.
 
392
 
 
393
 
 
394
.. opcode:: STORE_SLICE+0 ()
 
395
 
 
396
   Implements ``TOS[:] = TOS1``.
 
397
 
 
398
 
 
399
.. opcode:: STORE_SLICE+1 ()
 
400
 
 
401
   Implements ``TOS1[TOS:] = TOS2``.
 
402
 
 
403
 
 
404
.. opcode:: STORE_SLICE+2 ()
 
405
 
 
406
   Implements ``TOS1[:TOS] = TOS2``.
 
407
 
 
408
 
 
409
.. opcode:: STORE_SLICE+3 ()
 
410
 
 
411
   Implements ``TOS2[TOS1:TOS] = TOS3``.
 
412
 
 
413
 
 
414
.. opcode:: DELETE_SLICE+0 ()
 
415
 
 
416
   Implements ``del TOS[:]``.
 
417
 
 
418
 
 
419
.. opcode:: DELETE_SLICE+1 ()
 
420
 
 
421
   Implements ``del TOS1[TOS:]``.
 
422
 
 
423
 
 
424
.. opcode:: DELETE_SLICE+2 ()
 
425
 
 
426
   Implements ``del TOS1[:TOS]``.
 
427
 
 
428
 
 
429
.. opcode:: DELETE_SLICE+3 ()
 
430
 
 
431
   Implements ``del TOS2[TOS1:TOS]``.
 
432
 
 
433
 
 
434
.. opcode:: STORE_SUBSCR ()
 
435
 
 
436
   Implements ``TOS1[TOS] = TOS2``.
 
437
 
 
438
 
 
439
.. opcode:: DELETE_SUBSCR ()
 
440
 
 
441
   Implements ``del TOS1[TOS]``.
 
442
 
 
443
Miscellaneous opcodes.
 
444
 
 
445
 
 
446
.. opcode:: PRINT_EXPR ()
 
447
 
 
448
   Implements the expression statement for the interactive mode.  TOS is removed
 
449
   from the stack and printed.  In non-interactive mode, an expression statement
 
450
   is terminated with :opcode:`POP_TOP`.
 
451
 
 
452
 
 
453
.. opcode:: PRINT_ITEM ()
 
454
 
 
455
   Prints TOS to the file-like object bound to ``sys.stdout``.  There is one
 
456
   such instruction for each item in the :keyword:`print` statement.
 
457
 
 
458
 
 
459
.. opcode:: PRINT_ITEM_TO ()
 
460
 
 
461
   Like ``PRINT_ITEM``, but prints the item second from TOS to the file-like
 
462
   object at TOS.  This is used by the extended print statement.
 
463
 
 
464
 
 
465
.. opcode:: PRINT_NEWLINE ()
 
466
 
 
467
   Prints a new line on ``sys.stdout``.  This is generated as the last operation
 
468
   of a :keyword:`print` statement, unless the statement ends with a comma.
 
469
 
 
470
 
 
471
.. opcode:: PRINT_NEWLINE_TO ()
 
472
 
 
473
   Like ``PRINT_NEWLINE``, but prints the new line on the file-like object on
 
474
   the TOS.  This is used by the extended print statement.
 
475
 
 
476
 
 
477
.. opcode:: BREAK_LOOP ()
 
478
 
 
479
   Terminates a loop due to a :keyword:`break` statement.
 
480
 
 
481
 
 
482
.. opcode:: CONTINUE_LOOP (target)
 
483
 
 
484
   Continues a loop due to a :keyword:`continue` statement.  *target* is the
 
485
   address to jump to (which should be a :opcode:`FOR_ITER` instruction).
 
486
 
 
487
 
 
488
.. opcode:: LIST_APPEND (i)
 
489
 
 
490
   Calls ``list.append(TOS[-i], TOS)``.  Used to implement list comprehensions.
 
491
   While the appended value is popped off, the list object remains on the stack
 
492
   so that it is available for further iterations of the loop.
 
493
 
 
494
 
 
495
.. opcode:: LOAD_LOCALS ()
 
496
 
 
497
   Pushes a reference to the locals of the current scope on the stack. This is
 
498
   used in the code for a class definition: After the class body is evaluated,
 
499
   the locals are passed to the class definition.
 
500
 
 
501
 
 
502
.. opcode:: RETURN_VALUE ()
 
503
 
 
504
   Returns with TOS to the caller of the function.
 
505
 
 
506
 
 
507
.. opcode:: YIELD_VALUE ()
 
508
 
 
509
   Pops ``TOS`` and yields it from a :term:`generator`.
 
510
 
 
511
 
 
512
.. opcode:: IMPORT_STAR ()
 
513
 
 
514
   Loads all symbols not starting with ``'_'`` directly from the module TOS to
 
515
   the local namespace. The module is popped after loading all names. This
 
516
   opcode implements ``from module import *``.
 
517
 
 
518
 
 
519
.. opcode:: EXEC_STMT ()
 
520
 
 
521
   Implements ``exec TOS2,TOS1,TOS``.  The compiler fills missing optional
 
522
   parameters with ``None``.
 
523
 
 
524
 
 
525
.. opcode:: POP_BLOCK ()
 
526
 
 
527
   Removes one block from the block stack.  Per frame, there is a stack of
 
528
   blocks, denoting nested loops, try statements, and such.
 
529
 
 
530
 
 
531
.. opcode:: END_FINALLY ()
 
532
 
 
533
   Terminates a :keyword:`finally` clause.  The interpreter recalls whether the
 
534
   exception has to be re-raised, or whether the function returns, and continues
 
535
   with the outer-next block.
 
536
 
 
537
 
 
538
.. opcode:: BUILD_CLASS ()
 
539
 
 
540
   Creates a new class object.  TOS is the methods dictionary, TOS1 the tuple of
 
541
   the names of the base classes, and TOS2 the class name.
 
542
 
 
543
 
 
544
.. opcode:: SETUP_WITH (delta)
 
545
 
 
546
   This opcode performs several operations before a with block starts.  First,
 
547
   it loads :meth:`~object.__exit__` from the context manager and pushes it onto
 
548
   the stack for later use by :opcode:`WITH_CLEANUP`.  Then,
 
549
   :meth:`~object.__enter__` is called, and a finally block pointing to *delta*
 
550
   is pushed.  Finally, the result of calling the enter method is pushed onto
 
551
   the stack.  The next opcode will either ignore it (:opcode:`POP_TOP`), or
 
552
   store it in (a) variable(s) (:opcode:`STORE_FAST`, :opcode:`STORE_NAME`, or
 
553
   :opcode:`UNPACK_SEQUENCE`).
 
554
 
 
555
 
 
556
.. opcode:: WITH_CLEANUP ()
 
557
 
 
558
   Cleans up the stack when a :keyword:`with` statement block exits.  On top of
 
559
   the stack are 1--3 values indicating how/why the finally clause was entered:
 
560
 
 
561
   * TOP = ``None``
 
562
   * (TOP, SECOND) = (``WHY_{RETURN,CONTINUE}``), retval
 
563
   * TOP = ``WHY_*``; no retval below it
 
564
   * (TOP, SECOND, THIRD) = exc_info()
 
565
 
 
566
   Under them is EXIT, the context manager's :meth:`__exit__` bound method.
 
567
 
 
568
   In the last case, ``EXIT(TOP, SECOND, THIRD)`` is called, otherwise
 
569
   ``EXIT(None, None, None)``.
 
570
 
 
571
   EXIT is removed from the stack, leaving the values above it in the same
 
572
   order. In addition, if the stack represents an exception, *and* the function
 
573
   call returns a 'true' value, this information is "zapped", to prevent
 
574
   ``END_FINALLY`` from re-raising the exception.  (But non-local gotos should
 
575
   still be resumed.)
 
576
 
 
577
   .. XXX explain the WHY stuff!
 
578
 
 
579
 
 
580
All of the following opcodes expect arguments.  An argument is two bytes, with
 
581
the more significant byte last.
 
582
 
 
583
.. opcode:: STORE_NAME (namei)
 
584
 
 
585
   Implements ``name = TOS``. *namei* is the index of *name* in the attribute
 
586
   :attr:`co_names` of the code object. The compiler tries to use ``STORE_FAST``
 
587
   or ``STORE_GLOBAL`` if possible.
 
588
 
 
589
 
 
590
.. opcode:: DELETE_NAME (namei)
 
591
 
 
592
   Implements ``del name``, where *namei* is the index into :attr:`co_names`
 
593
   attribute of the code object.
 
594
 
 
595
 
 
596
.. opcode:: UNPACK_SEQUENCE (count)
 
597
 
 
598
   Unpacks TOS into *count* individual values, which are put onto the stack
 
599
   right-to-left.
 
600
 
 
601
 
 
602
.. opcode:: DUP_TOPX (count)
 
603
 
 
604
   Duplicate *count* items, keeping them in the same order. Due to
 
605
   implementation limits, *count* should be between 1 and 5 inclusive.
 
606
 
 
607
 
 
608
.. opcode:: STORE_ATTR (namei)
 
609
 
 
610
   Implements ``TOS.name = TOS1``, where *namei* is the index of name in
 
611
   :attr:`co_names`.
 
612
 
 
613
 
 
614
.. opcode:: DELETE_ATTR (namei)
 
615
 
 
616
   Implements ``del TOS.name``, using *namei* as index into :attr:`co_names`.
 
617
 
 
618
 
 
619
.. opcode:: STORE_GLOBAL (namei)
 
620
 
 
621
   Works as ``STORE_NAME``, but stores the name as a global.
 
622
 
 
623
 
 
624
.. opcode:: DELETE_GLOBAL (namei)
 
625
 
 
626
   Works as ``DELETE_NAME``, but deletes a global name.
 
627
 
 
628
 
 
629
.. opcode:: LOAD_CONST (consti)
 
630
 
 
631
   Pushes ``co_consts[consti]`` onto the stack.
 
632
 
 
633
 
 
634
.. opcode:: LOAD_NAME (namei)
 
635
 
 
636
   Pushes the value associated with ``co_names[namei]`` onto the stack.
 
637
 
 
638
 
 
639
.. opcode:: BUILD_TUPLE (count)
 
640
 
 
641
   Creates a tuple consuming *count* items from the stack, and pushes the
 
642
   resulting tuple onto the stack.
 
643
 
 
644
 
 
645
.. opcode:: BUILD_LIST (count)
 
646
 
 
647
   Works as ``BUILD_TUPLE``, but creates a list.
 
648
 
 
649
 
 
650
.. opcode:: BUILD_SET (count)
 
651
 
 
652
   Works as ``BUILD_TUPLE``, but creates a set.
 
653
 
 
654
   .. versionadded:: 2.7
 
655
 
 
656
 
 
657
.. opcode:: BUILD_MAP (count)
 
658
 
 
659
   Pushes a new dictionary object onto the stack.  The dictionary is pre-sized
 
660
   to hold *count* entries.
 
661
 
 
662
 
 
663
.. opcode:: LOAD_ATTR (namei)
 
664
 
 
665
   Replaces TOS with ``getattr(TOS, co_names[namei])``.
 
666
 
 
667
 
 
668
.. opcode:: COMPARE_OP (opname)
 
669
 
 
670
   Performs a Boolean operation.  The operation name can be found in
 
671
   ``cmp_op[opname]``.
 
672
 
 
673
 
 
674
.. opcode:: IMPORT_NAME (namei)
 
675
 
 
676
   Imports the module ``co_names[namei]``.  TOS and TOS1 are popped and provide
 
677
   the *fromlist* and *level* arguments of :func:`__import__`.  The module
 
678
   object is pushed onto the stack.  The current namespace is not affected: for
 
679
   a proper import statement, a subsequent ``STORE_FAST`` instruction modifies
 
680
   the namespace.
 
681
 
 
682
 
 
683
.. opcode:: IMPORT_FROM (namei)
 
684
 
 
685
   Loads the attribute ``co_names[namei]`` from the module found in TOS. The
 
686
   resulting object is pushed onto the stack, to be subsequently stored by a
 
687
   ``STORE_FAST`` instruction.
 
688
 
 
689
 
 
690
.. opcode:: JUMP_FORWARD (delta)
 
691
 
 
692
   Increments bytecode counter by *delta*.
 
693
 
 
694
 
 
695
.. opcode:: POP_JUMP_IF_TRUE (target)
 
696
 
 
697
   If TOS is true, sets the bytecode counter to *target*.  TOS is popped.
 
698
 
 
699
 
 
700
.. opcode:: POP_JUMP_IF_FALSE (target)
 
701
 
 
702
   If TOS is false, sets the bytecode counter to *target*.  TOS is popped.
 
703
 
 
704
 
 
705
.. opcode:: JUMP_IF_TRUE_OR_POP (target)
 
706
 
 
707
   If TOS is true, sets the bytecode counter to *target* and leaves TOS on the
 
708
   stack.  Otherwise (TOS is false), TOS is popped.
 
709
 
 
710
 
 
711
.. opcode:: JUMP_IF_FALSE_OR_POP (target)
 
712
 
 
713
   If TOS is false, sets the bytecode counter to *target* and leaves TOS on the
 
714
   stack.  Otherwise (TOS is true), TOS is popped.
 
715
 
 
716
 
 
717
.. opcode:: JUMP_ABSOLUTE (target)
 
718
 
 
719
   Set bytecode counter to *target*.
 
720
 
 
721
 
 
722
.. opcode:: FOR_ITER (delta)
 
723
 
 
724
   ``TOS`` is an :term:`iterator`.  Call its :meth:`!next` method.  If this
 
725
   yields a new value, push it on the stack (leaving the iterator below it).  If
 
726
   the iterator indicates it is exhausted ``TOS`` is popped, and the bytecode
 
727
   counter is incremented by *delta*.
 
728
 
 
729
 
 
730
.. opcode:: LOAD_GLOBAL (namei)
 
731
 
 
732
   Loads the global named ``co_names[namei]`` onto the stack.
 
733
 
 
734
 
 
735
.. opcode:: SETUP_LOOP (delta)
 
736
 
 
737
   Pushes a block for a loop onto the block stack.  The block spans from the
 
738
   current instruction with a size of *delta* bytes.
 
739
 
 
740
 
 
741
.. opcode:: SETUP_EXCEPT (delta)
 
742
 
 
743
   Pushes a try block from a try-except clause onto the block stack. *delta*
 
744
   points to the first except block.
 
745
 
 
746
 
 
747
.. opcode:: SETUP_FINALLY (delta)
 
748
 
 
749
   Pushes a try block from a try-except clause onto the block stack. *delta*
 
750
   points to the finally block.
 
751
 
 
752
.. opcode:: STORE_MAP ()
 
753
 
 
754
   Store a key and value pair in a dictionary.  Pops the key and value while
 
755
   leaving the dictionary on the stack.
 
756
 
 
757
.. opcode:: LOAD_FAST (var_num)
 
758
 
 
759
   Pushes a reference to the local ``co_varnames[var_num]`` onto the stack.
 
760
 
 
761
 
 
762
.. opcode:: STORE_FAST (var_num)
 
763
 
 
764
   Stores TOS into the local ``co_varnames[var_num]``.
 
765
 
 
766
 
 
767
.. opcode:: DELETE_FAST (var_num)
 
768
 
 
769
   Deletes local ``co_varnames[var_num]``.
 
770
 
 
771
 
 
772
.. opcode:: LOAD_CLOSURE (i)
 
773
 
 
774
   Pushes a reference to the cell contained in slot *i* of the cell and free
 
775
   variable storage.  The name of the variable is ``co_cellvars[i]`` if *i* is
 
776
   less than the length of *co_cellvars*.  Otherwise it is ``co_freevars[i -
 
777
   len(co_cellvars)]``.
 
778
 
 
779
 
 
780
.. opcode:: LOAD_DEREF (i)
 
781
 
 
782
   Loads the cell contained in slot *i* of the cell and free variable storage.
 
783
   Pushes a reference to the object the cell contains on the stack.
 
784
 
 
785
 
 
786
.. opcode:: STORE_DEREF (i)
 
787
 
 
788
   Stores TOS into the cell contained in slot *i* of the cell and free variable
 
789
   storage.
 
790
 
 
791
 
 
792
.. opcode:: SET_LINENO (lineno)
 
793
 
 
794
   This opcode is obsolete.
 
795
 
 
796
 
 
797
.. opcode:: RAISE_VARARGS (argc)
 
798
 
 
799
   Raises an exception. *argc* indicates the number of parameters to the raise
 
800
   statement, ranging from 0 to 3.  The handler will find the traceback as TOS2,
 
801
   the parameter as TOS1, and the exception as TOS.
 
802
 
 
803
 
 
804
.. opcode:: CALL_FUNCTION (argc)
 
805
 
 
806
   Calls a function.  The low byte of *argc* indicates the number of positional
 
807
   parameters, the high byte the number of keyword parameters. On the stack, the
 
808
   opcode finds the keyword parameters first.  For each keyword argument, the
 
809
   value is on top of the key.  Below the keyword parameters, the positional
 
810
   parameters are on the stack, with the right-most parameter on top.  Below the
 
811
   parameters, the function object to call is on the stack.  Pops all function
 
812
   arguments, and the function itself off the stack, and pushes the return
 
813
   value.
 
814
 
 
815
 
 
816
.. opcode:: MAKE_FUNCTION (argc)
 
817
 
 
818
   Pushes a new function object on the stack.  TOS is the code associated with
 
819
   the function.  The function object is defined to have *argc* default
 
820
   parameters, which are found below TOS.
 
821
 
 
822
 
 
823
.. opcode:: MAKE_CLOSURE (argc)
 
824
 
 
825
   Creates a new function object, sets its *func_closure* slot, and pushes it on
 
826
   the stack.  TOS is the code associated with the function, TOS1 the tuple
 
827
   containing cells for the closure's free variables.  The function also has
 
828
   *argc* default parameters, which are found below the cells.
 
829
 
 
830
 
 
831
.. opcode:: BUILD_SLICE (argc)
 
832
 
 
833
   .. index:: builtin: slice
 
834
 
 
835
   Pushes a slice object on the stack.  *argc* must be 2 or 3.  If it is 2,
 
836
   ``slice(TOS1, TOS)`` is pushed; if it is 3, ``slice(TOS2, TOS1, TOS)`` is
 
837
   pushed. See the :func:`slice` built-in function for more information.
 
838
 
 
839
 
 
840
.. opcode:: EXTENDED_ARG (ext)
 
841
 
 
842
   Prefixes any opcode which has an argument too big to fit into the default two
 
843
   bytes.  *ext* holds two additional bytes which, taken together with the
 
844
   subsequent opcode's argument, comprise a four-byte argument, *ext* being the
 
845
   two most-significant bytes.
 
846
 
 
847
 
 
848
.. opcode:: CALL_FUNCTION_VAR (argc)
 
849
 
 
850
   Calls a function. *argc* is interpreted as in :opcode:`CALL_FUNCTION`. The
 
851
   top element on the stack contains the variable argument list, followed by
 
852
   keyword and positional arguments.
 
853
 
 
854
 
 
855
.. opcode:: CALL_FUNCTION_KW (argc)
 
856
 
 
857
   Calls a function. *argc* is interpreted as in :opcode:`CALL_FUNCTION`. The
 
858
   top element on the stack contains the keyword arguments dictionary, followed
 
859
   by explicit keyword and positional arguments.
 
860
 
 
861
 
 
862
.. opcode:: CALL_FUNCTION_VAR_KW (argc)
 
863
 
 
864
   Calls a function. *argc* is interpreted as in :opcode:`CALL_FUNCTION`.  The
 
865
   top element on the stack contains the keyword arguments dictionary, followed
 
866
   by the variable-arguments tuple, followed by explicit keyword and positional
 
867
   arguments.
 
868
 
 
869
 
 
870
.. opcode:: HAVE_ARGUMENT ()
 
871
 
 
872
   This is not really an opcode.  It identifies the dividing line between
 
873
   opcodes which don't take arguments ``< HAVE_ARGUMENT`` and those which do
 
874
   ``>= HAVE_ARGUMENT``.