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.
%0 Conference Paper
%1 Rigger:2018:Inline
%A Rigger, Manuel
%A Marr, Stefan
%A Kell, Stephen
%A Leopoldseder, David
%A Mössenböck, Hanspeter
%B VEE ’18: 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments
%D 2018
%K Analysis Assembly C Empirical GitHub MeMyPublication Study Survey myown
%P 84--99
%R 10.1145/3186411.3186418
%T An Analysis of x86-64 Inline Assembly in C Programs
%X 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.
%@ 978-1-4503-5579-7/18/03
@inproceedings{Rigger:2018:Inline,
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.},
acceptancerate = {0.32},
added-at = {2018-02-26T18:25:52.000+0100},
author = {Rigger, Manuel and Marr, Stefan and Kell, Stephen and Leopoldseder, David and Mössenböck, Hanspeter},
biburl = {https://www.bibsonomy.org/bibtex/2efe0c9eb239ce5fa2703c560add27e53/gron},
booktitle = {VEE ’18: 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments},
doi = {10.1145/3186411.3186418},
interhash = {52e0669b54b01388250ea0ca63817ec6},
intrahash = {efe0c9eb239ce5fa2703c560add27e53},
isbn = {978-1-4503-5579-7/18/03},
keywords = {Analysis Assembly C Empirical GitHub MeMyPublication Study Survey myown},
month = {March},
numpages = {16},
pages = {84--99},
pdf = {http://stefan-marr.de/downloads/vee18-rigger-et-al-an-analysis-of-x86-64-inline-assembly-in-c-programs.pdf},
series = {VEE'18},
timestamp = {2018-08-28T13:47:02.000+0200},
title = {{An Analysis of x86-64 Inline Assembly in C Programs}},
year = 2018
}