From 9ebb70dd2a57d4b2ac4b53efa644a77b6079fc2c Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Tue, 22 Dec 2020 01:09:34 +0100 Subject: Use NASM preprocessor to reduce code duplication --- 5/seat_id.asm | 59 +++++++++++++++++++---------------------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/5/seat_id.asm b/5/seat_id.asm index c9ca8b8..6b927ed 100644 --- a/5/seat_id.asm +++ b/5/seat_id.asm @@ -5,44 +5,23 @@ section .data section .text seat_id: - xor eax, eax ; set up return value - cmp BYTE [rdi], 'B' - sete al - shl eax, 1 - xor ecx, ecx - cmp BYTE [rdi + 1], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 2], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 3], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 4], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 5], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 6], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 7], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 8], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 9], 'R' - sete cl - or eax, ecx + xor eax, eax ; set up return value + cmp BYTE [rdi], 'B' + sete al + xor ecx, ecx +%assign i 1 +%rep 6 + shl eax, 1 + cmp BYTE [rdi + i], 'B' + sete cl + or eax, ecx +%assign i i+1 +%endrep +%rep 3 + shl eax, 1 + cmp BYTE [rdi + i], 'R' + sete cl + or eax, ecx +%assign i i+1 +%endrep ret -- cgit v1.2.3