From cd646947074a1793d2d9d7ba556853f92be0bab2 Mon Sep 17 00:00:00 2001 From: Nicholas Tay Date: Mon, 23 Oct 2023 21:34:30 +1100 Subject: Factor non-linux parts out --- pasmgen.inc | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pasmgen.inc (limited to 'pasmgen.inc') diff --git a/pasmgen.inc b/pasmgen.inc new file mode 100644 index 0000000..95fadb7 --- /dev/null +++ b/pasmgen.inc @@ -0,0 +1,55 @@ +macro genclass class, class_len +{ + ;; Generate 16 bits (smallest) of randomness from the cpu + rdrand ax + + ;; Modulo into len range to index in + xor rdx, rdx + mov rbx, class_len + div bx + + ;; Save output letter into out_buf, bump rcx + add rdx, class + mov rdx, [rdx] + mov [rcx], rdx + inc rcx + + inc rsi +} + +generate: + ;; Store which output byte we're up to in rcx + mov rcx, out_buf + ;; Store chars generated in rsi + xor rsi, rsi + +tripleter: + genclass consonants, consonants_len + genclass vowels, vowels_len + genclass consonants, consonants_len + dec r8 + test r8, r8 + jnz tripleter +symboler: + genclass symbols, symbols_len + dec r9 + test r9, r9 + jnz symboler +numberer: + genclass numbers, numbers_len + dec r10 + test r10, r10 + jnz numberer + + ;; Append new line to string + mov [rcx], word 10 + inc rsi + + ;; Special case to caps the first character + xor rax, rax + mov al, byte [out_buf] + sub al, 32 + mov rbx, out_buf + mov [rbx], al + + jmp ok -- cgit