Skip to content
Merged

Next #14

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
10dca7b
Add CPUID support
magistermaks Apr 4, 2026
c3aacdf
Restructure project
magistermaks Apr 4, 2026
8fe8232
New debug dump function
magistermaks Apr 9, 2026
ed4e11b
Add x86 SSE operations
magistermaks Apr 9, 2026
7f516c9
Add COMISS, UCOMISS, SHUFPS, UNPCKHPS, UNPCKLPS, CVTSS2SI, LDMXCSR, S…
magistermaks Apr 9, 2026
8590832
Add MOVSS, MOVUPS, CVTTSS2CSI, MOVNTPS, SFENCE
magistermaks Apr 9, 2026
ab33c38
Runtime SSE test
magistermaks Apr 10, 2026
cdb2486
Add SSE support to TASML
magistermaks Apr 10, 2026
834cf28
Cleanup
magistermaks Apr 10, 2026
2d9d125
Resolved 2 TODOs, cleanup
magistermaks Apr 11, 2026
4a71b1d
Separate platform specific logic
magistermaks Apr 14, 2026
ef659a6
Everything is broken
magistermaks Apr 15, 2026
9739896
Add AArch64 to Github CI
magistermaks Apr 16, 2026
3b54896
Add Windows to CI
magistermaks Apr 16, 2026
870c6a3
Windows bugfixes
magistermaks Apr 17, 2026
97b9176
Further Windows work
magistermaks Apr 17, 2026
f9f7443
Windows ELF fixes
magistermaks Apr 18, 2026
e5f85b1
Fix all Windows tests
magistermaks Apr 18, 2026
6b42802
AArch64 CAS instructions
magistermaks Apr 19, 2026
6048fdc
AArch64 LDAR instructions
magistermaks Apr 19, 2026
10516dc
AArch64 LDADD instructions
magistermaks Apr 20, 2026
061c331
Better tests
magistermaks Apr 21, 2026
8112405
AArch64 LDP/LDPSW instructions
magistermaks Apr 21, 2026
c1bc823
AArch64 LDNP instruction
magistermaks Apr 22, 2026
bef5ba0
AArch64 LDXP instruction
magistermaks Apr 22, 2026
ea857c3
Fixed encoding
magistermaks Apr 23, 2026
fb731d8
AArch64 STP/STNP instructions
magistermaks Apr 23, 2026
ac08d5a
AArch64 ERET instructions
magistermaks Apr 23, 2026
79267a2
AArch64 atomic load instructions
magistermaks Apr 23, 2026
5b16f17
AArch64 CCMP/CCMN instructions
magistermaks Apr 24, 2026
3f88482
AArch64 SWP instruction
magistermaks Apr 25, 2026
3fd63e4
AArch64 ADD/SUB/ADDS/SUBS (immediate) instructions
magistermaks Apr 26, 2026
c774222
AArch64 ADD/SUB/ADDS/SUBS (shifted register) instructions
magistermaks Apr 26, 2026
e7cba77
AArch64 CSINV/CINV/CSETM/CSNEG/CNEG instructions
magistermaks Apr 26, 2026
8c7868c
AArch64 CLREX instruction
magistermaks Apr 26, 2026
a24cc1b
AArch64 immediate CMP/CMN
magistermaks Apr 26, 2026
5a48d00
AArch64 EON/LDAXP instructions
magistermaks Apr 27, 2026
200c874
AArch64 exclusive load/stores
magistermaks Apr 28, 2026
1795612
CMake bugfix
magistermaks Apr 28, 2026
898365b
Minor cleanup
magistermaks Apr 28, 2026
d13c810
AArch64 LDTR/STTR/LDUR/STUR instructions
magistermaks May 2, 2026
c748b1c
More AArch64 instruction aliases
magistermaks May 2, 2026
504a42b
Add basic PRFM
magistermaks May 2, 2026
7fac87c
Update README.md
magistermaks May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 50 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ name: ci.yml

on:
push:
branches:
- master
branches: ['master', 'next']
pull_request:
types: [ opened, synchronize, reopened ]
branches: ['master', 'next']

jobs:
linux-x86:
Expand All @@ -19,10 +19,57 @@ jobs:
sudo apt-get install -y cmake g++

- name: Configure
run: cmake . -B build
run: cmake -B build

- name: Build
run: cmake --build build

- name: Test x86
run: cd build && ./test

linux-aarch64:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4

- name: Dependencies
run: |
sudo apt-get update
sudo apt-get install -y cmake g++

- name: Configure
run: cmake -B build

- name: Build
run: cmake --build build

- name: Test AArch64
run: cd build && ./test

windows-x86:
runs-on: windows-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4

- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true

- name: Dependencies
shell: msys2 {0}
run: pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-python --noconfirm

- name: Configure
shell: msys2 {0}
run: cmake -B build -G Ninja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++

- name: Build
shell: msys2 {0}
run: cmake --build build

- name: Test
shell: msys2 {0}
run: cd build && ./test.exe
11 changes: 6 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,19 @@ endif()
FetchContent_Declare(
vstl
GIT_REPOSITORY https://github.com/magistermaks/lib-vstl
GIT_TAG 8e590538f66e21aca2558c3029a275725a8f2be3
GIT_TAG c7f1069ea12fbe8087067841c491940fc3f6dc7f
)

FetchContent_MakeAvailable(vstl)

set(ASMIO_WRITERS
src/asm/x86/writer.hpp
src/asm/aarch64/writer.hpp
src/asmio/x86/writer.hpp
src/asmio/aarch64/writer.hpp
)

set(ASMIO_BRIDGES "${ASMIO_WRITERS}")

list(TRANSFORM ASMIO_BRIDGES REPLACE "src/asm/(.*)/writer.hpp" "${PROJECT_BINARY_DIR}/src/generated/\\1.hpp")
list(TRANSFORM ASMIO_BRIDGES REPLACE "src/asmio/(.*)/writer.hpp" "${PROJECT_BINARY_DIR}/src/generated/\\1.hpp")
list(TRANSFORM ASMIO_WRITERS PREPEND "${PROJECT_SOURCE_DIR}/")

add_custom_command(
Expand Down Expand Up @@ -70,7 +70,8 @@ add_executable(test
test/elf.cpp
)
target_link_libraries(test PRIVATE asmiov)
target_include_directories(test PRIVATE ${ASMIOV_INCLUDE_DIRS} ${vstl_SOURCE_DIR})
target_include_directories(test PRIVATE ${ASMIOV_INCLUDE_DIRS})
target_link_libraries(test PRIVATE vstl)

if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(asmiov PUBLIC
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ code generation using the build-in C++ API with syntax closely matching the sour
The project consists of a `tasml` CLI assembler and a `test` unit test runner.

The code unique to the CLI utility is separated from the rest of
the library and located in the `/src/tasml`. The `/src/file` contains binary file IO, and `/src/asm`
implements the assembler itself.
the library (located in `/src/asmio`) and located in the `/src/tasml`.

## Utility
The example of the syntax used by `tasml` utility, the API version of the exact same code can be seen below.
Expand Down
10 changes: 0 additions & 10 deletions src/asm/aarch64/argument/shift.hpp

This file was deleted.

12 changes: 0 additions & 12 deletions src/asm/aarch64/argument/sizing.hpp

This file was deleted.

Loading
Loading