Compare commits
2 Commits
2c45a74187
...
8441a7cda3
Author | SHA1 | Date | |
---|---|---|---|
8441a7cda3 | |||
98746b4fb4 |
@ -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
|
||||
|
@ -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)
|
||||
|
10
2023/day3/sample.txt
Normal file
10
2023/day3/sample.txt
Normal file
@ -0,0 +1,10 @@
|
||||
467..114..
|
||||
...*......
|
||||
..35..633.
|
||||
......#...
|
||||
617*......
|
||||
.....+.58.
|
||||
..592.....
|
||||
......755.
|
||||
...$.*....
|
||||
.664.598..
|
29
2023/day3/solution.s
Normal file
29
2023/day3/solution.s
Normal file
@ -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
|
11
2023/deps.mk
Normal file
11
2023/deps.mk
Normal file
@ -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
|
1
Makefile
1
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))
|
||||
|
11
common/input_stride.s
Normal file
11
common/input_stride.s
Normal file
@ -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 */
|
@ -6,6 +6,7 @@ _parse_base10:
|
||||
/* return r0 = number of digits */
|
||||
mov #0,r1 /* r1: accumulated number */
|
||||
mov r8,r0 /* r0: number of digits */
|
||||
add #1,r0
|
||||
parse_base10_loop:
|
||||
mov.b @r8+,r2
|
||||
add #-48,r2 /* ascii '0' */
|
||||
@ -20,5 +21,6 @@ parse_base10_loop:
|
||||
bra parse_base10_loop
|
||||
add r2,r1
|
||||
parse_base10_rts:
|
||||
rts
|
||||
sub r8,r0
|
||||
rts
|
||||
neg r0,r0
|
||||
|
Loading…
x
Reference in New Issue
Block a user