Posted to tcl by dogeen at Tue Aug 31 21:47:31 GMT 2010view raw
- % proc fe args { foreach {i j} {1 2 3 4 5 6} { puts $i\,$j} }
- % tcl::unsupported::disassemble proc fe
- ByteCode 0x0x1003a3718, refCt 1, epoch 4, interp 0x0x10083e838 (epoch 4)
- Source " foreach {i j} {1 2 3 4 5 6} { puts $i\,$j} "
- Cmds 2, src 44, inst 35, litObjs 4, aux 1, stkDepth 4, code/src 6.73
- Code 296 = header 168+inst 35+litObj 32+exc 28+aux 16+cmdMap 8
- Proc 0x0x10041da08, refCt 1, args 1, compiled locals 5
- slot 0, scalar, arg, "args"
- slot 1, scalar, temp
- slot 2, scalar, temp
- slot 3, scalar, "i"
- slot 4, scalar, "j"
- Exception ranges 1, depth 1:
- 0: level 0, loop, pc 17-28, continue 10, break 32
- Commands 2:
- 1: pc 0-33, src 1-43 2: pc 17-28, src 31-41
- Command 1: "foreach {i j} {1 2 3 4 5 6} { puts $i\,$j} "
- (0) push1 0 # "1 2 3 4 5 6"
- (2) storeScalar1 %v1 # temp var 1
- (4) pop
- (5) foreach_start4 0
- [data=[%v1], loop=%v2
- it%v1 [%v3, %v4]]
- (10) foreach_step4 0
- [data=[%v1], loop=%v2
- it%v1 [%v3, %v4]]
- (15) jumpFalse1 +17 # pc 32
- Command 2: "puts $i\,$j"
- (17) push1 1 # "puts"
- (19) loadScalar1 %v3 # var "i"
- (21) push1 2 # ","
- (23) loadScalar1 %v4 # var "j"
- (25) concat1 3
- (27) invokeStk1 2
- (29) pop
- (30) jump1 -20 # pc 10
- (32) push1 3 # ""
- (34) done