Posted to tcl by dgp at Thu Jul 25 05:15:51 GMT 2013view raw
- % tcl::unsupported::disassemble script $script
- ByteCode 0x0x101012810, refCt 1, epoch 15, interp 0x0x10084a410 (epoch 15)
- Source "\nset f 1e-200\nfor {set ct $argv} {$ct > 0} {incr ct -1}"
- Cmds 6, src 94, inst 41, litObjs 7, aux 0, stkDepth 3, code/src 0.00
- Exception ranges 2, depth 1:
- 0: level 0, loop, pc 15-23, continue 25, break 38
- 1: level 0, loop, pc 25-28, continue -1, break 38
- Commands 6:
- 1: pc 0-5, src 1-12 2: pc 6-39, src 14-92
- 3: pc 6-11, src 19-30 4: pc 15-23, src 62-90
- 5: pc 17-22, src 69-89 6: pc 25-28, src 44-53
- Command 1: "set f 1e-200"
- (0) push1 0 # "f"
- (2) push1 1 # "1e-200"
- (4) storeStk
- (5) pop
- Command 2: "for {set ct $argv} {$ct > 0} {incr ct -1} {\n set f ["
- Command 3: "set ct $argv"
- (6) push1 2 # "ct"
- (8) push1 3 # "argv"
- (10) loadStk
- (11) storeStk
- (12) pop
- (13) jump1 +17 # pc 30
- Command 4: "set f [expr {$f * 1.0000017}]"
- (15) push1 0 # "f"
- Command 5: "expr {$f * 1.0000017}"
- (17) push1 0 # "f"
- (19) loadStk
- (20) push1 4 # "1.0000017"
- (22) mult
- (23) storeStk
- (24) pop
- Command 6: "incr ct -1"
- (25) push1 2 # "ct"
- (27) incrStkImm -1
- (29) pop
- (30) push1 2 # "ct"
- (32) loadStk
- (33) push1 5 # "0"
- (35) gt
- (36) jumpTrue1 -21 # pc 15
- (38) push1 6 # ""
- (40) done
- % tcl::unsupported::disassemble proc demo
- ByteCode 0x0x101012610, refCt 1, epoch 15, interp 0x0x10084a410 (epoch 15)
- Source "\nset f 1e-200\nfor {set ct $argv} {$ct > 0} {incr ct -1}"
- Cmds 6, src 94, inst 34, litObjs 4, aux 0, stkDepth 2, code/src 0.00
- Proc 0x0x10181b510, refCt 1, args 1, compiled locals 3
- slot 0, scalar, arg, "argv"
- slot 1, scalar, "f"
- slot 2, scalar, "ct"
- Exception ranges 2, depth 1:
- 0: level 0, loop, pc 12-18, continue 20, break 31
- 1: level 0, loop, pc 20-22, continue -1, break 31
- Commands 6:
- 1: pc 0-4, src 1-12 2: pc 5-32, src 14-92
- 3: pc 5-8, src 19-30 4: pc 12-18, src 62-90
- 5: pc 12-16, src 69-89 6: pc 20-22, src 44-53
- Command 1: "set f 1e-200"
- (0) push1 0 # "1e-200"
- (2) storeScalar1 %v1 # var "f"
- (4) pop
- Command 2: "for {set ct $argv} {$ct > 0} {incr ct -1} {\n set f ["
- Command 3: "set ct $argv"
- (5) loadScalar1 %v0 # var "argv"
- (7) storeScalar1 %v2 # var "ct"
- (9) pop
- (10) jump1 +14 # pc 24
- Command 4: "set f [expr {$f * 1.0000017}]"
- Command 5: "expr {$f * 1.0000017}"
- (12) loadScalar1 %v1 # var "f"
- (14) push1 1 # "1.0000017"
- (16) mult
- (17) storeScalar1 %v1 # var "f"
- (19) pop
- Command 6: "incr ct -1"
- (20) incrScalar1Imm %v2 -1 # var "ct"
- (23) pop
- (24) loadScalar1 %v2 # var "ct"
- (26) push1 2 # "0"
- (28) gt
- (29) jumpTrue1 -17 # pc 12
- (31) push1 3 # ""
- (33) done