دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: نویسندگان: R Wilhelm, Helmut Seidl سری: ISBN (شابک) : 9783642149092, 364214909X ناشر: Springer سال نشر: 2010 تعداد صفحات: 201 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 975 کیلوبایت
در صورت تبدیل فایل کتاب Compiler design. / Virtual machines به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب طراحی کامپایلر. / ماشین های مجازی نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
در حالی که کامپایلرهای زبان های برنامه نویسی سطح بالا سیستم های نرم افزاری پیچیده ای هستند، اما ویژگی های خاصی دارند که آنها را از سایر سیستم های نرم افزاری متمایز می کند. عملکرد آنها تقریباً کاملاً به خوبی تعریف شده است - در حالت ایدهآل توضیحات کامل و دقیقی از زبان مبدأ و مقصد وجود دارد، در حالی که توضیحات اضافی از رابطهای سیستم عامل، سیستم برنامهنویسی و محیط برنامهنویسی و سایر کامپایلرها و کتابخانهها اغلب در دسترس است. پیادهسازی سیستمهای کاربردی مستقیماً در زبان ماشین هم دشوار و هم مستعد خطا است که منجر به منسوخ شدن برنامههایی میشود که به سرعت رایانههایی که برای آنها توسعه داده شدهاند منسوخ میشوند. با توسعه زبان های برنامه نویسی سطح بالاتر مستقل از ماشین، نیاز به ارائه کامپایلرهایی وجود داشت که قادر به ترجمه برنامه ها به زبان ماشین بودند. با توجه به این چالش اساسی، وظایف فرعی مختلف از دهه 1950 موضوع تحقیقات فشرده بوده است. این کتاب به عنوان یک کتاب آشپزی برای کامپایلرها در نظر گرفته نشده است، در عوض ارائه نویسندگان نشان دهنده ویژگی های خاص طراحی کامپایلر، به ویژه وجود مشخصات دقیق وظایف فرعی است. آنها برای درک دقیق این موارد و ارائه مفاهیم کافی برای درمان سیستماتیک آنها تلاش می کنند. این اولین کتاب در یک مجموعه چند جلدی است، و در اینجا نویسندگان توصیف میکنند که یک کامپایلر چه کاری انجام میدهد، یعنی چه تناسبی بین یک منبع و یک برنامه هدف برقرار میکند. برای دستیابی به این هدف، نویسندگان یک ماشین مجازی مناسب (ماشین انتزاعی) را مشخص میکنند و دقیقاً کامپایل برنامههای هر زبان مبدأ را به زبان ماشین مجازی مرتبط برای یک زبان برنامهنویسی امری، کاربردی، منطقی و شیگرا توصیف میکنند. این کتاب برای دانشجویان رشته کامپیوتر در نظر گرفته شده است. دانش حداقل یک زبان برنامه نویسی ضروری فرض می شود، در حالی که برای فصل های مربوط به ترجمه زبان های برنامه نویسی تابعی و منطقی، دانستن یک زبان کاربردی مدرن و Prolog مفید خواهد بود. این کتاب در سراسر با مثال ها، تمرین ها و قطعات برنامه پشتیبانی می شود.
While compilers for high-level programming languages are large complex software systems, they have particular characteristics that differentiate them from other software systems. Their functionality is almost completely well-defined – ideally there exist complete precise descriptions of the source and target languages, while additional descriptions of the interfaces to the operating system, programming system and programming environment, and to other compilers and libraries are often available. The implementation of application systems directly in machine language is both difficult and error-prone, leading to programs that become obsolete as quickly as the computers for which they were developed. With the development of higher-level machine-independent programming languages came the need to offer compilers that were able to translate programs into machine language. Given this basic challenge, the different subtasks of compilation have been the subject of intensive research since the 1950s. This book is not intended to be a cookbook for compilers, instead the authors' presentation reflects the special characteristics of compiler design, especially the existence of precise specifications of the subtasks. They invest effort to understand these precisely and to provide adequate concepts for their systematic treatment. This is the first book in a multivolume set, and here the authors describe what a compiler does, i.e., what correspondence it establishes between a source and a target program. To achieve this the authors specify a suitable virtual machine (abstract machine) and exactly describe the compilation of programs of each source language into the language of the associated virtual machine for an imperative, functional, logic and object-oriented programming language. This book is intended for students of computer science. Knowledge of at least one imperative programming language is assumed, while for the chapters on the translation of functional and logic programming languages it would be helpful to know a modern functional language and Prolog. The book is supported throughout with examples, exercises and program fragments.
Cover ......Page 1
Compiler Design......Page 2
Preface......Page 8
Acknowledgments......Page 10
Contents......Page 12
1.1 High-Level Programming Languages......Page 15
1.2.1 Interpreters......Page 16
1.2.2 Compilers......Page 17
1.2.4 Combined Compilation and Interpretation......Page 18
1.3 General References......Page 19
2.1 Language Concepts and Their Compilation......Page 21
2.2 The Architecture of the C-Machine......Page 22
2.3 Simple Expressions and Assignments......Page 23
2.4 Statements and Statement Sequences......Page 29
2.5 Conditional and Iterative Statements......Page 30
2.6 Memory Allocation for Variables of Basic Types......Page 36
2.7 Memory Allocation for Arrays and Structures......Page 37
2.8 Pointers and Dynamic Memory Allocation......Page 41
2.9 Functions......Page 46
2.9.1 Memory Organization of the C-Machine......Page 49
2.9.2 Dealing with Local Variables......Page 51
2.9.3 Function Call and Return......Page 54
2.10 Translation of Programs......Page 59
2.11 Exercises......Page 62
2.15 References......Page 69
3.1 Basic Concepts and Introductory Examples......Page 71
3.2 A Simple Functional Programming Language......Page 73
3.3 The Architecture of the MaMa......Page 77
3.4 Translation of Simple Expressions......Page 80
3.5 Access to Variables......Page 82
3.6 let Expressions......Page 87
3.7 Function Definitions......Page 88
3.8 Function Application......Page 90
3.9 Under- and Oversupply with Arguments......Page 94
3.10 Recursive Variable Definitions......Page 97
3.11 Closures and Their Evaluation......Page 100
3.12 Optimization I: Global Variables......Page 103
3.13 Optimization II: Closures......Page 104
3.14 Translating Program Expressions......Page 105
3.15.1 Tuples......Page 106
3.15.2 Lists......Page 107
3.15.3 Closures for Tuples and Lists......Page 110
3.16 Optimization III: Last Calls......Page 111
3.17 Exercises......Page 113
3.19 List of Code Functions of the MaMa......Page 117
3.21 References......Page 118
4.1 The Language ProL......Page 119
4.2 The Architecture of the WiM......Page 122
4.3 Allocation of Terms in the Heap......Page 123
4.4 The Translation of Literals......Page 128
4.5 Unification......Page 129
4.6 Clauses......Page 140
4.7.1 Backtracking......Page 141
4.7.2 Putting It All Together......Page 144
4.8 The Finalization of Clauses......Page 145
4.9 Queries and Programs......Page 148
4.10 Optimization I: Last Goals......Page 149
4.11 Optimization II: Trimming of Stack Frames......Page 152
4.12 Optimization III: Clause Indexing......Page 154
4.13 Extension: The Cut Operator......Page 156
4.14 Digression: Garbage Collection......Page 158
4.15 Exercises......Page 163
4.18 List of WiM Instructions......Page 166
4.19 References......Page 167
5.1.1 Objects......Page 169
5.1.2 Object Classes......Page 170
5.1.3 Inheritance......Page 171
5.1.5 Information Encapsulation......Page 172
5.2 An Object-Oriented Extension of C......Page 173
5.3 The Memory Organization for Objects......Page 174
5.4 Method Calls......Page 177
5.5 The Definition of Methods......Page 179
5.6 The Use of Constructors......Page 180
5.7 The Definition of Constructors......Page 182
5.8 Perspective: Multiple Inheritance......Page 183
5.9 Exercises......Page 185
5.12 References......Page 191
References......Page 193
Index......Page 197