Skip to content

Crashes and errors when building for Windows X86-64 with asm optimizations (OC_X86_ASM) #21

@berarma

Description

@berarma

Microsoft X64 uses callee saved registers convention unlike the other architectures. The assembler optimizations don't account for this, and can overwrite some register values used by the calling function.

In my tests, this happened when a float value was being stored in a register (usually xmm6 or xmm7) in the calling function. Godot for Windows had to turn asm optimizations off because of this. Other projects might be affected without knowing. Some builds can be unaffected depending on how registers are allocated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions