Commit Graph

6 Commits

Author SHA1 Message Date
Scott Graham
d166a61141 Implementation of Windows amd64_win target
This is an implementation of the Windows ABI. It supports most features
(struct passing/returning, varargs, env). TLS is not yet supported.

This patch does not actually port QBE to Windows, it only allows QBE to
generate correct asm to target Windows. As a result, testing is
accomplished on a Linux host, by using a cross-compiling toolchain, and
running the resulting binaries by using wine. See:

	TARGET=amd64_win tools/test.sh all

A few cross-platform tests were changed from 'long' to 'long long' in
driver code because long in C does not match the size of a QBE 'l' on
Windows.
2026-02-12 09:17:17 +01:00
Quentin Carbonneaux
79f3673d20 new arm64_apple target
Should make qbe work on apple
arm-based hardware.
2022-10-03 10:41:26 +02:00
Michael Forney
4e93eeaa3b add rv64 backend
It is mostly complete, but still has a few ABI bugs when passing
floats in structs, or when structs are passed partly in register,
and partly on stack.
2022-02-17 22:43:12 +01:00
Quentin Carbonneaux
f4ddc9e54e enable arm64 tests
The vararg tests had to be changed because
va_list is 32-bit wide on arm.  The astute
reader will notice that the way we pass
va_list values is wrong, we should be using
the ':valist' type as defined below instead
of 'l'.  But eh, that works for now, because
of the ABI.

    type :valist = align 8 { 32 }
2017-04-08 22:10:01 -04:00
Quentin Carbonneaux
1b4943eb1f implement export control 2016-03-28 14:57:20 -04:00
Quentin Carbonneaux
36635660b4 extract tests out of src 2016-03-27 15:00:45 -04:00