hey



Wednesday, February 18, 2009
Marc-André Cournoyer
                               Certified RMM Auditor




Wednesday, February 18, 2009
VM
Wednesday, February 18, 2009
Plan
                               1. Make Presentation
                               2. ???
                           ...
VM
Wednesday, February 18, 2009
JVM
Wednesday, February 18, 2009
JVM
                               (c) Threadless


Wednesday, February 18, 2009
M$
Wednesday, February 18, 2009
CLR
Wednesday, February 18, 2009
Lua
Wednesday, February 18, 2009
Wednesday, February 18, 2009
Python
Wednesday, February 18, 2009
Ruby 1.9
Wednesday, February 18, 2009
Rubinius
Wednesday, February 18, 2009
VMs



Wednesday, February 18, 2009
VMs
              are




Wednesday, February 18, 2009
VMs
              are
                           like



Wednesday, February 18, 2009
VMs
              are
                           like



Wednesday, February 18, 2009
#TODO insert philosophical
               #     explanation here




Wednesday, February 18, 2009
VMs



Wednesday, February 18, 2009
VMs
              are




Wednesday, February 18, 2009
VMs
              are
                          not




Wednesday, February 18, 2009
VMs
              are
                        not
                       that



Wednesday, February 18, 2009
VMs
              are
                               Complex
                        not
                       that



We...
but




Wednesday, February 18, 2009
butnobody




Wednesday, February 18, 2009
butnobody
                               wants
Wednesday, February 18, 2009
Youwants              butnobody




Wednesday, February 18, 2009
Youwants                    butnobody

                               to know


Wednesday, February 18, 2009
Youwants                    butnobody

            it                 to know


Wednesday, February 18, 2009
Wednesday, February 18, 2009
Wednesday, February 18, 2009
ZOMG MATZ!!!!
                       *faints*

Wednesday, February 18, 2009
hey




                    ZOMG MATZ!!!!
                       *faints*

Wednesday, February 18, 2009
hey
                                    Guaranteed!




                    ZOMG MATZ!!!!
                       *faints*
...
Rubinius

Wednesday, February 18, 2009
Rubinius is a

Wednesday, February 18, 2009
Rubinius is a
                    semi-self




Wednesday, February 18, 2009
Rubinius is a
                    semi-self
                    hosted




Wednesday, February 18, 2009
Rubinius is a
                    stackless spaghetti
                    semi-self
                    hosted




Wednesd...
Rubinius is a
                    stackless spaghetti
                    semi-self
                    hosted
           ...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                 V...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                  ...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                  ...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                  ...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                  ...
Rubinius is a
                    stackless spaghetti
                    semi-self




                                  ...
Wednesday, February 18, 2009
no



Wednesday, February 18, 2009
(rly)




Wednesday, February 18, 2009
“new”




Wednesday, February 18, 2009
“new”
             stuff


Wednesday, February 18, 2009
Rubinius
         “new”
             stuff


Wednesday, February 18, 2009
Wednesday, February 18, 2009
1969


Wednesday, February 18, 2009
Wednesday, February 18, 2009
Wednesday, February 18, 2009
Rey Mendoza Jr.




Wednesday, February 18, 2009
you = quot;smellquot;
                               if x == 1
                                 puts you
                 ...
Wednesday, February 18, 2009
you = quot;smellquot;
                               if x == 1
                                 puts you
                 ...
Wednesday, February 18, 2009
[:id,quot;youquot;],[:=],[:str,quot;smellquot;],[:newln],
                     [:if],[:id,quot;xquot;],[:==],[:int,1],[:ne...
Wednesday, February 18, 2009
s(:block,
                          s(:lasgn, :you, s(:str, quot;smellquot;)),
                          s(:if, s(:call, s...
0000   putstring      quot;smellquot;
                               0002   setlocal       you
                           ...
0004 putnil
0005 send                      :x, 0
0011 putobject                 1
0013 send                      :==, 1
00...
0004 putnil
0005 send                               :x, 0
0011 putobject                          1
                      ...
puts 1 + 2



                                                         stack
                               putobject   1
...
puts 1 + 2



                                                         stack
                               putobject   1
...
puts 1 + 2



                                                         stack
                               putobject   1 ...
puts 1 + 2



                                                         stack
                               putobject   1 ...
puts 1 + 2



                                                         stack
                               putobject   1 ...
puts 1 + 2



                                                         stack
                               putobject   1 ...
while (true) {
                                 switch (inst->op) {
                                   case SEND: ...
    ...
github.com/macournoyer/tinyrb
                                    #tinyrb on freenode




Wednesday, February 18, 2009
thx


Wednesday, February 18, 2009
Upcoming SlideShare
Loading in...5
×

VMs are not that complex (rly)

741

Published on

montreal.rb about VMs

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
741
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide










































  • VMs are not that complex (rly)

    1. 1. hey Wednesday, February 18, 2009
    2. 2. Marc-André Cournoyer Certified RMM Auditor Wednesday, February 18, 2009
    3. 3. VM Wednesday, February 18, 2009
    4. 4. Plan 1. Make Presentation 2. ??? 3. Profit Wednesday, February 18, 2009
    5. 5. VM Wednesday, February 18, 2009
    6. 6. JVM Wednesday, February 18, 2009
    7. 7. JVM (c) Threadless Wednesday, February 18, 2009
    8. 8. M$ Wednesday, February 18, 2009
    9. 9. CLR Wednesday, February 18, 2009
    10. 10. Lua Wednesday, February 18, 2009
    11. 11. Wednesday, February 18, 2009
    12. 12. Python Wednesday, February 18, 2009
    13. 13. Ruby 1.9 Wednesday, February 18, 2009
    14. 14. Rubinius Wednesday, February 18, 2009
    15. 15. VMs Wednesday, February 18, 2009
    16. 16. VMs are Wednesday, February 18, 2009
    17. 17. VMs are like Wednesday, February 18, 2009
    18. 18. VMs are like Wednesday, February 18, 2009
    19. 19. #TODO insert philosophical # explanation here Wednesday, February 18, 2009
    20. 20. VMs Wednesday, February 18, 2009
    21. 21. VMs are Wednesday, February 18, 2009
    22. 22. VMs are not Wednesday, February 18, 2009
    23. 23. VMs are not that Wednesday, February 18, 2009
    24. 24. VMs are Complex not that Wednesday, February 18, 2009
    25. 25. but Wednesday, February 18, 2009
    26. 26. butnobody Wednesday, February 18, 2009
    27. 27. butnobody wants Wednesday, February 18, 2009
    28. 28. Youwants butnobody Wednesday, February 18, 2009
    29. 29. Youwants butnobody to know Wednesday, February 18, 2009
    30. 30. Youwants butnobody it to know Wednesday, February 18, 2009
    31. 31. Wednesday, February 18, 2009
    32. 32. Wednesday, February 18, 2009
    33. 33. ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
    34. 34. hey ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
    35. 35. hey Guaranteed! ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
    36. 36. Rubinius Wednesday, February 18, 2009
    37. 37. Rubinius is a Wednesday, February 18, 2009
    38. 38. Rubinius is a semi-self Wednesday, February 18, 2009
    39. 39. Rubinius is a semi-self hosted Wednesday, February 18, 2009
    40. 40. Rubinius is a stackless spaghetti semi-self hosted Wednesday, February 18, 2009
    41. 41. Rubinius is a stackless spaghetti semi-self hosted stack based stack stack Wednesday, February 18, 2009
    42. 42. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack Wednesday, February 18, 2009
    43. 43. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch Wednesday, February 18, 2009
    44. 44. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache Wednesday, February 18, 2009
    45. 45. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache generational GC Wednesday, February 18, 2009
    46. 46. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache mark & sweep generational GC Wednesday, February 18, 2009
    47. 47. Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache ollector mark & sweep generational GC Wednesday, February 18, 2009
    48. 48. Wednesday, February 18, 2009
    49. 49. no Wednesday, February 18, 2009
    50. 50. (rly) Wednesday, February 18, 2009
    51. 51. “new” Wednesday, February 18, 2009
    52. 52. “new” stuff Wednesday, February 18, 2009
    53. 53. Rubinius “new” stuff Wednesday, February 18, 2009
    54. 54. Wednesday, February 18, 2009
    55. 55. 1969 Wednesday, February 18, 2009
    56. 56. Wednesday, February 18, 2009
    57. 57. Wednesday, February 18, 2009
    58. 58. Rey Mendoza Jr. Wednesday, February 18, 2009
    59. 59. you = quot;smellquot; if x == 1 puts you end Wednesday, February 18, 2009
    60. 60. Wednesday, February 18, 2009
    61. 61. you = quot;smellquot; if x == 1 puts you end Lexer [:id,quot;youquot;],[:=],[:str,quot;smellquot;],[:newln], [:if],[:id,quot;xquot;],[:==],[:int,1],[:newln], [:id,quot;putsquot;],[:id,quot;youquot;],[:newln], [:end] Wednesday, February 18, 2009
    62. 62. Wednesday, February 18, 2009
    63. 63. [:id,quot;youquot;],[:=],[:str,quot;smellquot;],[:newln], [:if],[:id,quot;xquot;],[:==],[:int,1],[:newln], [:id,quot;putsquot;],[:id,quot;youquot;],[:newln], [:end] Parser s(:block, s(:lasgn, :you, s(:str, quot;smellquot;)), s(:if, s(:call, s(:vcall, :x), :==, s(:array, s(:lit, 1))), s(:fcall, :puts, s(:array, s(:lvar, :you))), nil)) Wednesday, February 18, 2009
    64. 64. Wednesday, February 18, 2009
    65. 65. s(:block, s(:lasgn, :you, s(:str, quot;smellquot;)), s(:if, s(:call, s(:vcall, :x), :==, s(:array, s(:lit, 1))), s(:fcall, :puts, s(:array, s(:lvar, :you))), nil)) Compiler 019 000 002 002 015 046 001 000 000 024 000 018 001 046 002 001 000 000 000 054 003 001 002 046 004 001 000 008 000 049 003 049 Wednesday, February 18, 2009
    66. 66. 0000 putstring quot;smellquot; 0002 setlocal you 0004 putnil 0005 send :x, 0 0011 putobject 1 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you 0024 send :puts, 1 0030 leave 0031 putnil 0032 leave Wednesday, February 18, 2009
    67. 67. 0004 putnil 0005 send :x, 0 0011 putobject 1 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you Wednesday, February 18, 2009
    68. 68. 0004 putnil 0005 send :x, 0 0011 putobject 1 opcode operands instruction 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you Wednesday, February 18, 2009
    69. 69. puts 1 + 2 stack putobject 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
    70. 70. puts 1 + 2 stack putobject 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
    71. 71. puts 1 + 2 stack putobject 1 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
    72. 72. puts 1 + 2 stack putobject 1 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
    73. 73. puts 1 + 2 stack putobject 1 3 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
    74. 74. puts 1 + 2 stack putobject 1 nil 3 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 3 Wednesday, February 18, 2009
    75. 75. while (true) { switch (inst->op) { case SEND: ... case PUTOBJECT: ... case PUTSTRING: ... case PUTNIL: ... case SETLOCAL: ... case GETLOCAL: ... case RETURN: return; } inst++; } Wednesday, February 18, 2009
    76. 76. github.com/macournoyer/tinyrb #tinyrb on freenode Wednesday, February 18, 2009
    77. 77. thx Wednesday, February 18, 2009
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×