THE EXAMPLE OF COMPILER DESIGN WITH LOW LEVEL VIRTUAL MACHINE PROJECT


Creative Commons License

Gedik Y., Solak S.

5th INTERNATIONAL MARMARA SCIENCES CONGRESS IMASCON 2020 AUTUMN, Kocaeli, Turkey, 4 - 05 December 2020, pp.478-485

  • Publication Type: Conference Paper / Full Text
  • City: Kocaeli
  • Country: Turkey
  • Page Numbers: pp.478-485
  • Kocaeli University Affiliated: Yes

Abstract

The number of smart devices and users used is increasing day by day with the spread of information and communication technologies. It is the software used on these devices that make them smart. Software are computer programs that enable us to use the hardware features of computers or smart devices effectively. Programs are usually made by computer programmers with expressions close to spoken language. The compilers are used to convert these written programs into low-level computer code so that they can be understood by computers or smart devices. The compilers have had a lot of updates and new features in recent years. Thanks to these features, they have become applications that can correct programmers’ errors and speed up the computer codes of the relevant platform by optimizing them. The compilers are applications that contain a lot of abstraction layers that aim to reduce clutter by allowing the compiler to be divided into parts. In this context, The Low Level Virtual Machine (LLVM) compiler infrastructure project has been developed, which aims to solve problems that may arise in compiler design.Thanks to this project, the developed compilers don’t need to be rewritten for each platform and operating system. The compilers implemented using the LLVM project have an intermediate compiler server. The compiler can be run on any operating system and platform thanks to this intermediate compiler server, and it performs much more optimization processes as it is easy to analyze compared to high-level programming languages. The compilers realized with the LLVM project allow to create programs that can run quickly because they work as Just in Time (JIT). In this paper, the example of compiler design has been realized with the LLVM project and experimental results are presented. As a result, it is necessary to use a fast, abstractionable and high-level language such as C ++, C # or Java for compiler design. It is also important to use advanced tools such as Flex, Bison, and ANTLR to predict compiler behavior in syntax analysis.

Bilgi ve iletişim teknolojilerinin yaygınlaşmasıyla beraber kullanılan akıllı cihaz ve kullanıcı sayısı her geçen gün artmaktadır. Bu cihazları akıllı yapan üzerinde kullanılan yazılımlardır. Yazılımlar bilgisayar programcıları tarafından genellikle konuşma diline yakın ifadelerle yazılmaktadır. Yazılan bu programların bilgisayarlar veya akıllı cihazlar tarafından anlaşılması için düşük seviyeli bilgisayar koduna çevirmek amacıyla Derleyiciler kullanılmaktadır. Derleyiciler, geçmişten günümüze kadar çok fazla güncelleme geçirmiş ve yeni özellikler eklenmiştir. Bu özellikler sayesinde, insan hatalarını düzeltebilen ve ilgili platforma ait bilgisayar kodlarını optimize ederek hızlandıran uygulamalar haline gelmiştir. Derleyiciler, geliştirildiği programlama diline ait sınırları zorladığından çok fazla soyutlama katmanı gerektiren uygulamalardır. Bu katmanlar derleyicinin parçalara ayrılmasını sağlayarak karmaşayı azaltmayı hedeflemektedir. Bu kapsamda, derleyici tasarımında oluşacak sorunları çözmeyi amaçlayan düşük seviyeli sanal makine (Low Level Virtual Machine - LLVM) derleyici alt yapı projesi geliştirilmiştir. LLVM projesi sayesinde, geliştirilen derleyicilerin her platform ve işletim sistemi için tekrar yazılma gereksinimi ortadan kaldırılmıştır. LLVM projesi kullanılarak gerçekleştirilen derleyicilerde, ara derleme sunucusu bulunmaktadır. Derleyici, bu ara derleme sunucusu sayesinde istenilen işletim sistemi ve platformda çalıştırılabilir ve yüksek seviyeli programlama dillerine göre analizi kolay olduğundan çok daha fazla optimizasyon işlemi gerçekleştirmektedir. LLVM projesi ile gerçekleştirilen derleyiciler, JIT (Just in Time) mantığı ile çalıştığından hızlı çalışabilen programlar oluşturmayı sağlamaktadır. Çalışmada, LLVM projesi ile derleyici tasarım örneği gerçekleştirilmiş olup elde edilen deneyimler sunulmaktadır. Sonuç olarak, derleyici tasarımı için hızlı, soyutlama olanağı iyi olan ve yüksek seviyeli, C++, C# veya Java gibi bir dil kullanmak gerekmektedir. Ayrıca, söz dizimi analizinde Flex, Bison ve ANTLR gibi gelişmiş araçlar kullanmak derleyicinin davranışını tahmin edebilmek için önem arz etmektedir.