A method for decompilation of AMD GCN kernels to OpenCL

by   K. I. Mihajlenko, et al.

Introduction: Decompilers are useful tools for software analysis and support in the absence of source code. They are available for many hardware architectures and programming languages. However, none of the existing decompilers support modern AMD GPU architectures such as AMD GCN and RDNA. Purpose: We aim at developing the first assembly decompiler tool for a modern AMD GPU architecture that generates code in the OpenCL language, which is widely used for programming GPGPUs. Results: We developed the algorithms for the following operations: preprocessing assembly code, searching data accesses, extracting system values, decompiling arithmetic operations and recovering data types. We also developed templates for decompilation of branching operations. Practical relevance: We implemented the presented algorithms in Python as a tool called OpenCLDecompiler, which supports a large subset of AMD GCN instructions. This tool automatically converts disassembled GPGPU code into the equivalent OpenCL code, which reduces the effort required to analyze assembly code.


page 1

page 2

page 8

page 9


Making Python Code Idiomatic by Automatic Refactoring Non-Idiomatic Python Code with Pythonic Idioms

Compared to other programming languages (e.g., Java), Python has more id...

Datalog Disassembly

Disassembly is fundamental to binary analysis and rewriting. We present ...

CharmFL: A Fault Localization Tool for Python

Fault localization is one of the most time-consuming and error-prone par...

Characterizing and Understanding GCNs on GPU

Graph convolutional neural networks (GCNs) have achieved state-of-the-ar...

Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments

In software engineering, it is not enough to simply write code that only...

Supporting CUDA for an extended RISC-V GPU architecture

With the rapid development of scientific computation, more and more rese...

CGAL Made More Accessible

We introduce bindings that enable the convenient, efficient, and reliabl...