Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .type encode, @function
- .global encode
- .text
- # rax
- # rdi
- # rsi --maska
- # rdx
- # rcx
- # r8 - mask counter
- # r9
- # r10 - temporary mask
- # r11 - licznik stosu
- encode:
- cmp $0, %rdx
- je op0
- cmp $1, %rdx
- je op1
- op0:
- mov %rdi, %rax
- jmp end
- op1:
- mov $0, %r8
- mov $0, %r10
- mov $0, %r11
- mov $0, %r9
- jmp loop1
- loop1:
- cmp $10, %r8
- je popfromstack
- mov %rsi, %r10
- and $1, %r10
- cmp $1, %r10b
- je pushonstack
- shr %rsi
- inc %r8
- jmp loop1
- pushonstack:
- push %r8
- shr %rsi
- inc %r8
- inc %r11
- jmp loop1
- popfromstack:
- mov $0, %r8
- mov $0, %r10
- cmp $0, %r11
- je end
- dec %r11
- pop %r9
- add $48, %r9
- jmp loop2
- loop2:
- cmp $0, (%rdi,%r10,1)
- je end # cntloop2
- cmp %r9b, (%rdi,%r10,1)
- jne putchar
- inc %r10
- jmp loop2
- putchar:
- mov (%rdi,%r10,1), %rcx
- mov %rcx ,(%rax,%r8,1)
- inc %r8
- inc %r10
- jmp loop2
- cntloop2:
- mov %rax, %rdi
- mov $0, %rax
- jmp popfromstack
- end:
- mov %rdi, %rax
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement