diff options
| author | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
| commit | baf4910870a6e8999802b9a4a22eabd4142a34e3 (patch) | |
| tree | 2d11443dc21e53bd0d99d015cf789937d6d95862 /2020/10/possible_seq.asm | |
| parent | 49d0c908f24b2c193c9deed1716fe36061ba26a1 (diff) | |
Move all Advent of Codes into one repo
Diffstat (limited to '2020/10/possible_seq.asm')
| -rw-r--r-- | 2020/10/possible_seq.asm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/2020/10/possible_seq.asm b/2020/10/possible_seq.asm new file mode 100644 index 0000000..b737d13 --- /dev/null +++ b/2020/10/possible_seq.asm @@ -0,0 +1,30 @@ +global possible_seq + +section .rodata + TRIB: dq 1, 1, 2, 4, 7 ; tribonacci sequence (without first 2 zeroes) + +section .text + +possible_seq: + mov eax, 1 ; set up return value + xor ecx, ecx ; # of connected elements counter + lea rdx, [rdi + 4 * rsi - 4] ; pointer to the last element + lea r8, [rel TRIB] + jmp .loop +.ncon: + imul rax, qword [r8 + 8 * rcx] + xor ecx, ecx + add rdi, 4 + cmp rdi, rdx + jae .return +.loop: + mov esi, dword [rdi + 4] + sub esi, dword [rdi] + cmp esi, 1 + jne .ncon + inc ecx + add rdi, 4 + cmp rdi, rdx + jb .loop +.return: + ret |
