summaryrefslogtreecommitdiffstats
path: root/b32d.asm
blob: aa7582b98b46b9c02c04ab4f7892c80538aa6d4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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