1. 程式人生 > >Python 2.6.2的位元組碼指令集一覽

Python 2.6.2的位元組碼指令集一覽

對Python的位元組碼指令集感興趣但不知道從何下手麼?執行這段程式碼就能看到位元組碼的列表: 

Python程式碼  收藏程式碼
  1. import opcode  
  2. for op in range(len(opcode.opname)):  
  3.   print('0x%.2X(%.3d): %s' % (op, op, opcode.opname[op]))  
在Python 2.6.2上執行的輸出結果: 
(格式:操作碼的十六進位制(十進位制): 操作碼的助記名) 
Python opcode list程式碼  收藏程式碼
  1. 0x00(000): STOP_CODE  
  2. 0x01(001): POP_TOP  
  3. 0x02(002): ROT_TWO  
  4. 0x03(003): ROT_THREE  
  5. 0x04(004): DUP_TOP  
  6. 0x05(005): ROT_FOUR  
  7. 0x06(006): <6>  
  8. 0x07(007): <7>  
  9. 0x08(008): <8>  
  10. 0x09(009): NOP  
  11. 0x0A(010): UNARY_POSITIVE  
  12. 0x0B(011): UNARY_NEGATIVE  
  13. 0x0C(012): UNARY_NOT  
  14. 0x0D(013): UNARY_CONVERT  
  15. 0x0E(014): <14>  
  16. 0x0F(015): UNARY_INVERT  
  17. 0x10(016): <16>  
  18. 0x11(017): <17>  
  19. 0x12(018): LIST_APPEND  
  20. 0x13(019): BINARY_POWER  
  21. 0x14(020): BINARY_MULTIPLY  
  22. 0x15(021): BINARY_DIVIDE  
  23. 0x16(022): BINARY_MODULO  
  24. 0x17(023): BINARY_ADD  
  25. 0x18(024): BINARY_SUBTRACT  
  26. 0x19(025): BINARY_SUBSCR  
  27. 0x1A(026): BINARY_FLOOR_DIVIDE  
  28. 0x1B(027): BINARY_TRUE_DIVIDE  
  29. 0x1C(028): INPLACE_FLOOR_DIVIDE  
  30. 0x1D(029): INPLACE_TRUE_DIVIDE  
  31. 0x1E(030): SLICE+0  
  32. 0x1F(031): SLICE+1  
  33. 0x20(032): SLICE+2  
  34. 0x21(033): SLICE+3  
  35. 0x22(034): <34>  
  36. 0x23(035): <35>  
  37. 0x24(036): <36>  
  38. 0x25(037): <37>  
  39. 0x26(038): <38>  
  40. 0x27(039): <39>  
  41. 0x28(040): STORE_SLICE+0  
  42. 0x29(041): STORE_SLICE+1  
  43. 0x2A(042): STORE_SLICE+2  
  44. 0x2B(043): STORE_SLICE+3  
  45. 0x2C(044): <44>  
  46. 0x2D(045): <45>  
  47. 0x2E(046): <46>  
  48. 0x2F(047): <47>  
  49. 0x30(048): <48>  
  50. 0x31(049): <49>  
  51. 0x32(050): DELETE_SLICE+0  
  52. 0x33(051): DELETE_SLICE+1  
  53. 0x34(052): DELETE_SLICE+2  
  54. 0x35(053): DELETE_SLICE+3  
  55. 0x36(054): STORE_MAP  
  56. 0x37(055): INPLACE_ADD  
  57. 0x38(056): INPLACE_SUBTRACT  
  58. 0x39(057): INPLACE_MULTIPLY  
  59. 0x3A(058): INPLACE_DIVIDE  
  60. 0x3B(059): INPLACE_MODULO  
  61. 0x3C(060): STORE_SUBSCR  
  62. 0x3D(061): DELETE_SUBSCR  
  63. 0x3E(062): BINARY_LSHIFT  
  64. 0x3F(063): BINARY_RSHIFT  
  65. 0x40(064): BINARY_AND  
  66. 0x41(065): BINARY_XOR  
  67. 0x42(066): BINARY_OR  
  68. 0x43(067): INPLACE_POWER  
  69. 0x44(068): GET_ITER  
  70. 0x45(069): <69>  
  71. 0x46(070): PRINT_EXPR  
  72. 0x47(071): PRINT_ITEM  
  73. 0x48(072): PRINT_NEWLINE  
  74. 0x49(073): PRINT_ITEM_TO  
  75. 0x4A(074): PRINT_NEWLINE_TO  
  76. 0x4B(075): INPLACE_LSHIFT  
  77. 0x4C(076): INPLACE_RSHIFT  
  78. 0x4D(077): INPLACE_AND  
  79. 0x4E(078): INPLACE_XOR  
  80. 0x4F(079): INPLACE_OR  
  81. 0x50(080): BREAK_LOOP  
  82. 0x51(081): WITH_CLEANUP  
  83. 0x52(082): LOAD_LOCALS  
  84. 0x53(083): RETURN_VALUE  
  85. 0x54(084): IMPORT_STAR  
  86. 0x55(085): EXEC_STMT  
  87. 0x56(086): YIELD_VALUE  
  88. 0x57(087): POP_BLOCK  
  89. 0x58(088): END_FINALLY  
  90. 0x59(089): BUILD_CLASS  
  91. 0x5A(090): STORE_NAME  
  92. 0x5B(091): DELETE_NAME  
  93. 0x5C(092): UNPACK_SEQUENCE  
  94. 0x5D(093): FOR_ITER  
  95. 0x5E(094): <94>  
  96. 0x5F(095): STORE_ATTR  
  97. 0x60(096): DELETE_ATTR  
  98. 0x61(097): STORE_GLOBAL  
  99. 0x62(098): DELETE_GLOBAL  
  100. 0x63(099): DUP_TOPX  
  101. 0x64(100): LOAD_CONST  
  102. 0x65(101): LOAD_NAME  
  103. 0x66(102): BUILD_TUPLE  
  104. 0x67(103): BUILD_LIST  
  105. 0x68(104): BUILD_MAP  
  106. 0x69(105): LOAD_ATTR  
  107. 0x6A(106): COMPARE_OP  
  108. 0x6B(107): IMPORT_NAME  
  109. 0x6C(108): IMPORT_FROM  
  110. 0x6D(109): <109>  
  111. 0x6E(110): JUMP_FORWARD  
  112. 0x6F(111): JUMP_IF_FALSE  
  113. 0x70(112): JUMP_IF_TRUE  
  114. 0x71(113): JUMP_ABSOLUTE  
  115. 0x72(114): <114>  
  116. 0x73(115): <115>  
  117. 0x74(116): LOAD_GLOBAL  
  118. 0x75(117): <117>  
  119. 0x76(118): <118>  
  120. 0x77(119): CONTINUE_LOOP  
  121. 0x78(120): SETUP_LOOP  
  122. 0x79(121): SETUP_EXCEPT  
  123. 0x7A(122): SETUP_FINALLY  
  124. 0x7B(123): <123>  
  125. 0x7C(124): LOAD_FAST  
  126. 0x7D(125): STORE_FAST  
  127. 0x7E(126): DELETE_FAST  
  128. 0x7F(127): <127>  
  129. 0x80(128): <128>  
  130. 0x81(129): <129>  
  131. 0x82(130): RAISE_VARARGS  
  132. 0x83(131): CALL_FUNCTION  
  133. 0x84(132): MAKE_FUNCTION  
  134. 0x85(133): BUILD_SLICE  
  135. 0x86(134): MAKE_CLOSURE  
  136. 0x87(135): LOAD_CLOSURE  
  137. 0x88(136): LOAD_DEREF  
  138. 0x89(137): STORE_DEREF  
  139. 0x8A(138): <138>  
  140. 0x8B(139): <139>  
  141. 0x8C(140): CALL_FUNCTION_VAR  
  142. 0x8D(141): CALL_FUNCTION_KW  
  143. 0x8E(142): CALL_FUNCTION_VAR_KW  
  144. 0x8F(143): EXTENDED_ARG  
  145. 0x90(144): <144>  
  146. 0x91(145): <145>  
  147. 0x92(146): <146>  
  148. 0x93(147): <147>  
  149. 0x94(148): <148>  
  150. 0x95(149): <149>  
  151. 0x96(150): <150>  
  152. 0x97(151): <151>  
  153. 0x98(152): <152>  
  154. 0x99(153): <153>  
  155. 0x9A(154): <154>  
  156. 0x9B(155): <155>  
  157. 0x9C(156): <156>  
  158. 0x9D(157): <157>  
  159. 0x9E(158): <158>  
  160. 0x9F(159): <159>  
  161. 0xA0(160): <160>  
  162. 0xA1(161): <161>  
  163. 0xA2(162): <162>  
  164. 0xA3(163): <163>  
  165. 0xA4(164): <164>  
  166. 0xA5(165): <165>  
  167. 0xA6(166): <166>  
  168. 0xA7(167): <167>  
  169. 0xA8(168): <168>  
  170. 0xA9(169): <169>  
  171. 0xAA(170): <170>