From 8441a7cda3fd1a9fe161cd575832599255c62109 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Tue, 9 Apr 2024 12:20:52 +0800 Subject: [PATCH] wip --- 2020/day3/solution.s | 20 ++++---------------- 2020/deps.mk | 3 ++- 2023/day3/sample.txt | 10 ++++++++++ 2023/day3/solution.s | 29 +++++++++++++++++++++++++++++ 2023/deps.mk | 11 +++++++++++ Makefile | 1 + common/input_stride.s | 11 +++++++++++ 7 files changed, 68 insertions(+), 17 deletions(-) create mode 100644 2023/day3/sample.txt create mode 100644 2023/day3/solution.s create mode 100644 2023/deps.mk create mode 100644 common/input_stride.s diff --git a/2020/day3/solution.s b/2020/day3/solution.s index 84e9073..058defb 100644 --- a/2020/day3/solution.s +++ b/2020/day3/solution.s @@ -8,9 +8,9 @@ _input: mov.l size,r9 /* returns stride in r1 */ - mova _calculate_stride,r0 + mov.l input_stride_ptr,r0 jsr @r0 - mov r8,r1 + mov r8,r1 /* r1 arg: copy of r8 */ mov r1,r10 /* r10: stride */ @@ -134,20 +134,8 @@ end_of_slope: mov #-1,r1 /* -1: end of slope */ .balign 4 -div32_16_ptr: .long _div32_16 - - .balign 4 -_calculate_stride: - /* r8: const input start */ - /* r1: input start (initialized by caller) */ - /* return r1 : stride */ -loop: - mov.b @r1+,r0 - cmp/eq #0xa,r0 /* ascii space */ - bf loop - sub r8,r1 /* r1 - r8 → r1 */ - rts - nop +div32_16_ptr: .long _div32_16 +input_stride_ptr: .long _input_stride .balign 4 start: .long _binary_2020_day3_input_txt_start diff --git a/2020/deps.mk b/2020/deps.mk index f79ab0d..56b84a7 100644 --- a/2020/deps.mk +++ b/2020/deps.mk @@ -11,7 +11,8 @@ 2020/day3/solution.o \ 2020/day3/sample.txt.o \ 2020/day3/input.txt.o \ - common/div32_16.o + common/div32_16.o \ + common/input_stride.o 2020/day3/solution.elf: $(2020_DAY3_OBJ) $(DEFAULT_LINK) diff --git a/2023/day3/sample.txt b/2023/day3/sample.txt new file mode 100644 index 0000000..b20187f --- /dev/null +++ b/2023/day3/sample.txt @@ -0,0 +1,10 @@ +467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.. diff --git a/2023/day3/solution.s b/2023/day3/solution.s new file mode 100644 index 0000000..f2ced6a --- /dev/null +++ b/2023/day3/solution.s @@ -0,0 +1,29 @@ + .global _start +_start: + mov.l start,r8 + mov.l end,r9 + + /* returns stride in r1 */ + mov.l input_stride_ptr,r0 + jsr @r0 + mov r8,r1 /* r1 arg: copy of r8 */ + + mov r1,r10 /* r10: stride */ + + /* return r1: number */ + /* return r0: digits */ +next_number: + mov.l parse_base10_ptr,r0 + jsr @r0 + mov r8,r11 /* r11: temporary for r8 original value */ + cmp/eq #0,r0 + bt next_number + nop + + .balign 4 +parse_base10_ptr: .long _parse_base10 +input_stride_ptr: .long _input_stride + + .balign 4 +start: .long _binary_2023_day3_sample_txt_start +end: .long _binary_2023_day3_sample_txt_end diff --git a/2023/deps.mk b/2023/deps.mk new file mode 100644 index 0000000..b039839 --- /dev/null +++ b/2023/deps.mk @@ -0,0 +1,11 @@ +2023_DAY3_OBJ = \ + 2023/day3/solution.o \ + 2023/day3/sample.txt.o \ + common/parse_base10.o \ + common/input_stride.o + +2023/day3/solution.elf: $(2023_DAY3_OBJ) + $(DEFAULT_LINK) + +ALL_ELF += \ + 2023/day3/solution.elf diff --git a/Makefile b/Makefile index f8560ef..d8bc68d 100644 --- a/Makefile +++ b/Makefile @@ -79,5 +79,6 @@ MAKEFLAGS += --no-builtin-rules include 2019/deps.mk include 2020/deps.mk +include 2023/deps.mk all: $(subst .elf,.bin,$(ALL_ELF)) diff --git a/common/input_stride.s b/common/input_stride.s new file mode 100644 index 0000000..0ac02af --- /dev/null +++ b/common/input_stride.s @@ -0,0 +1,11 @@ + .global _input_stride +_input_stride: + /* r8: const input start */ + /* r1: input start (initialized by caller) */ + /* return r1 : stride */ +loop: + mov.b @r1+,r0 + cmp/eq #0xa,r0 /* ascii space */ + bf loop + rts + sub r8,r1 /* r1 - r8 → r1 */