Posted to tcl by miguel at Fri Nov 16 22:05:32 GMT 2007view raw

  1. % L {int foo(int x) {int y; y=x*x; return y}}
  2. unknown:1: L Error: syntax error, unexpected }
  3.  
  4. % L {
  5. int foo(int x) {
  6. int y;
  7. y=x*x;
  8. return y;
  9. }
  10. }
  11. % tcl::unsupported::disassemble proc foo
  12. ByteCode 0x0x8238990, refCt 1, epoch 0, interp 0x0x81b64f8 (epoch 0)
  13. Source "\nint foo(int x) {\nint y;\ny=x*x;\nreturn y;\n}\n"
  14. Cmds 2, src 44, inst 19, litObjs 2, aux 0, stkDepth 2, code/src 3.27
  15. Code 144 = header 104+inst 19+litObj 8+exc 0+aux 0+cmdMap 8
  16. Proc 0x0x8238438, refCt 2, args 1, compiled locals 2
  17. slot 0, scalar, arg, "x"
  18. slot 1, scalar, "y"
  19. Commands 2:
  20. 1: pc 5-9, src 27-28 2: pc 5-11, src 25-28
  21. (0) push1 0 # "0"
  22. (2) storeScalar1 %v1 # var "y"
  23. (4) pop
  24. Command 1: "x*"
  25. Command 2: "y=x*"
  26. (5) loadScalar1 %v0 # var "x"
  27. (7) loadScalar1 %v0 # var "x"
  28. (9) mult
  29. (10) storeScalar1 %v1 # var "y"
  30. (12) pop
  31. (13) loadScalar1 %v1 # var "y"
  32. (15) done
  33. (16) push1 1 # ""
  34. (18) done