是时候打造一个现代的Synthesis内核了——嵌入学术界
本文探讨了在操作系统内核中使用运行时代码生成的可能性,以提高系统效率。作者以Linux系统调用`write()`为例,分析了如何利用LLVM等现代编译器技术进行代码特化,并讨论了将此技术应用于现有操作系统内核所面临的挑战,例如代码复杂性、指针分析和并发处理。作者认为,虽然现代编译器技术相较于90年代已有很大进步,但将动态特化应用于像Linux这样庞大的内核仍然需要大量的工程投入和创新。
阅读更多
本文探讨了在操作系统内核中使用运行时代码生成的可能性,以提高系统效率。作者以Linux系统调用`write()`为例,分析了如何利用LLVM等现代编译器技术进行代码特化,并讨论了将此技术应用于现有操作系统内核所面临的挑战,例如代码复杂性、指针分析和并发处理。作者认为,虽然现代编译器技术相较于90年代已有很大进步,但将动态特化应用于像Linux这样庞大的内核仍然需要大量的工程投入和创新。
阅读更多
文章讨论了 C/C++ 中严格别名规则带来的问题。严格别名规则允许编译器假设指向不同类型的指针不会指向同一个对象,从而进行优化。然而,C/C++ 允许指针类型转换,这可能导致违反别名规则。文章列举了物理子类型、块优化、偏移重叠以及 int8_t 和 uint8_t 的类型等方面的例子,说明了严格别名规则导致的代码错误。作者认为,需要静态和动态检查工具来解决这些问题,并建议在依赖类型转换的 C 代码中使用 -fno-strict-aliasing 编译选项。
阅读更多
本文详细介绍了Clang如何将C/C++代码转换为LLVM中间表示(IR)。文章以一个简单的is_sorted函数为例,逐步展示了Clang如何处理变量分配、循环结构、条件语句以及函数返回值等。作者重点解释了Clang在生成IR时的一些设计理念,例如为何使用alloca指令进行栈分配,以及如何处理指针运算等。文章最后还简单介绍了LLVM IR的优化过程,为后续深入探讨LLVM优化奠定了基础。
阅读更多
雷格尔的博客,主要关于安全编程和计算机安全,讨论了software-defined networking (SDN) 控制器中基于角色的访问控制 (RBAC) 的挑战与局限性,提出了一种称为multicast-RBAC的新方法来解决这些问题。
阅读更多