Skip to content

smashedpumpkin/gpu-disasm

Repository files navigation

GPU Disassembler (gpu-disasm)

A small (16KB) VS Code extension that runs dissassembler tools on known GPU program binary formats and shows the output with a basic syntax highlight. This extension collects no data; and has a small and carefully chosen supply chain.

This extension is created entirely by AI under my direction, and is biased towards my own opinion about ergonomics. I understand if you don't like AI, please feel free to not use this extension.

Features

  • Automated Magic Byte Detection: Automatically identifies GPU binary formats by inspecting the first 64 bytes of a file.
  • Multi-Architecture Support:
    • NVIDIA CUDA:
      • Standalone CUBIN (.cubin) via nvdisasm.
      • Fatbinary (.fatbin) via cuobjdump.
      • PTX (.ptx) intermediate assembly.
    • DirectX: DXBC (including DXIL and legacy DXBC) via dxc -dumpbin.
    • Vulkan/OpenCL: SPIR-V (Little and Big Endian) via spirv-dis.
    • Generic ELF: Basic disassembly via objdump.
  • Syntax Highlighting: Custom, high-fidelity grammars for:
    • SASS (NVIDIA Shader Assembly)
    • PTX (NVIDIA Parallel Thread Execution)
    • SPIR-V Assembly
    • DXIL Assembly
  • Seamless Workflow: Opens disassembly output in a side-by-side editor with the appropriate language mode automatically applied.

Usage

  1. Right-click any file in the Explorer or within an open Editor.
  2. Select Disassemble GPU Program.
  3. The extension will identify the format, invoke the necessary tool, and show the assembly output.

Requirements

The extension relies on the following tools being available in your system PATH depending on the files you wish to disassemble:

  • nvdisasm and cuobjdump (NVIDIA CUDA Toolkit)
  • dxc (DirectX Shader Compiler)
  • spirv-dis (SPIRV-Tools)
  • objdump (GNU Binutils or LLVM)

About

A small VSCode extension to make running standard GPU program disassembly tools easy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors