skip to main content
tutorial

An Analysis of x86-64 Inline Assembly in C Programs

Published:25 March 2018Publication History
Skip Abstract Section

Abstract

C codebases frequently embed nonportable and unstandardized elements such as inline assembly code. Such elements are not well understood, which poses a problem to tool developers who aspire to support C code. This paper investigates the use of x86-64 inline assembly in 1264 C projects from GitHub and combines qualitative and quantitative analyses to answer questions that tool authors may have. We found that 28.1% of the most popular projects contain inline assembly code, although the majority contain only a few fragments with just one or two instructions. The most popular instructions constitute a small subset concerned largely with multicore semantics, performance optimization, and hardware control. Our findings are intended to help developers of C-focused tools, those testing compilers, and language designers seeking to reduce the reliance on inline assembly. They may also aid the design of tools focused on inline assembly itself.

References

  1. Sarita V. Adve and Kourosh Gharachorloo. 1996. Shared Memory Consistency Models: A Tutorial. Computer 29, 12 (Dec. 1996), 66--76. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Mancia Anguita and F. Javier Fernández-Baldomero. 2007. Software Optimization for Improving Student Motivation in a Computer Architecture Course. IEEE Transactions on Education 50, 4 (Nov 2007), 373--378. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Gogul Balakrishnan, Radu Gruian, Thomas Reps, and Tim Teitelbaum. 2005. CodeSurfer/x86---A Platform for Analyzing x86 Executables. In Proceedings of the 14th International Conference on Compiler Construction (CC'05). Springer-Verlag, Berlin, Heidelberg, 250--254. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Gogul Balakrishnan and Thomas Reps. 2010. WYSINWYX: What You See is Not What You eXecute. ACM Trans. Program. Lang. Syst. 32, 6, Article 23 (Aug. 2010), 84 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Christoph Baumann, Bernhard Beckert, Holger Blasum, and Thorsten Bormer. 2009. Better avionics software reliability by code verification. In Proceedings, embedded world Conference, Nuremberg, Germany.Google ScholarGoogle Scholar
  6. Ryad Benadjila, Olivier Billet, Shay Gueron, and Matt J. Robshaw. 2009. The Intel AES Instructions Set and the SHA-3 Candidates. In Proceedings of the 15th International Conference on the Theory and Application of Cryptology and Information Security: Advances in Cryptology (ASIACRYPT '09). Springer-Verlag, Berlin, Heidelberg, 162--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Daniel J. Bernstein. 2005. Cache-timing attacks on AES. (2005).Google ScholarGoogle Scholar
  8. binutils. 2017. Using as. (2017). https://sourceware.org/binutils/docs/as/index.html (Accessed October 2017).Google ScholarGoogle Scholar
  9. Hans-J. Boehm. 2005. Threads Cannot Be Implemented As a Library. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '05). ACM, New York, NY, USA, 261--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Hudson Borges, André C. Hora, and Marco Tulio Valente. 2016. Understanding the Factors That Impact the Popularity of GitHub Repositories. In 2016 IEEE International Conference on Software Maintenance and Evolution, ICSME 2016, Raleigh, NC, USA, October 2-7, 2016. 334--344.Google ScholarGoogle Scholar
  11. Derek Bruening and Qin Zhao. 2011. Practical Memory Checking with Dr. Memory. In Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO '11). IEEE Computer Society, Washington, DC, USA, 213--223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th USENIX conference on Operating systems design and implementation (OSDI'08). USENIX Association, Berkeley, CA, USA, 209--224. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Yu-Fang Chen, Chang-Hong Hsu, Hsin-Hung Lin, Peter Schwabe, Ming-Hsien Tsai, Bow-Yaw Wang, Bo-Yin Yang, and Shang-Yi Yang. 2014. Verifying Curve25519 Software. In Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security (CCS '14). ACM, New York, NY, USA, 299--309. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Pascal Cuoq, Benjamin Monate, Anne Pacalet, Virgile Prevosto, John Regehr, Boris Yakobowski, and Xuejun Yang. 2012. Testing Static Analyzers with Randomly Generated Programs. In Proceedings of the 4th International Conference on NASA Formal Methods (NFM'12). Springer-Verlag, Berlin, Heidelberg, 120--125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Will Dietz, Peng Li, John Regehr, and Vikram Adve. 2012. Understanding Integer Overflow in C/C++. In Proceedings of the 34th International Conference on Software Engineering (ICSE '12). IEEE Press, Piscataway, NJ, USA, 760--770. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Vijay D'Silva, Mathias Payer, and Dawn Song. 2015. The Correctness-Security Gap in Compiler Optimization. In Proceedings of the 2015 IEEE Security and Privacy Workshops (SPW '15). IEEE Computer Society, Washington, DC, USA, 73--87. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Michael D. Ernst, Greg J. Badros, and David Notkin. 2002. An Empirical Analysis of C Preprocessor Use. IEEE Trans. Softw. Eng. 28, 12 (Dec. 2002), 1146--1170. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. David Evans, John Guttag, James Horning, and Yang Meng Tan. 1994. LCLint: A Tool for Using Specifications to Check Code. (1994), 87--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. David Evans and David Larochelle. 2002. Improving Security Using Extensible Lightweight Static Analysis. IEEE Softw. 19, 1 (Jan. 2002), 42--51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Jason Evans. 2006. A Scalable Concurrent malloc(3) Implementation for FreeBSD. (2006). https://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf (Accessed October 2017).Google ScholarGoogle Scholar
  21. Robert Feldt and Ana Magazinius. 2010. Validity Threats in Empirical Software Engineering Research - An Initial Survey. In Proceedings of the 22nd International Conference on Software Engineering & Knowledge Engineering (SEKE'2010), Redwood City, San Francisco Bay, CA, USA, July 1-July 3, 2010. 374--379.Google ScholarGoogle Scholar
  22. Mike Frysinger. 2015. Amd64 {un}fixes in SDL_endian.h. (2015). https://discourse.libsdl.org/t/amd64-un-fixes-in-sdl-endian-h/11792 (Accessed October 2017).Google ScholarGoogle Scholar
  23. Praveen Gauravaram, Lars R. Knudsen, Krystian Matusiewicz, Florian Mendel, Christian Rechberger, Martin Schläffer, and Thomsen Søren S. 2009. Grøstl - a SHA-3 candidate. In Symmetric Cryptography (Dagstuhl Seminar Proceedings), Helena Handschuh, Stefan Lucks, Bart Preneel, and Phillip Rogaway (Eds.). Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany, Dagstuhl, Germany. http://drops.dagstuhl.de/opus/volltexte/2009/1955Google ScholarGoogle Scholar
  24. GCC Manual. 2017. Variables in Specified Registers. (2017). https://gcc.gnu.org/onlinedocs/gcc/Explicit-Register-Variables.html (Accessed October 2017).Google ScholarGoogle Scholar
  25. Stefan Heule, Eric Schkufza, Rahul Sharma, and Alex Aiken. 2016. Stratified Synthesis: Automatically Learning the x86-64 Instruction Set. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '16). ACM, New York, NY, USA, 237--250. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Gerard J Holzmann. 2002. UNO: Static source code checking for user-defined properties. In Proc. IDPT, Vol. 2.Google ScholarGoogle Scholar
  27. Intel. 2010. How To Benchmark Code Execution Times on Intel IA-32 and IA-64 Instruction Set Architectures. (2010). https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-32-ia-64-benchmark-code-execution-paper.pdf (Accessed October 2017).Google ScholarGoogle Scholar
  28. Intel. 2014. Intel® Digital Random Number Generator (DRNG) Software Implementation Guide. (2014). https://software.intel.com/sites/default/files/managed/4d/91/DRNG_Software_Implementation_Guide_2.0.pdf (Accessed October 2017).Google ScholarGoogle Scholar
  29. International Organization for Standardization. 2011. ISO/IEC 9899:2011. (2011).Google ScholarGoogle Scholar
  30. Andreas Jaeger. 2003. Porting to 64-bit GNU/Linux Systems. In Proceedings of the GCC Developers Summit. 107--121.Google ScholarGoogle Scholar
  31. Rob Johnson and David Wagner. 2004. Finding User/Kernel Pointer Bugs with Type Inference. In Proceedings of the 13th Conference on USENIX Security Symposium - Volume 13 (SSYM'04). USENIX Association, Berkeley, CA, USA, 9--9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe, Leif Singer, Daniel M. German, and Daniela Damian. 2014. The Promises and Perils of Mining GitHub. In Proceedings of the 11th Working Conference on Mining Software Repositories (MSR 2014). ACM, New York, NY, USA, 92--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Timotej Kapus and Cristian Cadar. 2017. Automatic Testing of Symbolic Execution Engines via Program Generation and Differential Testing. In Proceedings of the 32Nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2017). IEEE Press, Piscataway, NJ, USA, 590--600. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Stephen Kell, Dominic P. Mulligan, and Peter Sewell. 2016. The Missing Link: Explaining ELF Static Linking, Semantically. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 607--623. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Vladimir Kiriansky, Derek Bruening, and Saman P. Amarasinghe. 2002. Secure Execution via Program Shepherding. In Proceedings of the 11th USENIX Security Symposium. USENIX Association, Berkeley, CA, USA, 191--206. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Robbert Krebbers and Freek Wiedijk. 2015. A Typed C11 Semantics for Interactive Theorem Proving. In Proceedings of the 2015 Conference on Certified Programs and Proofs (CPP '15). ACM, New York, NY, USA, 15--27. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. John B. Lacy. 1993. CryptoLib: Cryptography in Software. In Proceedings of the 4th USENIX Security Symposium, Santa Clara, CA, USA, October 4-6, 1993.Google ScholarGoogle Scholar
  38. Chris Lattner and Vikram Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization (CGO '04). IEEE Computer Society, Washington, DC, USA, 75--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Jaekyu Lee, Hyesoon Kim, and Richard Vuduc. 2012. When Prefetching Works, When It Doesn't, and Why. ACM Trans. Archit. Code Optim. 9, 1, Article 2 (March 2012), 29 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. A. Liu and P. Ning. 2008. TinyECC: A Configurable Library for Elliptic Curve Cryptography in Wireless Sensor Networks. In 2008 International Conference on Information Processing in Sensor Networks (ipsn 2008). 245--256. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Cristina V. Lopes, Petr Maj, Pedro Martins, Vaibhav Saini, Di Yang, Jakub Zitny, Hitesh Sajnani, and Jan Vitek. 2017. DéJàVu: A Map of Code Duplicates on GitHub. Proc. ACM Program. Lang. 1, OOPSLA, Article 84 (Oct. 2017), 28 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Stefan Maus, Michal Moskal, and Wolfram Schulte. 2008. Vx86: X86 Assembler Simulated in C Powered by Automated Theorem Proving. (2008), 284--298. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Kayvan Memarian, Justus Matthiesen, James Lingard, Kyndylan Nienhuis, David Chisnall, Robert N. M. Watson, and Peter Sewell. 2016. Into the Depths of C: Elaborating the De Facto Standards. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '16). ACM, New York, NY, USA, 1--15. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. mrigger. 2017. Inline Assembler. (2017). https://github.com/elliotchance/c2go/issues/228 (Accessed October 2017).Google ScholarGoogle Scholar
  45. George C. Necula, Scott McPeak, Shree Prakash Rahul, and Westley Weimer. 2002. CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. In Compiler Construction, 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8-12, 2002, Proceedings. 213--228. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Nicholas Nethercote and Julian Seward. 2007. Valgrind: a framework for heavyweight dynamic binary instrumentation. In Proceedings of the ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation, San Diego, California, USA, June 10-13, 2007. 89--100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Lionel M. Ni and Kai Hwang. 1985. Vector-Reduction Techniques for Arithmetic Pipelines. IEEE Trans. Comput. C-34, 5 (May 1985), 404--411. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Joe Olivas, Mike Chynoweth, and Tom Propst. 2015. Benefitting Power and Performance Sleep Loops. (2015). https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops (Accessed October 2017).Google ScholarGoogle Scholar
  49. John Regehr. 2013. Safe, Efficient, and Portable Rotate in C/C++. (2013). https://blog.regehr.org/archives/1063 (Accessed October 2017).Google ScholarGoogle Scholar
  50. John Regehr, Yang Chen, Pascal Cuoq, Eric Eide, Chucky Ellison, and Xuejun Yang. 2012. Test-case Reduction for C Compiler Bugs. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '12). ACM, New York, NY, USA, 335--346. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Manuel Rigger, Matthias Grimmer, Christian Wimmer, Thomas Würthinger, and Hanspeter Mössenböck. 2016. Bringing Low-level Languages to the JVM: Efficient Execution of LLVM IR on Truffle. In Proceedings of the 8th International Workshop on Virtual Machines and Intermediate Languages (VMIL 2016). ACM, New York, NY, USA, 6--15. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Manuel Rigger, Roland Schatz, Matthias Grimmer, and Hanspeter Mössenböck. 2017. Lenient Execution of C on a Java Virtual Machine: Or: How I Learned to Stop Worrying and Run the Code. In Proceedings of the 14th International Conference on Managed Languages and Runtimes (ManLang 2017). ACM, New York, NY, USA, 35--47. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Manuel Rigger, Roland Schatz, Rene Mayrhofer, Matthias Grimmer, and Hanspeter Mössenböck. Sulong, and Thanks For All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2018). Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. SDL. 2017. Simple DirectMedia Layer. (2017). https://www.libsdl.org/ (Accessed October 2017).Google ScholarGoogle Scholar
  55. Konstantin Serebryany, Derek Bruening, Alexander Potapenko, and Dmitriy Vyukov. 2012. AddressSanitizer: A Fast Address Sanity Checker. In 2012 USENIX Annual Technical Conference, Boston, MA, USA, June 13-15, 2012. 309--318. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam, and Prateek Saxena. 2008. BitBlaze: A New Approach to Computer Security via Binary Analysis. In Proceedings of the 4th International Conference on Information Systems Security (ICISS '08). Springer-Verlag, Berlin, Heidelberg, 1--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Henry Spencer and Geoff Collyer. 1992. #ifdef Considered Harmful, or Portability Experience with C News. In USENIX Summer 1992 Technical Conference, San Antonio, TX, USA, June 8-12, 1992. https://www.usenix.org/conference/usenix-summer-1992-technical-conference/ifdef-considered-harmful-or-portabilityGoogle ScholarGoogle Scholar
  58. Evgeniy Stepanov and Konstantin Serebryany. 2015. MemorySanitizer: fast detector of uninitialized memory use in C++. In Proceedings of the 13th Annual IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2015, San Francisco, CA, USA, February 07-11, 2015. 46--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Chengnian Sun, Vu Le, and Zhendong Su. 2016. Finding and Analyzing Compiler Warning Defects. In Proceedings of the 38th International Conference on Software Engineering (ICSE '16). ACM, New York, NY, USA, 203--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Chengnian Sun, Vu Le, and Zhendong Su. 2016. Finding Compiler Bugs via Live Code Mutation. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 849--863. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Piotr Szczechowiak, Leonardo B. Oliveira, Michael Scott, Martin Collier, and Ricardo Dahab. 2008. NanoECC: Testing the Limits of Elliptic Curve Cryptography in Sensor Networks. (2008), 305--320. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Reinhard Tartler, Daniel Lohmann, Christian Dietrich, Christoph Egger, and Julio Sincero. 2012. Configuration Coverage in the Analysis of Large-scale System Software. SIGOPS Oper. Syst. Rev. 45, 3 (Jan. 2012), 10--14. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Lucas Torri, Guilherme Fachini, Leonardo Steinfeld, Vesmar Camara, Luigi Carro, and Érika Cota. 2010. An evaluation of free/open source static analysis tools applied to embedded software. In 2010 11th Latin American Test Workshop. 1--6.Google ScholarGoogle ScholarCross RefCross Ref
  64. Chia-Che Tsai, Bhushan Jain, Nafees Ahmed Abdul, and Donald E. Porter. 2016. A Study of Modern Linux API Usage and Compatibility: What to Support when You're Supporting. In Proceedings of the Eleventh European Conference on Computer Systems (EuroSys '16). ACM, New York, NY, USA, Article 16, 16 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. VIA. 2005. New VIA PadLock SDK Extends Security Support in VIA C7®/C7®-M Processors for Windows and Linux Software Developers. (2005). https://www.viatech.com/en/2005/11/new-via-padlock-sdk-extends-security-support-in-via-c7c7-m-processors-for-windows-and-linux-software-developers/ (Accessed October 2017).Google ScholarGoogle Scholar
  66. Xi Wang, Haogang Chen, Alvin Cheung, Zhihao Jia, Nickolai Zeldovich, and M. Frans Kaashoek. 2012. Undefined Behavior: What Happened to My Code?. In Proceedings of the Asia-Pacific Workshop on Systems (APSYS '12). ACM, New York, NY, USA, Article 9, 7 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Xi Wang, Nickolai Zeldovich, M. Frans Kaashoek, and Armando Solar-Lezama. 2013. Towards Optimization-safe Systems: Analyzing the Impact of Undefined Behavior. In Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles (SOSP '13). ACM, New York, NY, USA, 260--275. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Henry S Warren. 2013. Hacker's delight. Pearson Education. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Deng Xu. 2011. {Frama-c-discuss} inline assembly code. (2011). https://lists.gforge.inria.fr/pipermail/frama-c-discuss/2011-March/002589.html (Accessed October 2017).Google ScholarGoogle Scholar
  70. Zhongxing Xu, Ted Kremenek, and Jian Zhang. 2010. A Memory Model for Static Analysis of C Programs. In Leveraging Applications of Formal Methods, Verification, and Validation - 4th International Symposium on Leveraging Applications, ISoLA 2010, Heraklion, Crete, Greece, October 18-21, 2010, Proceedings, Part I. 535--548. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Xuejun Yang, Yang Chen, Eric Eide, and John Regehr. 2011. Finding and Understanding Bugs in C Compilers. In Proceedings of the 32Nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '11). ACM, New York, NY, USA, 283--294. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Richard M. Yoo, Christopher J. Hughes, Konrad Lai, and Ravi Rajwar. 2013. Performance Evaluation of Intel Transactional Synchronization Extensions for High-performance Computing. In Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis (SC '13). ACM, New York, NY, USA, Article 19, 11 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. An Analysis of x86-64 Inline Assembly in C Programs

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 53, Issue 3
            VEE '18
            March 2018
            99 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/3296975
            Issue’s Table of Contents
            • cover image ACM Conferences
              VEE '18: Proceedings of the 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments
              March 2018
              106 pages
              ISBN:9781450355797
              DOI:10.1145/3186411

            Copyright © 2018 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 25 March 2018

            Check for updates

            Qualifiers

            • tutorial
            • Research
            • Refereed limited

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!