Proceedings of the 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments 2018
DOI: 10.1145/3186411.3186418
|View full text |Cite
|
Sign up to set email alerts
|

An Analysis of x86-64 Inline Assembly in C Programs

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 fe… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
9
0

Year Published

2018
2018
2023
2023

Publication Types

Select...
4
2

Relationship

1
5

Authors

Journals

citations
Cited by 12 publications
(9 citation statements)
references
References 47 publications
0
9
0
Order By: Relevance
“…Besides compiler builtins, C projects also contain other elements not specified by the C standard. Rigger et al found that around 30% of popular C projects use x86-64 inline assembly [53]. The current paper demonstrates that GCC builtins are used more frequently than inline assembly, which provides even stronger incentives to implement support by C tools.…”
Section: Related Workmentioning
confidence: 58%
See 1 more Smart Citation
“…Besides compiler builtins, C projects also contain other elements not specified by the C standard. Rigger et al found that around 30% of popular C projects use x86-64 inline assembly [53]. The current paper demonstrates that GCC builtins are used more frequently than inline assembly, which provides even stronger incentives to implement support by C tools.…”
Section: Related Workmentioning
confidence: 58%
“…On x86, which ranked next, the most common builtin was __builtin_cpu_supports followed by __builtin_cpu_init, which allow programmers to query the availability of CPU features such as SIMD support. In x86-64 inline assembly, the equivalent cpuid instruction ranked among the most commonly used instructions [53]. Other x86 builtins were quite diverse and less frequent.…”
Section: Rq2: For What Purposes Are Builtins Used?mentioning
confidence: 99%
“…The use of inline assembly is pretty widespreadwe estimate that 11% of Debian packages written in C/C++ directly or indirectly depends on inline assembly. It includes major projects like GMP and ffmpeg -Rigger et al [7] actually reports that 28% of the top rated C projects on GitHub uses inline assembly. We further estimate that 75% of the chunks found in Debian Jessie 8.11 (used in Sec.…”
Section: Background a Inline Assemblymentioning
confidence: 99%
“…It is supported by major C/C ++ compilers like GCC, clang or Visual Studio, and used quite regularly -usually for optimization or to access system-level features hidden by the host language. For example, we estimate that 11% of Debian packages written in C/C++ directly or indirectly depends on inline assembly, with chunks containing up to 500 instructions, while 28% of the top rated C projects on GitHub contains inline assembly according to Rigger et al [7]. As a matter of fact, inline assembly is a common engineering practice in key areas such as cryptography, multimedia or drivers.…”
Section: Introductionmentioning
confidence: 99%
“…Therefore, this initial survey confirms the importance of GitHub stars to practitioners, when compared to forks and watchers. Additionally, stars are often used by researchers to select GitHub projects for empirical studies in software engineering [7][8][9][10][11][12][13][14]. Therefore, a throughout analysis of starring practices can shed light on the properties and risks involved in this selection.…”
mentioning
confidence: 99%