Skip to content

Latest commit

 

History

History
94 lines (67 loc) · 3.98 KB

readme.md

File metadata and controls

94 lines (67 loc) · 3.98 KB

VSCode Compiler Explorer

VSCode compiler explorer is an extension that allows you to view Compiler Explorer output in VSCode.

Compiler Explorer: https://godbolt.org/ Compiler Explorer Github: https://github.com/mattgodbolt/compiler-explorer

Display-Example

Usage

The default settings are enough to get started. Simply create a test.c file like below

int square(int num) {
    return num * num;
}

int main() {
    int i = 0;
    return square(i);
}

Then open the compiler explorer extension; Ctrl + shift + p, then search compiler-explorer to open the compiler explorer.

The default settings are to use GCC 9.2.0 from https://godbolt.org with high optimizations -O3. The output you will see is x86.

Advanced Usage

This extension does not compile your code itself. It uses the Compiler Explorer API to do so (https://github.com/mattgodbolt/compiler-explorer/blob/master/docs/API.md).

You need to specify what compiler and compiler options you want to include in the API call.

{
    "compiler-explorer.url": "https://godbolt.org", // url of the compiler explorer you want to use.
    "compiler-explorer.compilerDefault": "carmg820", // Compiler code - See help below.
    "compiler-explorer.optionsDefault": "-O3", // Compiler options
    "compiler-explorer.debug": true, // true indicates that the extension will print debug to its output channel.
    "compiler-explorer.include": [<filepaths>]
}

Once your settings are specified, you can open the compiler explorer with the command.

Ctrl + shift + p, then search compiler-explorer to open the compiler explorer. It will automatically update when you save the file you are editing.

compiler-explorer.include may contain absolute filepaths or filepaths starting with ${workspaceFolder}.

Compiler Selection

The Compiler Explorer assigns a unique code to each compiler it offers. This is the compiler code that you need to put in the config settings. You can find a list of the compilers offered by Compiler Explorer, with a list of human readable names at (simple GET request) <compiler-explorer.url>/api/compilers. E.g. https://godbolt.org/api/compilers provides a list that starts like,

Compiler Name             | Name
cc65_217                  | 6502 cc65 2.17
cc65_trunk                | 6502 cc65 trunk
farm64g640                | AARCH64 gfortran 6.4
farm64g730                | AARCH64 gfortran 7.3
farm64g820                | AARCH64 gfortran 8.2
armg454                   | ARM gcc 4.5.4 (linux)
carmg454                  | ARM gcc 4.5.4 (linux)
armg464                   | ARM gcc 4.6.4 (linux)
carmg464                  | ARM gcc 4.6.4 (linux)
armhfg54                  | ARM gcc 5.4 (linux)
carmhfg54                 | ARM gcc 5.4 (linux)
arm541                    | ARM gcc 5.4.1 (none)
carm541                   | ARM gcc 5.4.1 (none)
armg630                   | ARM gcc 6.3.0 (linux)
carmg630                  | ARM gcc 6.3.0 (linux)
armg640                   | ARM gcc 6.4
carmg640                  | ARM gcc 6.4
arm710                    | ARM gcc 7.2.1 (none)

Current Restrictions

I haven't done any validation for anything other than C/C++. Currently the extension checks you are using C/C++, Java, Python. It also allows you to use a custom language as long as it is supported at https://godbolt.org To use a custom language please set the appropriate compiler in the default compiler setting.

In order to use the compiler-explorer.include option, you must host the compiler explorer yourself (e.g. Locally) and enable the -I command line argument. Please see the compiler explorer github for instructions.

E.g. On your local instance of compiler explorer, open the config compiler-explorer.defaults.properties, and change the optionsBlacklistRe= regular expression to NOT match -I.

Current Bugs

Syntax Highlighting has issues.

Todo

I'd like to use an already existing syntax/tokenizer for the assembly. I want to use the syntax highlighter from compiler explorer.