summaryrefslogtreecommitdiffstats
path: root/b32d.asm
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2018-11-29 00:05:39 +0100
committerNao Pross <naopross@thearcway.org>2018-11-29 00:16:27 +0100
commit0c5dffe44ee1a13ab38041de73e3d0373458375e (patch)
tree9c9bfcd6b0b3890c7da2a2ef88510e637969970a /b32d.asm
parentAdd padding to output (diff)
downloadbase32asm-0c5dffe44ee1a13ab38041de73e3d0373458375e.tar.gz
base32asm-0c5dffe44ee1a13ab38041de73e3d0373458375e.zip
Add b32d for future decoder implementation, update test
Diffstat (limited to 'b32d.asm')
-rw-r--r--b32d.asm47
1 files changed, 47 insertions, 0 deletions
diff --git a/b32d.asm b/b32d.asm
new file mode 100644
index 0000000..aa7582b
--- /dev/null
+++ b/b32d.asm
@@ -0,0 +1,47 @@
+section .bss
+
+input_buffer resb 8
+output_buffer resb 8
+
+section .text
+global _start
+
+; read_input
+; reads 5 bytes (40 bits) of input
+; uses reg: rax, rdi, rsi, rdx
+; uses mem: input_buffer
+read_input:
+ ; linux x64 read(stdin, input_buffer, 5)
+ mov rax, 0
+ mov rdi, 0
+ mov rsi, input_buffer
+ mov rdx, 5
+ syscall
+ ret
+
+; write_output
+; writes the output buffer to stdout
+; uses reg: rax, rdi, rsi, rdx
+; uses mem: output_buffer(ro)
+write_output:
+ ; linux x64 write(stdout, output_buffer, 8)
+ mov rax, 1
+ mov rdi, 1
+ mov rsi, output_buffer
+ mov rdx, 8
+ syscall
+ ret
+
+; b32d
+; decodes 8 RFC4648 characters without checking its validity (!!!)
+; uses reg:
+; uses mem: input_buffer, output_buffer
+b32d:
+ ret
+
+_start:
+.exit:
+ ; linux x64 exit(0)
+ mov rax, 60
+ mov rdi, 0
+ syscall