Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleNovember 2024
Register Expansion and SemaCall: 2 Low-overhead Dynamic Watermarks Suitable for Automation in LLVM
CheckMATE '24: Proceedings of the 2024 Workshop on Research on offensive and defensive techniques in the context of Man At The End (MATE) attacksPages 1–10https://doi.org/10.1145/3689934.3690815Software watermarking is a means of protection against issues of piracy and unauthorized tampering. We propose two dynamic software watermarking techniques and show how we added them to the LLWM framework for automatic insertion into to-be-watermarked ...
- research-articleApril 2024
Hydra: Generalizing Peephole Optimizations with Program Synthesis
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 120, Pages 725–753https://doi.org/10.1145/3649837Optimizing compilers rely on peephole optimizations to simplify combinations of instructions and remove redundant instructions. Typically, a new peephole optimization is added when a compiler developer notices an optimization opportunity---a collection ...
- articleDecember 2022
Getting Started with AdaWebPack
ACM SIGAda Ada Letters (SIGADA), Volume 42, Issue 1Pages 58–60https://doi.org/10.1145/3577949.3577957This article introduces the AdaWebPack project recently presented at the 12th Ada Developer Room at FOSDEM 2022 [3]. The AdaWebPack project aims for providing a toolchain and Ada libraries to enable developing of web applications to be executed in a web ...
- short-paperApril 2022
Extending SYCL's Programming Paradigm with Tensor-based SIMD Abstractions
ICPE '22: Proceedings of the 2022 ACM/SPEC on International Conference on Performance EngineeringPages 59–66https://doi.org/10.1145/3489525.3511681Heterogeneous computing has emerged as an important method for supporting more than one kind of processors or accelerators in a program. There is generally a trade off between source code portability and device performance for heterogeneous programming. ...
-
- short-paperNovember 2021
LLWM & IR-Mark: Integrating Software Watermarks into an LLVM-based Framework
Checkmate '21: Proceedings of the 2021 Research on offensive and defensive techniques in the Context of Man At The End (MATE) AttacksPages 35–41https://doi.org/10.1145/3465413.3488576While software protection mechanisms, such as DRM and online services, hinder the unrestrained duplication of games and applications, these mechanisms fail at protecting individual software components from reuse by intellectual property thieves. While ...
- posterSeptember 2020
VP Float: First Class Treatment for Variable Precision Floating Point Arithmetic
PACT '20: Proceedings of the ACM International Conference on Parallel Architectures and Compilation TechniquesPages 355–356https://doi.org/10.1145/3410463.3414660Optimizing compilers for high performance computing only support IEEE~754 floating-point (FP) types and applications needing higher precision involve cumbersome memory management and calls to external libraries. We introduce an extension of the C type ...
- research-articleNovember 2019
SATURN - Software Deobfuscation Framework Based On LLVM
SPRO'19: Proceedings of the 3rd ACM Workshop on Software ProtectionPages 27–38https://doi.org/10.1145/3338503.3357721The strength of obfuscated software has increased over the recent years. Compiler based obfuscation has become the de facto standard in the industry and recent papers also show that injection of obfuscation techniques is done at the compiler level. In ...
- research-articleMay 2018
A Leak-Resilient Dual Stack Scheme for Backward-Edge Control-Flow Integrity
ASIACCS '18: Proceedings of the 2018 on Asia Conference on Computer and Communications SecurityPages 369–380https://doi.org/10.1145/3196494.3196531Manipulations of return addresses on the stack are the basis for a variety of attacks on programs written in memory unsafe languages. Dual stack schemes for protecting return addresses promise an efficient and effective defense against such attacks. By ...
- posterFebruary 2018
Compiler Practice System Integrated with Real Open Source Compiler: (Abstract Only)
SIGCSE '18: Proceedings of the 49th ACM Technical Symposium on Computer Science EducationPage 1091https://doi.org/10.1145/3159450.3162242The rapidly growing scale of modern computer systems has been increasing the skill gaps between graduating students and industry expectations. The Compiler Course, as one of the core CS courses, is not only a course introducing the theory and practice ...
- research-articleJanuary 2018
BinRec: Attack Surface Reduction Through Dynamic Binary Recovery
- Taddeus Kroes,
- Anil Altinay,
- Joseph Nash,
- Yeoul Na,
- Stijn Volckaert,
- Herbert Bos,
- Michael Franz,
- Cristiano Giuffrida
FEAST '18: Proceedings of the 2018 Workshop on Forming an Ecosystem Around Software TransformationPages 8–13https://doi.org/10.1145/3273045.3273050Compile-time specialization and feature pruning through static binary rewriting have been proposed repeatedly as techniques for reducing the attack surface of large programs, and for minimizing the trusted computing base. We propose a new approach to ...
- research-articleOctober 2017
Devirtualization in LLVM
SPLASH Companion 2017: Proceedings Companion of the 2017 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityPages 42–44https://doi.org/10.1145/3135932.3135947Devirtualization is an optimization changing indirect (virtual) calls to direct calls. It improves performance by allowing extra inlining and removal of redundant loads. This paper presents a novel way of handling C++ devirtualization in LLVM by ...
- research-articleJanuary 2017Best Paper
Tapir: Embedding Fork-Join Parallelism into LLVM's Intermediate Representation
PPoPP '17: Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingPages 249–265https://doi.org/10.1145/3018743.3018758This paper explores how fork-join parallelism, as supported by concurrency platforms such as Cilk and OpenMP, can be embedded into a compiler's intermediate representation (IR). Mainstream compilers typically treat parallel linguistic constructs as ...
Also Published in:
ACM SIGPLAN Notices: Volume 52 Issue 8 - research-articleMay 2016
NVL-C: Static Analysis Techniques for Efficient, Correct Programming of Non-Volatile Main Memory Systems
HPDC '16: Proceedings of the 25th ACM International Symposium on High-Performance Parallel and Distributed ComputingPages 125–136https://doi.org/10.1145/2907294.2907303Computer architecture experts expect that non-volatile memory (NVM) hierarchies will play a more significant role in future systems including mobile, enterprise, and HPC architectures. With this expectation in mind, we present NVL-C: a novel programming ...
- research-articleJune 2015
The Cilkprof Scalability Profiler
SPAA '15: Proceedings of the 27th ACM symposium on Parallelism in Algorithms and ArchitecturesPages 89–100https://doi.org/10.1145/2755573.2755603Cilkprof is a scalability profiler for multithreaded Cilk computations. Unlike its predecessor Cilkview, which analyzes only the whole-program scalability of a Cilk computation, Cilkprof collects work (serial running time) and span (critical-path length)...
- research-articleOctober 2014
Alembic: automatic locality extraction via migration
OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & ApplicationsPages 879–894https://doi.org/10.1145/2660193.2660194Partitioned Global Address Space (PGAS) environments simplify writing parallel code for clusters because they make data movement implicit - dereferencing global pointers automatically moves data around. However, it does not free the programmer from ...
Also Published in:
ACM SIGPLAN Notices: Volume 49 Issue 10 - research-articleSeptember 2014
BEAMJIT: a just-in-time compiling runtime for Erlang
Erlang '14: Proceedings of the Thirteenth ACM SIGPLAN workshop on ErlangPages 61–72https://doi.org/10.1145/2633448.2633450BEAMJIT is a tracing just-in-time compiling runtime for the Erlang programming language. The core parts of BEAMJIT are synthesized from the C source code of BEAM, the reference Erlang abstract machine. The source code for BEAM's instructions is ...
- research-articleJune 2014
em-SPADE: a compiler extension for checking rules extracted from processor specifications
LCTES '14: Proceedings of the 2014 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systemsPages 105–114https://doi.org/10.1145/2597809.2597823Traditional compilers ignore processor specifications, thousands of pages of which are available for modern processors. To bridge this gap, em-SPADE analyzes processor specifications and creates processor-specific rules to reduce low-level programming ...
Also Published in:
ACM SIGPLAN Notices: Volume 49 Issue 5 - research-articleOctober 2013
Optimizing MATLAB feval with dynamic techniques
DLS '13: Proceedings of the 9th symposium on Dynamic languagesPages 85–96https://doi.org/10.1145/2508168.2508174MATLAB is a popular dynamic array-based language used by engineers, scientists and students worldwide. The built-in function feval is an important MATLAB feature for certain classes of numerical programs and solvers which benefit from having functions ...
Also Published in:
ACM SIGPLAN Notices: Volume 49 Issue 2 - research-articleJune 2013
Formal verification of SSA-based optimizations for LLVM
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 175–186https://doi.org/10.1145/2491956.2462164Modern compilers, such as LLVM and GCC, use a static single assignment(SSA) intermediate representation (IR) to simplify and enable many advanced optimizations. However, formally verifying the correctness of SSA-based optimizations is challenging ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6