وبلاگ بلیان

Virtual Machines

معرفی کتاب «Virtual Machines» نوشتهٔ Iain D. Craig در سال 2005. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Virtual Machines» در دستهٔ بدون دسته‌بندی قرار دارد.

Virtual Machines Offers A Unique Insight Into The Building Of Virtual Machines For Sequential, Object-oriented And Parallel Languages, And Uses Comparisons Of Different Vms To Provide Actual, Practical Examples On How To Build Vms. State Transitions Are Used As A Formal Technique For The Specification Of Virtual Machines Throughout And - In Addition – Transitions And State Transitions Relating To The General Operation Are Included For Specification Of The Virtual Machine For The Event-based System. Two Virtual Machines Are Defined Using A Simple Sequential Language, Which Is Then Generalised To Include Object And Parallelism. Other Themes Explored Include The Implementation Of Vms And Proposals For Future Work. Appendices Contain High-level Specifications Of Two Compilers: One For The Simple Language That Serves As The Basic Example Throughout The Book, The Other For The Event-based Language Specified In Chapter 6. This Book Is An Essential Reference Tool For Academic And Industrial Researchers As Well As Postgraduates In This Area. Vms For Portability: Bcpl -- The Java Virtual Machine -- Diy Vms -- More Stack-based Vms -- Case Study: An Event-driven Language -- Register-based Machines -- Implementation Techniques -- Open Issues. By Iain D. Craig. 1852339691......Page 1 Virtual Machines......Page 3 Copyright Page ......Page 4 Preface......Page 6 Acknowledgements......Page 8 Table of Contents ......Page 9 1.1 Introduction......Page 14 1.3 Landin's SEeD Machine......Page 16 1.4 The Organisation of this Book......Page 18 1.5 Omissions......Page 20 2.1 Introduction......Page 24 2.2 BCPL the Language......Page 25 2.3 VM Operations......Page 28 2.4 The OeODE Machine......Page 30 2.5.1 Expression Instructions......Page 31 2.5.3 Instructions Relating to Routines......Page 33 2.5 .4 Control Instructions......Page 35 2.5.5 Directives......Page 36 2.6 The Intcode/Cintcode Machine......Page 37 3.1 Introduction......Page 40 3.2 JVM Organisation: An Overview......Page 41 3.2.1 The stack......Page 42 3.2.2 Method areas......Page 43 3.2.3 The PC register......Page 44 3.3 Class Files......Page 45 3.4 Object Representation at Runtime......Page 53 3.5 Initialisation......Page 55 3.6 Object Deletion......Page 57 3.8 Exception Handling......Page 58 3.9 Instructions......Page 59 3.9.1 Data-manipulation instructions......Page 61 3.9.2 Control instructions......Page 64 3.9.3 Stack-manipulating instructions......Page 67 3.9.4 Support for object orientation......Page 69 3.10 Concluding Remarks......Page 72 4.1 Introduction......Page 73 4.2.1 Language Overview......Page 74 4.2.2 What the Virtual Machine Must Support......Page 77 4.2.3 Virtual Machine-Storage Structures......Page 78 4.2.4 Virtual Machine-Registers......Page 80 4.2 .5 Virtual Machine-Instruction Set......Page 82 4.2.6 An Example......Page 91 4.2.7 Implementation......Page 93 4.2.8 Extensions......Page 97 4.2.9 Alternatives......Page 100 4.2.10 Specification......Page 105 4.3 Issues......Page 108 4.3.1 Indirect and Relative Jumps......Page 109 4.3.2 More Data Types......Page 110 4.3.4 Primitive Routines......Page 118 4.4 Concluding Remarks......Page 119 5.1 Introduction......Page 121 5.2.1 Language Overview......Page 122 5.2 .2 Virtual Machine-Storage Structures......Page 123 5.2.4 Virtual Machine-Instruction Set......Page 125 5.2.6 Alternatives......Page 128 5.3.1 Language Overview......Page 129 5.3.2 Virtual Machine-Storage Structures......Page 131 5.3.3 Virtual Machine-Registers......Page 133 5.3.4 Virtual Machine-Instruction Set......Page 134 5.3.5 Implementation......Page 136 5.3.6 Extensions......Page 138 5.3.7 Alternatives......Page 140 5.4.1 Some Optimisations......Page 141 5.4.2 Combining the Languages......Page 142 6.1 Introduction......Page 143 6.2 The Structure of Rules......Page 145 6.4 Execution Cycle......Page 148 6.5 Interpretation Rules......Page 150 6.6 VM Specification......Page 153 6.6.1 States and Notational Conventions......Page 154 6.6.2 Infra-Rule Transitions......Page 157 6.6.3 Extra-Rule Transitions......Page 160 6.6.4 VM-Only Transitions......Page 162 6.6.5 Introspective Operations......Page 163 6.7 Rule Equivalences......Page 165 6.8 Concluding Remarks......Page 166 7.1 Introduction......Page 168 7.2 The Register-Transfer Model......Page 169 7.3 Register Machine Organisation......Page 172 7.4 Parrot-General Organisation......Page 176 7.5 Parrot Instruction Set......Page 179 7.5.2 Data management instructions......Page 180 7.5.3 Register and stack operations......Page 181 7.6 DIY Register-Based Virtual Machine......Page 182 7.6.1 Informal Design......Page 183 7.6.2 Extensions......Page 187 7.6.3 Transition Rules......Page 188 7.7 Translating ALEXVM into RTM......Page 194 7.9 Correctness of the Translation......Page 197 7.10 More Natural Compilation......Page 207 7.11 Extensions......Page 211 8 Implementation Techniques......Page 212 8.1.1 Direct Implementation......Page 213 8.1.2 Translation......Page 214 8.1.3 Threaded Code......Page 218 8.2 Register Machines......Page 220 8.2.2 Addressing......Page 221 8.3 Using Transitions......Page 223 8.4 Concluding Remarks......Page 224 9.1 Security......Page 226 9.3 Typed Instruction Sets and Intermediate Codes......Page 227 9.6 Compiler Correctness......Page 229 9.7 Dynamic Code Insertion......Page 230 9.8 Instrumentation......Page 231 9.9 Including more Information about Source Code......Page 232 9.11 Increased Inter-Operability......Page 233 9.12 Code Mobility......Page 234 9.13 Small Platforms......Page 235 9.14 Real-Time VMs......Page 237 9.16 Greater Optimisation......Page 238 9.17 Operating System Constructs......Page 239 9.20 Objects and VMs......Page 240 9.21 Virtual VMs......Page 241 9.22 By Way of a Conclusion......Page 242 Compiling ALEX ......Page 243 Harrison Machine Compilation Rules......Page 251 Harrison Machine Instruction Set......Page 266 References......Page 269 Index......Page 272 I love virtual machines (VMs) and I have done for a long time.If that makes me "sad" or an "anorak", so be it. I love them because they are so much fun, as well as being so useful. They have an element of original sin (writing assembly programs and being in control of an entire machine), while still being able to claim that one is being a respectable member of the community (being structured, modular, high-level, object-oriented, and so on). They also allow one to design machines of one's own, unencumbered by the restrictions of a starts optimising it for some physical particular processor (at least, until one processor or other). I have been building virtual machines, on and off, since 1980 or there abouts. It has always been something of a hobby for me; it has also turned out to be a technique of great power and applicability. I hope to continue working on them, perhaps on some of the ideas outlined in the last chapter (I certainly want to do some more work with register-based VMs and concur rency). I originally wanted to write the book from a purely semantic viewpoint. This book offers a unique insight into the building of virtual machines for sequential, object-oriented and parallel languages, and uses comparisons of different VMs to provide actual, practical examples. State transitions are used as a formal technique for the specification of virtual machines throughout and – in addition – transitions and state transitions relating to the general operation are included for specification of the virtual machine for the event-based system. Two virtual machines are defined using a simple sequential language, which is then generalised to include object and parallelism. Other themes explored include the implementation of VMs and proposals for future work. Appendices contain high-level specifications of two compilers: one for the simple language that serves as the basic example throughout the book, the other for the event-based language specified in Chapter 6. This book is an essential reference tool for academic and industrial researchers as well as postgraduates in this area. In this book state transitions are used as a formal technique for the specification of virtual machines throughout and - in addition - transitions and state transitions relating to the general operation are included for specification of the virtual machine for the event-based system. Two virtual machines are defined using a simple sequential language, which is then generalised to include object and parallelism. Other themes explored include the implementation of VMs and proposals for future work. Appendices contain high-level specifications of two compilers: one for the simple language that serves as the basic example throughout the book, the other for the event-based language specified in Chapter 6. This book is an essential reference tool for academic and industrial researchers as well as postgraduates in this area
دانلود کتاب Virtual Machines