mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
e04bcb91b4
Will not be doing most of the course in assembly for now. Assemblers are missing a bunch of ergonomics not related to to instruction abstraction. Mostly related to offset and data typw width calulations and how to ergonomically utilize those symbols within the assembly syntax. The GNU gas macros are terrible and struct member resolution must be done manually. There is no utilities for doing stack allocations with alignment in mind either, no way to get info on the system's calling convention for foreign symbols (not even as a diagnostic, etc). C is a terrible for inline assembly, and gas doesn't support grabbing C struct info from header files (even though they are part of the same toolchain collection). There is no utilities for doing stack allocations with alignment in mind either, no way to get info on the system's calling convention for foreign symbols (not even as a diagnostic, etc). Low-level dev really is in a catch 22 of bad tooling.
47 lines
1.5 KiB
ArmAsm
47 lines
1.5 KiB
ArmAsm
.equ A2_S16, (S16 * 2)
|
|
.equ A2_S32, (S32 * 2)
|
|
# Extent_2S16 { S16 width; S16 height; }
|
|
.equ Extent_2S16_width, (S16 * 0)
|
|
.equ Extent_2S16_height, (S16 * 1)
|
|
.equ Extent_2S16, (S16 * 2)
|
|
# Extent_2S32 { S32 width; S32 height; }
|
|
.equ Extent_2S32_width, (S32 * 0)
|
|
.equ Extent_2S32_height, (S32 * 1)
|
|
.equ Extent_2S32, (S32 * 2)
|
|
# Vec_2S16 { S16 x; S16 y; }
|
|
.equ Vec_2S16_x, (S16 * 0)
|
|
.equ Vec_2S16_y, (S16 * 1)
|
|
.equ Vec_2S16, (S16 * 2)
|
|
# Vec_2S32 { S32 x; S32 y; }
|
|
.equ Vec_2S32_x, (S32 * 0)
|
|
.equ Vec_2S32_y, (S32 * 1)
|
|
.equ Vec_2S32, (S32 * 2)
|
|
# Range_2S16 { Vec_2S16 p0; Vec_2S16 p1; }
|
|
.equ Range_2S16_p0, (Vec_2S16 * 0)
|
|
.equ Range_2S16_p1, (Vec_2S16 * 1)
|
|
.equ Range_2S16_p0_x, (S16 * 0)
|
|
.equ Range_2S16_p0_y, (S16 * 1)
|
|
.equ Range_2S16_p1_x, (S16 * 2)
|
|
.equ Range_2S16_p1_y, (S16 * 3)
|
|
.equ Range_2S16, (S16 * 4)
|
|
# Range_2S32 { Vec_2S32 p0; Vec_2S32 p1; }
|
|
.equ Range_2S32_p0, (Vec_2S32 * 0)
|
|
.equ Range_2S32_p1, (Vec_2S32 * 1)
|
|
.equ Range_2S32_p0_x, (S32 * 0)
|
|
.equ Range_2S32_p0_y, (S32 * 1)
|
|
.equ Range_2S32_p1_x, (S32 * 2)
|
|
.equ Range_2S32_p1_y, (S32 * 3)
|
|
.equ Range_2S32, (S32 * 4)
|
|
# Rect_S16 { S16 x; S16 y; S16 width; S16 height; }
|
|
.equ Rect_S16_x, (S16 * 0)
|
|
.equ Rect_S16_y, (S16 * 1)
|
|
.equ Rect_S16_width, (S16 * 2)
|
|
.equ Rect_S16_height, (S16 * 3)
|
|
.equ Rect_S16, (S16 * 4)
|
|
# Rect_S32 { S32 x; S32 y; S32 width; S32 height; }
|
|
.equ Rect_S32_x, (S32 * 0)
|
|
.equ Rect_S32_y, (S32 * 1)
|
|
.equ Rect_S32_width, (S32 * 2)
|
|
.equ Rect_S32_height, (S32 * 3)
|
|
.equ Rect_S32, (S32 * 4)
|