Title: Instruction-Offsets vs Byte-Offsets in dis.dis output NOT A BUG · Issue #93060 · python/cpython · GitHub
Open Graph Title: Instruction-Offsets vs Byte-Offsets in dis.dis output NOT A BUG · Issue #93060 · python/cpython
X Title: Instruction-Offsets vs Byte-Offsets in dis.dis output NOT A BUG · Issue #93060 · python/cpython
Description: Please ignore this issue. It was caused by my running the 3.7 library dis in the 3.10 environment. Bug report This is new to version 3.10 When disassembling code code block with jumps, bytecode for the jump shows the wrong target instruc...
Open Graph Description: Please ignore this issue. It was caused by my running the 3.7 library dis in the 3.10 environment. Bug report This is new to version 3.10 When disassembling code code block with jumps, bytecode for...
X Description: Please ignore this issue. It was caused by my running the 3.7 library dis in the 3.10 environment. Bug report This is new to version 3.10 When disassembling code code block with jumps, bytecode for...
Opengraph URL: https://github.com/python/cpython/issues/93060
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Instruction-Offsets vs Byte-Offsets in dis.dis output NOT A BUG","articleBody":"**_Please ignore this issue. It was caused by my running the 3.7 library `dis` in the 3.10 environment._** \r\n\r\n**Bug report**\r\n\r\n**This is new to version 3.10**\r\nWhen disassembling code code block with jumps, bytecode for the jump shows the wrong target instruction number, and/or the bytecode with the wrong address flagged with `\u003e\u003e`.\r\n\r\nTo reproduce, here is an example, I have interspersed the source code with the disassembled output:\r\n```\r\n\r\n\r\ntry: x = 1\r\n 3 4 SETUP_FINALLY 15 (to 21) --- (to 2 * 15 = 30)\r\n 6 SETUP_FINALLY 4 (to 12) --- (to 8 + 2 * 4 = 16)\r\n 8 LOAD_CONST 1 (1)\r\n 10 STORE_NAME 1 (x)\r\n \u003e\u003e 12 POP_BLOCK --- no \u003e\u003e\r\n 14 JUMP_FORWARD 6 (to 22) --- (to 16 + 2 * 6 = 28)\r\n\r\n except: x = 2\r\n 4 16 POP_TOP --- \u003e\u003e (target of 6)\r\n 18 POP_TOP\r\n 20 POP_TOP\r\n \u003e\u003e 22 LOAD_CONST 2 (2) --- no \u003e\u003e\r\n 24 STORE_NAME 1 (x)\r\n 26 POP_EXCEPT\r\n \u003e\u003e 28 POP_BLOCK --- \u003e\u003e (target of 14), not \u003e\u003e (target of 48).\r\n\r\nfinally: x = 3\r\n 5 30 LOAD_CONST 3 (3)\r\n 32 STORE_NAME 1 (x)\r\n 34 JUMP_FORWARD 3 (to 39) --- (to 36 + 2 * 3 = 42)\r\n 36 LOAD_CONST 3 (3) --- \u003e\u003e (target of 4)\r\n 38 STORE_NAME 1 (x)\r\n 40 CONTINUE_LOOP 0\r\n\r\n\r\nif x == 3:\r\n 7 42 LOAD_NAME 1 (x) --- \u003e\u003e (target of 34)\r\n 44 LOAD_CONST 3 (3)\r\n 46 COMPARE_OP 2 (==)\r\n 48 POP_JUMP_IF_FALSE 28 --- (to 28 * 2 = 56)\r\n\r\n\tx = 4\r\n 8 50 LOAD_CONST 4 (4)\r\n 52 STORE_NAME 1 (x)\r\n 54 JUMP_FORWARD 2 (to 58) --- (to 56 + 2 * 2 = 60)\r\n\r\nelse:\r\n \tx = 5\r\n10 56 LOAD_CONST 5 (5)\r\n \u003e\u003e 58 STORE_NAME 1 (x) --- no \u003e\u003e\r\n\r\nimport sys\r\n 14 60 LOAD_CONST 6 (0) --- \u003e\u003e (target of 54)\r\n 62 LOAD_CONST 7 (None)\r\n 64 IMPORT_NAME 2 (sys)\r\n 66 STORE_NAME 2 (sys)\r\n\r\n```\r\n\r\nCompare with output from 3.9. The compiled bytecodes are slightly different, but the jump addresses and labelled indictors are correct.\r\nIn my opinion, though, the true oparg values (17, etc.), which are shown in 3.10, should be shown instead of the doubled values (34, etc.), which are shown in 3.9. I would consider this a bug in 3.9.\r\n```\r\n 3 4 SETUP_FINALLY 34 (to 40)\r\n 6 SETUP_FINALLY 8 (to 16)\r\n 8 LOAD_CONST 1 (1)\r\n 10 STORE_NAME 1 (x)\r\n 12 POP_BLOCK\r\n 14 JUMP_FORWARD 16 (to 32)\r\n\r\n 4 \u003e\u003e 16 POP_TOP\r\n 18 POP_TOP\r\n 20 POP_TOP\r\n 22 LOAD_CONST 2 (2)\r\n 24 STORE_NAME 1 (x)\r\n 26 POP_EXCEPT\r\n 28 JUMP_FORWARD 2 (to 32)\r\n 30 RERAISE\r\n \u003e\u003e 32 POP_BLOCK\r\n\r\n 5 34 LOAD_CONST 3 (3)\r\n 36 STORE_NAME 1 (x)\r\n 38 JUMP_FORWARD 6 (to 46)\r\n \u003e\u003e 40 LOAD_CONST 3 (3)\r\n 42 STORE_NAME 1 (x)\r\n 44 RERAISE\r\n\r\n 7 \u003e\u003e 46 LOAD_NAME 1 (x)\r\n 48 LOAD_CONST 3 (3)\r\n 50 COMPARE_OP 2 (==)\r\n 52 POP_JUMP_IF_FALSE 60\r\n\r\n 8 54 LOAD_CONST 4 (4)\r\n 56 STORE_NAME 1 (x)\r\n 58 JUMP_FORWARD 4 (to 64)\r\n\r\n 10 \u003e\u003e 60 LOAD_CONST 5 (5)\r\n 62 STORE_NAME 1 (x)\r\n\r\n 14 \u003e\u003e 64 LOAD_CONST 6 (0)\r\n 66 LOAD_CONST 7 (None)\r\n 68 IMPORT_NAME 2 (sys)\r\n 70 STORE_NAME 2 (sys)\r\n```\r\n\r\n**Your environment**\r\n\r\n- CPython versions tested on: Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32\r\n- Operating system and architecture: Windows\r\n","author":{"url":"https://github.com/mrolle45","@type":"Person","name":"mrolle45"},"datePublished":"2022-05-21T23:07:27.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":11},"url":"https://github.com/93060/cpython/issues/93060"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:58aea805-142f-2afc-a45e-02e661bf43f5 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B9DA:17E40D:50F4AE:6DE560:6A524EB6 |
| html-safe-nonce | 5585fbc57e522fe594f9d3dff62570d994bab8a6ae95f6178dff0ea835ac62ce |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCOURBOjE3RTQwRDo1MEY0QUU6NkRFNTYwOjZBNTI0RUI2IiwidmlzaXRvcl9pZCI6IjIzMTk2MjMyMDMxMTMyOTE0NDYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 106781e42d315af66ca7b9a824e71c4d01264183d5fd1c6270149c186992c316 |
| hovercard-subject-tag | issue:1244099703 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/93060/issue_layout |
| twitter:image | https://opengraph.githubassets.com/43388fbd2be3d32aadf1c782cf09bb848b1cecf7d08db0eb9cc20afcd2bf2f7b/python/cpython/issues/93060 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/43388fbd2be3d32aadf1c782cf09bb848b1cecf7d08db0eb9cc20afcd2bf2f7b/python/cpython/issues/93060 |
| og:image:alt | Please ignore this issue. It was caused by my running the 3.7 library dis in the 3.10 environment. Bug report This is new to version 3.10 When disassembling code code block with jumps, bytecode for... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mrolle45 |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width