Compare commits
1 Commits
8fbaa207c5
...
421c5deaf8
Author | SHA1 | Date | |
---|---|---|---|
421c5deaf8 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,4 +2,3 @@
|
|||||||
*.o
|
*.o
|
||||||
*.bin
|
*.bin
|
||||||
*.d
|
*.d
|
||||||
*.map
|
|
||||||
|
@ -1,323 +0,0 @@
|
|||||||
.#....#..##.#..####....#.......
|
|
||||||
......#..#....#....###......#.#
|
|
||||||
#..#.....#..............##.#.#.
|
|
||||||
#.#...#....#...#......##..#..#.
|
|
||||||
...#..#.##..#..#........###.#.#
|
|
||||||
...#.#..........#.........##...
|
|
||||||
...#.#....#.#....#..#......#...
|
|
||||||
..##.#.....#.......#.###..#..##
|
|
||||||
..#.......#.......#....##......
|
|
||||||
....##........##.##...#.###.##.
|
|
||||||
#.......#.......##..#......#...
|
|
||||||
..##.............##.#......#...
|
|
||||||
...#.####....#.....#...##......
|
|
||||||
.............##.#......#.......
|
|
||||||
..#...#....#......#....#.......
|
|
||||||
..#....#..#............#.......
|
|
||||||
##...#..#........##..#......#..
|
|
||||||
##........##........#.#.......#
|
|
||||||
#.......#........#.#..#....###.
|
|
||||||
.....#..#.#..........##...#....
|
|
||||||
..##...#......#.#...#..#...#...
|
|
||||||
##.##...#......#....#....#...#.
|
|
||||||
#.......#..#.#..#....#..###.#.#
|
|
||||||
#.............#.#....#..#.#....
|
|
||||||
...#.......###.#.##.##.#...#..#
|
|
||||||
.##.......##..##...#..###......
|
|
||||||
.......#.#.#.#..####..#..#..#..
|
|
||||||
...##......#.#.##.###....#.###.
|
|
||||||
###......###......#.#####..#...
|
|
||||||
..#........##..#..##.##..#...#.
|
|
||||||
.....##..#...#..#.##.....#.#...
|
|
||||||
#......#.##....#..##.#....#.#..
|
|
||||||
##.#.##..#................#....
|
|
||||||
......#.#....#......##.....#...
|
|
||||||
..#...##..#..#...#..#.#..#.....
|
|
||||||
........#.#.#.##...#.#.....#.#.
|
|
||||||
#.#......#.....##..#...#.......
|
|
||||||
..#.#......#...........###.....
|
|
||||||
......##....#....##..#..#.#.#.#
|
|
||||||
##....#.###...#......#..#...#..
|
|
||||||
#.#.##....###...####.......#..#
|
|
||||||
##...........#.....#........#.#
|
|
||||||
.##.#..#.....#......#.......#..
|
|
||||||
##..##..###....#.........##....
|
|
||||||
..#..#..#.##...#.#...#........#
|
|
||||||
#.##.###...#.......#...........
|
|
||||||
.........#.................#...
|
|
||||||
#.##...#.....#..##........#....
|
|
||||||
....#.#...##...#...........#...
|
|
||||||
.#.....#.#..#...##..##.....#...
|
|
||||||
.#.....####....#..##..#........
|
|
||||||
...#..#......##.#..##.#.#.#..#.
|
|
||||||
.##.#.....#.....#...#.......##.
|
|
||||||
......#..#..#......#...####....
|
|
||||||
.......#......##..#..##.....#..
|
|
||||||
......#.#..#...#..#.#..........
|
|
||||||
....##.........#...............
|
|
||||||
.#....#..##.....#....##.##.....
|
|
||||||
#.#.....#...#....####....#.#...
|
|
||||||
#.....#....#.#...#.............
|
|
||||||
...#..#.....#....##..#..#......
|
|
||||||
...#.#............#...........#
|
|
||||||
###.#..#.#......#.....##.....#.
|
|
||||||
####....#....###.....#..#.#####
|
|
||||||
.###..#...#.#..#......##.#.#.#.
|
|
||||||
.....#.##.#....#..##....#..#..#
|
|
||||||
...#....#...##.....#......#.#..
|
|
||||||
....#...#....#...#....#.....#.#
|
|
||||||
.#.....#.....#.#..#......#..#..
|
|
||||||
..#..##....##.##....#.....##...
|
|
||||||
#..##...#.##...#..#.#.#.....#..
|
|
||||||
...#..##.#..#....#.#....######.
|
|
||||||
..........#..#.....#....#...##.
|
|
||||||
#.#####.#.###..#.....#.........
|
|
||||||
#....#......#..#.#.##.##..###..
|
|
||||||
..#...###.#.#....##.##...##....
|
|
||||||
.......#....#..#...##......#...
|
|
||||||
...#.#...#..#.....#..##.#......
|
|
||||||
###..##...........#............
|
|
||||||
..#....#.##....#.#..##...#.....
|
|
||||||
##....#...#....#.....#.#..##...
|
|
||||||
..............#.##.#..#..##.###
|
|
||||||
......#..#..#..#.#....###...##.
|
|
||||||
.#...#..#.#.#....#..........#..
|
|
||||||
..#.#.....#..#...........#.##..
|
|
||||||
...#.#......#......#..#..#.#...
|
|
||||||
...#....#.#.#.....#...#.##..#..
|
|
||||||
.#.#..#...#........##.......#..
|
|
||||||
##..........#..#...#....###.#..
|
|
||||||
#.....###......#..#.#.#....#.#.
|
|
||||||
..###.......#.#...............#
|
|
||||||
#....#.....#.#......#..##.##...
|
|
||||||
#.##.#.#....#..#.#...#.#...#..#
|
|
||||||
#....#..#...........#.......#..
|
|
||||||
...#.####.....#.........###.##.
|
|
||||||
......#..#.....#..........#..#.
|
|
||||||
#...#.#..####...#...#.#.##...##
|
|
||||||
.##.........#......#.#.#.......
|
|
||||||
.......##...##.##....###...##..
|
|
||||||
...#..#....#..#.#.#.....#.#....
|
|
||||||
#....#.#.#.......##..###..##...
|
|
||||||
......#............#.#...#..#..
|
|
||||||
#.#.....#......#...#.......###.
|
|
||||||
...#.#................#...#....
|
|
||||||
.....#......#.#..#...##.#.#...#
|
|
||||||
#....#.#..#..#..##..#.##..#....
|
|
||||||
#.................#..#....#....
|
|
||||||
..#....#.......####....###.....
|
|
||||||
.#..#.#.#...###..#...#..###....
|
|
||||||
..#..#.#......#.###..........#.
|
|
||||||
.....#......#.......##....##.#.
|
|
||||||
.#....#........#.#.##.#........
|
|
||||||
#.#..##..#..#.#...####....##...
|
|
||||||
...#....#.#..#...#..........#..
|
|
||||||
.#.....#.##....#...##..........
|
|
||||||
....##....#.....#.....#...#.###
|
|
||||||
.#...##.#.#..##..#...#.#..#..#.
|
|
||||||
..#.......#.##.....#.#........#
|
|
||||||
...#...#.....##..#.#.#....#....
|
|
||||||
...#.....#.......##.........#.#
|
|
||||||
.##.....#..#.#...#.#...#.#...#.
|
|
||||||
...........#...#.###..#...#..#.
|
|
||||||
#.##........#..###.##...####...
|
|
||||||
.#.....#.#...##...#..#..#...##.
|
|
||||||
..#....#..#...#.....#.....##...
|
|
||||||
..###..#.#.....##........#.##..
|
|
||||||
.#.#..##........#.##....#..#.##
|
|
||||||
.####.#..##..#.#..#....##....#.
|
|
||||||
.##....##...#.#........#.......
|
|
||||||
....#..#..#...#..#..#..#.#.....
|
|
||||||
...#......................#....
|
|
||||||
#.....#.#....#..#..#.#..#....#.
|
|
||||||
##.....#.....##..........###...
|
|
||||||
.#..#..............#...##.#.#.#
|
|
||||||
...#...#.#.............#.#..#.#
|
|
||||||
..#.....#.......#......#.#.....
|
|
||||||
.###.#..#..#..#.#..#.....#.....
|
|
||||||
.....##..##...##.......#....###
|
|
||||||
.#........###...##..#....##....
|
|
||||||
#....#.#......##..#....#.##..#.
|
|
||||||
#....#.#...#........##...###...
|
|
||||||
.#.....#...#.###....#.##.#.####
|
|
||||||
###......#....#...#....##..#..#
|
|
||||||
##....#..###......#...#.#.#....
|
|
||||||
..........#......##.#..#.......
|
|
||||||
.#..#......###.........##...#..
|
|
||||||
....#......#....#.........#.#.#
|
|
||||||
##.#.#...#.#...#...#..#......#.
|
|
||||||
....#.##.........#..#.....##.#.
|
|
||||||
........#...#..#.#.#.#.....##..
|
|
||||||
..#......#.#.#..#.....##.......
|
|
||||||
..............#....#....##.#..#
|
|
||||||
....#.#.....#....#.#.###.#....#
|
|
||||||
..#..........#..#......#.##..#.
|
|
||||||
...#...#.#.............#..#....
|
|
||||||
#.......#..#..##.........##..#.
|
|
||||||
..##..#............#.....#.....
|
|
||||||
....#.#..##...#.#..#.........#.
|
|
||||||
........#.......#.##....#....#.
|
|
||||||
...#.....#.#.....#.#....#......
|
|
||||||
..#......##.#.............#.#.#
|
|
||||||
#.#.............#.#.....#......
|
|
||||||
.##....##.#.....#....#...##....
|
|
||||||
.#.#....##....#.....##.........
|
|
||||||
...#.....#.....#.....#..#.###..
|
|
||||||
.......#....#...##.#...#...#..#
|
|
||||||
..#.#.......#...###.#...#....#.
|
|
||||||
.....###..##....###.#.##.......
|
|
||||||
....#..................##.#.##.
|
|
||||||
.#.......###.##...#.#.....#....
|
|
||||||
....#....##...##.....#.#...#..#
|
|
||||||
#..#.....#......##...#....#....
|
|
||||||
#..##.........#.....#...#......
|
|
||||||
...#..##.......##......#..#####
|
|
||||||
.#..###.###.#.##........#......
|
|
||||||
.#...#....#....#.#....#...##...
|
|
||||||
##........#....#.........##..#.
|
|
||||||
.#.....##............#.#.......
|
|
||||||
....#....#...........###.....##
|
|
||||||
.#......#.#.#..#....#.#.....##.
|
|
||||||
......#.##.#..##....#.#.#..#...
|
|
||||||
#....#......#...#..####........
|
|
||||||
......#..#..##..#.......#.#..#.
|
|
||||||
##....##.###.#...#.##.#..#.###.
|
|
||||||
.#.........#...##...#.#......#.
|
|
||||||
..#.#...........####.#....##.##
|
|
||||||
.....#.#..##.#...###...#..#.#..
|
|
||||||
...#..#..##.#...#.....#.##...##
|
|
||||||
..##......##..........#..###...
|
|
||||||
.#......##.....#.##....#.#.##.#
|
|
||||||
...#.......##..##.....#....#...
|
|
||||||
.##...#...#....#..#............
|
|
||||||
#..#....#...........#..........
|
|
||||||
......#...#.#.......#...#.##..#
|
|
||||||
..#.###..#.....#.....#..#.....#
|
|
||||||
....#....#..........##....#..#.
|
|
||||||
.......##.#.#.#......#....#...#
|
|
||||||
####..#.###........#..#......#.
|
|
||||||
#........##.#.#.#.............#
|
|
||||||
.#......#......#..#.##.....#...
|
|
||||||
.....##.##......##.#.....#.#.#.
|
|
||||||
.......##.#.....##.......#.#.#.
|
|
||||||
.#.#..#.#..#.##...#.#....#.#..#
|
|
||||||
.#..##....#..#...##.......#..#.
|
|
||||||
.#.#..#.......#................
|
|
||||||
#........#.#.#......#.#.#.#....
|
|
||||||
##......#...#..##.#...##.##....
|
|
||||||
##.#..#...........##...#..###..
|
|
||||||
......#.####...#........#.#.#..
|
|
||||||
...#........##..###.#.#...#...#
|
|
||||||
.#.....##..#......##......###..
|
|
||||||
..#.#...#......#..#..##.#.....#
|
|
||||||
#....#..#.#..........#...#.....
|
|
||||||
.#......#.##..###..#.#....#..##
|
|
||||||
.......#.......#..#..#......#..
|
|
||||||
..##.....##.#..#..#.....##.....
|
|
||||||
........#.##...#.#.#..#..#..#..
|
|
||||||
...#.######.........#.....#..##
|
|
||||||
.#.#............#....#.........
|
|
||||||
#...#....###.#......#.#........
|
|
||||||
#.........#....#...##..........
|
|
||||||
....#...........#.###.#...###..
|
|
||||||
.........#........#.#.#..#...#.
|
|
||||||
.#.......#.#.....#.#.....#.##..
|
|
||||||
.....#.......#.....#.#.#.......
|
|
||||||
#.##..#..##.......#...#......#.
|
|
||||||
.###.....##...##.#...##.##.#.#.
|
|
||||||
...#......##..##............#.#
|
|
||||||
...#......................#..##
|
|
||||||
#..#..#................#...#...
|
|
||||||
#..#....#.#.#...##.......#..#..
|
|
||||||
....#.#..###.##...#..#.###..#..
|
|
||||||
..#...#....####.#............#.
|
|
||||||
......#....#.#...#.#.#.........
|
|
||||||
#...#........#.....##..###.#..#
|
|
||||||
#....#...#...##...#..#....##...
|
|
||||||
#..#...#..#.......#.#..##.#..#.
|
|
||||||
#.#..........#...........##....
|
|
||||||
.#...###...#......#.......#.#.#
|
|
||||||
.........#.........#...#...##..
|
|
||||||
##.#..###......##..#.....#..#..
|
|
||||||
....##...............#.....#...
|
|
||||||
.....#.....###.#.....#.#.......
|
|
||||||
....#..#......###..#..##..#....
|
|
||||||
......................#.....#..
|
|
||||||
..#..#...##....##....#........#
|
|
||||||
..#....#...#...#.......#.....#.
|
|
||||||
...##.#.#.##......#.#.#.#.####.
|
|
||||||
.###...#..#......#.#..#........
|
|
||||||
#..#...##.#..#..##..##....#...#
|
|
||||||
...#...#..#..#..#........#..##.
|
|
||||||
.##....#.##.#....#...#.#.#....#
|
|
||||||
#..#....#..#....#.......##..#.#
|
|
||||||
...#.#....####...........#...#.
|
|
||||||
#...#####...#.#..#......#...#.#
|
|
||||||
.##....#.#.#..#......#..##.....
|
|
||||||
..........#..#.#.#.....##......
|
|
||||||
.....#....#..................#.
|
|
||||||
.........#...#...#....#..###...
|
|
||||||
.#.#.#....#....................
|
|
||||||
......##............##.###..#..
|
|
||||||
#.#...#........####.##..#.#.##.
|
|
||||||
#........#.#.#.#..#.##.....#...
|
|
||||||
......####..#.##.......#....#..
|
|
||||||
.........#...#...#.....#.......
|
|
||||||
..##.....#...#...#.....##.....#
|
|
||||||
....#...##....#.....#..#..##.##
|
|
||||||
..#.........##...##..###..#....
|
|
||||||
#....#.#.........##.###.#...##.
|
|
||||||
.##...#....#..#..#.#....##.....
|
|
||||||
##..#..#..#...........#.##....#
|
|
||||||
....#..........#...#..#.....#..
|
|
||||||
........###..#..#.#.#.....##...
|
|
||||||
#...#...#..###............###..
|
|
||||||
..#.....#.#.#..#..#.#..#......#
|
|
||||||
..#...##..#....#...#......#....
|
|
||||||
#....#........##.....#..##....#
|
|
||||||
#.....#.#.#..#.......##.#.#.##.
|
|
||||||
..##...#...#.....#..........#..
|
|
||||||
##.....#....#......#..........#
|
|
||||||
......#..#..........#.#..####..
|
|
||||||
......#...#............##...##.
|
|
||||||
..#.......##.......#...###.###.
|
|
||||||
.#..#.#.#...#..##.#......#.#...
|
|
||||||
.##.....##.#.#...#.##.........#
|
|
||||||
#.#.######...........#.#####.#.
|
|
||||||
........#.##...##....##.#.##.#.
|
|
||||||
....#......#.....#.....###...##
|
|
||||||
#..............#.#....#.#....#.
|
|
||||||
....#..###.#.........##.#.#....
|
|
||||||
..#.#.#..##....####..........#.
|
|
||||||
...#..#.......#................
|
|
||||||
...#....#..............#....#..
|
|
||||||
.....#...#...#....#.#.#..#...#.
|
|
||||||
......##.............###.##..##
|
|
||||||
.#...#.#..#......#..#.##.......
|
|
||||||
##.....#.....#.##...#....#.....
|
|
||||||
..#..#.#.#.#.#..........#..###.
|
|
||||||
##..........#........#....#.#..
|
|
||||||
.....#...#........#.#..###....#
|
|
||||||
.###.#........#.##......#.#...#
|
|
||||||
#...##....#....#....##.#.#.....
|
|
||||||
.....#.#............#..........
|
|
||||||
..#.##....................#....
|
|
||||||
.....#..#..#.#..#.##.......#...
|
|
||||||
.....###......#......##......##
|
|
||||||
#.....#.#.......##.......#...#.
|
|
||||||
.#.#...#......#..###...#.....#.
|
|
||||||
#.#..#...#..##.....#...#.#..#..
|
|
||||||
.....#.#..........#..#.........
|
|
||||||
.###..##..##.....#...#...#..##.
|
|
||||||
#...#.#....#.......##..#.......
|
|
||||||
###...#.#.#..#.......#......#..
|
|
||||||
....##........#..........##....
|
|
||||||
............#....#...........#.
|
|
||||||
#..#.#....##..#.#..#......##...
|
|
||||||
.###....##...#....##..........#
|
|
||||||
.###........#........###.....#.
|
|
||||||
...#...#.#......#...#....#.....
|
|
||||||
.###.......#.........#.........
|
|
||||||
....##.#......#...###......##.#
|
|
||||||
.###...#..##.....##.......#....
|
|
||||||
.#.#...#..#.##....#........#...
|
|
@ -1,11 +0,0 @@
|
|||||||
..##.......
|
|
||||||
#...#...#..
|
|
||||||
.#....#..#.
|
|
||||||
..#.#...#.#
|
|
||||||
.#...##..#.
|
|
||||||
..#.##.....
|
|
||||||
.#.#.#....#
|
|
||||||
.#........#
|
|
||||||
#.##...#...
|
|
||||||
#...##....#
|
|
||||||
.#..#...#.#
|
|
@ -1,161 +0,0 @@
|
|||||||
.global _start
|
|
||||||
_start:
|
|
||||||
mova stack_top,r0
|
|
||||||
mov r0,r15
|
|
||||||
|
|
||||||
_input:
|
|
||||||
mov.l start,r8
|
|
||||||
mov.l size,r9
|
|
||||||
|
|
||||||
/* returns stride in r1 */
|
|
||||||
mova _calculate_stride,r0
|
|
||||||
jsr @r0
|
|
||||||
mov r8,r1
|
|
||||||
|
|
||||||
mov r1,r10 /* r10: stride */
|
|
||||||
|
|
||||||
/* part 1 */
|
|
||||||
mov #3,r13 /* right 3 */
|
|
||||||
mov #1,r14 /* down 1 */
|
|
||||||
|
|
||||||
mova _solve,r0
|
|
||||||
jsr @r0
|
|
||||||
nop
|
|
||||||
|
|
||||||
ldc r7,gbr /* part1 answer */
|
|
||||||
|
|
||||||
/* part 2 */
|
|
||||||
mova part2_data,r0
|
|
||||||
mov r0,r4 /* r4: part2 data start */
|
|
||||||
mov #10,r3
|
|
||||||
add r4,r3 /* r3: part2 data end */
|
|
||||||
|
|
||||||
mov #1,r6 /* r6: tree multiplier */
|
|
||||||
|
|
||||||
part2_loop:
|
|
||||||
mov.b @r4+,r13 /* right */
|
|
||||||
mov.b @r4+,r14 /* down */
|
|
||||||
|
|
||||||
mova _solve,r0
|
|
||||||
jsr @r0
|
|
||||||
nop
|
|
||||||
|
|
||||||
dmulu.l r7,r6
|
|
||||||
cmp/eq r4,r3
|
|
||||||
bf/s part2_loop
|
|
||||||
sts macl,r6
|
|
||||||
|
|
||||||
/* part2 answer : mach,macl */
|
|
||||||
|
|
||||||
trapa #0
|
|
||||||
|
|
||||||
/* right, down */
|
|
||||||
.balign 4
|
|
||||||
part2_data:
|
|
||||||
.byte 1, 1
|
|
||||||
.byte 3, 1
|
|
||||||
.byte 5, 1
|
|
||||||
.byte 7, 1
|
|
||||||
.byte 1, 2
|
|
||||||
|
|
||||||
/* r7: number of trees (in/out) */
|
|
||||||
.balign 4
|
|
||||||
_solve:
|
|
||||||
/* initial state */
|
|
||||||
mov #0,r7 /* number of trees encountered */
|
|
||||||
mov #0,r11 /* position X */
|
|
||||||
mov #0,r12 /* position Y */
|
|
||||||
solve_loop:
|
|
||||||
/* return value in r1 */
|
|
||||||
sts.l pr,@-r15
|
|
||||||
mova _slope_step,r0
|
|
||||||
jsr @r0
|
|
||||||
nop
|
|
||||||
lds.l @r15+,pr
|
|
||||||
|
|
||||||
cmp/pz r1 /* r1 ≥ 0 */
|
|
||||||
bf solve_end /* this is the end */
|
|
||||||
bra solve_loop
|
|
||||||
add r1,r7 /* increment tree count */
|
|
||||||
|
|
||||||
solve_end:
|
|
||||||
rts
|
|
||||||
nop
|
|
||||||
|
|
||||||
.balign 4
|
|
||||||
_slope_step:
|
|
||||||
/* r11: position X */
|
|
||||||
/* r12: position Y */
|
|
||||||
/* r13: right N */
|
|
||||||
/* r14: down N */
|
|
||||||
/* r8 : start */
|
|
||||||
/* r9 : size */
|
|
||||||
/* r10: stride */
|
|
||||||
/* return r1 : tree encountered (-1,0,1) */
|
|
||||||
|
|
||||||
add r13,r11 /* r11 + r13 → r11 (X) */
|
|
||||||
add r14,r12 /* r12 + r14 → r12 (Y) */
|
|
||||||
|
|
||||||
/* Y-coordinate × stride → r5 */
|
|
||||||
mulu.w r10,r12 /* offset */
|
|
||||||
sts macl,r5
|
|
||||||
|
|
||||||
sts.l pr,@-r15
|
|
||||||
|
|
||||||
/* X-axis wrap-around */
|
|
||||||
mov r11,r1
|
|
||||||
mov r10,r0
|
|
||||||
add #-1,r0 /* subtract 1 to remove newline */
|
|
||||||
mov.l div32_16_ptr,r2
|
|
||||||
jsr @r2 /* r1 ÷ r0 → r1 ; (clobbers r0,r1) */
|
|
||||||
mov r0,r2 /* save width in r2 (not clobbered) */
|
|
||||||
|
|
||||||
lds.l @r15+,pr
|
|
||||||
|
|
||||||
/* recover the modulus with a multiplication + subtraction */
|
|
||||||
mulu.w r2,r1
|
|
||||||
sts macl,r1
|
|
||||||
mov r11,r0
|
|
||||||
sub r1,r0 /* r0 - r1 → r0
|
|
||||||
|
|
||||||
/* calculate offset (y_off + x_off → off) */
|
|
||||||
add r5,r0
|
|
||||||
/* compare r0 offset with r9 size */
|
|
||||||
cmp/hs r9,r0 /* r0 ≥ r9 → T */
|
|
||||||
bt end_of_slope
|
|
||||||
|
|
||||||
/* get tree */
|
|
||||||
mov.b @(r0,r8),r0
|
|
||||||
cmp/eq #0x23,r0 /* 0x23 ascii `#` */
|
|
||||||
rts
|
|
||||||
movt r1
|
|
||||||
end_of_slope:
|
|
||||||
rts
|
|
||||||
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
|
|
||||||
|
|
||||||
.balign 4
|
|
||||||
start: .long _binary_2020_day3_input_txt_start
|
|
||||||
size: .long _binary_2020_day3_input_txt_size
|
|
||||||
|
|
||||||
.balign 4
|
|
||||||
stack_bot:
|
|
||||||
.rept 16
|
|
||||||
.long 0
|
|
||||||
.endr
|
|
||||||
stack_top:
|
|
14
2020/deps.mk
14
2020/deps.mk
@ -4,18 +4,8 @@
|
|||||||
2020/day2/input.txt.o \
|
2020/day2/input.txt.o \
|
||||||
common/parse_base10.o
|
common/parse_base10.o
|
||||||
|
|
||||||
|
2020/day2/solution.elf:
|
||||||
2020/day2/solution.elf: $(2020_DAY2_OBJ)
|
2020/day2/solution.elf: $(2020_DAY2_OBJ)
|
||||||
$(DEFAULT_LINK)
|
$(DEFAULT_LINK)
|
||||||
|
|
||||||
2020_DAY3_OBJ = \
|
ALL_ELF += 2020/day2/solution.elf
|
||||||
2020/day3/solution.o \
|
|
||||||
2020/day3/sample.txt.o \
|
|
||||||
2020/day3/input.txt.o \
|
|
||||||
common/div32_16.o
|
|
||||||
|
|
||||||
2020/day3/solution.elf: $(2020_DAY3_OBJ)
|
|
||||||
$(DEFAULT_LINK)
|
|
||||||
|
|
||||||
ALL_ELF += \
|
|
||||||
2020/day2/solution.elf \
|
|
||||||
2020/day3/solution.elf
|
|
||||||
|
2
Makefile
2
Makefile
@ -61,7 +61,7 @@ endef
|
|||||||
clean:
|
clean:
|
||||||
find -P \
|
find -P \
|
||||||
-regextype posix-egrep \
|
-regextype posix-egrep \
|
||||||
-regex '.*\.(o|bin|elf|d|map)$$' \
|
-regex '.*\.(o|bin|elf|d)$$' \
|
||||||
-exec rm {} \;
|
-exec rm {} \;
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
.global _div32_16
|
|
||||||
.align 4
|
|
||||||
_div32_16:
|
|
||||||
/* r1 (32 bits) ÷ r0 (16 bits) */
|
|
||||||
shll16 r0
|
|
||||||
cmp/hs r0,r1
|
|
||||||
bt over_div
|
|
||||||
div0u
|
|
||||||
.rept 16
|
|
||||||
div1 r0,r1
|
|
||||||
.endr
|
|
||||||
rotcl r1
|
|
||||||
rts
|
|
||||||
extu.w r1,r1
|
|
||||||
over_div:
|
|
||||||
bra over_div
|
|
||||||
nop
|
|
||||||
/* r1 = quotient */
|
|
Loading…
x
Reference in New Issue
Block a user