# Binary Objects

A `core.asm.Binary` object represents a `core.asm.Listing` that has been transformed into machine code. The Binary itself contains the generated machine code and associated metadata needed for exception handling.

A `Binary` object is created from a `Listing` that contains the code that should be compiled into machine code, and an `core.asm.Arena` that describes which platform to compile for. As such, it is possible to compile code for other platforms than the current one. Such code is, however, not possible to execute. An `Arena` suitable for the current platform can be retrieved by calling the function `core.asm.Arena core.asm.arena()`.

Compiling a listing into machine code thus looks as follows in Basic Storm:

    Binary compile(Listing l) {
        return Binary(core:asm:arena(), l);
    }

As mentioned previously, a `Binary` object inherits from the `Content` class, and it is thus possible to specify the `Binary` as the content of a `RefSource` object, and thus call it from other functions in the system.

To execute compiled code from Basic Storm, it is necessary to attach it to a `Function` object. The example in the next page illustrates how this is done.