Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .globl _start
- .text
- _start:
- call parse_args
- mov $file, %rdi
- call open_file
- mov %rax, %rdi
- call read_file
- mov %rax, %r12
- mov $0, %r9
- mov $byte, %r13
- movb (%r13), %al
- sub $48, %al
- loop:
- mov $buffer, %r10
- add %r9, %r10
- inc %r9
- movb (%r10), %cl
- xor %al, %cl
- movb %cl, (%r10)
- cmp %r9, %r12
- jne loop
- mov %r12, %rdi
- call print_buf
- labab:
- mov $60, %rax
- syscall
- print_buf:
- mov $1, %rax
- mov $1, %rdi
- mov $buffer, %rsi
- syscall
- ret
- open_file:
- mov $2, %rax
- mov $0, %rsi
- syscall
- ret
- read_file:
- mov $0, %rax
- mov $buffer, %rsi
- mov $bufferlen, %rdx
- syscall
- ret
- parse_args:
- pop %r8
- pop %r9
- pop %r10
- cmp $1, %r9
- je end_parse_args
- dec %r9
- l1:
- pop %r10
- pop %r15
- cmp $0, %r10
- je end_parse_args
- mov %r10, %r13
- mov $file_str, %r14
- mov $4, %r12
- push %r10
- push %r15
- call cmp_string
- pop %r15
- pop %r10
- cmp $1, %r11
- je save_file
- mov %r10, %r13
- mov $byte_str, %r14
- mov $4, %r12
- push %r10
- push %r15
- call cmp_string
- pop %r15
- pop %r10
- cmp $1, %r11
- je save_byte
- mov %r10, %r13
- mov $destination_str, %r14
- mov $4, %r12
- push %r10
- push %r15
- l3:
- call cmp_string
- pop %r15
- pop %r10
- cmp $1, %r11
- je save_dest
- dec %r9
- dec %r9
- cmp $0, %r9
- jne l1
- end_parse_args:
- push %r8
- ret
- save_file:
- mov $file, %r14
- mov (%r15), %rax
- mov %rax, (%r14)
- jmp l1
- save_byte:
- mov $byte, %r14
- mov (%r15), %rax
- mov %rax, (%r14)
- jmp l1
- save_dest:
- mov $dest, %r14
- mov (%r15), %rax
- mov %rax, (%r14)
- jmp l1
- cmp_string:
- movb (%r13), %al
- cmp (%r14), %al
- jne cmp_string_ne_exit
- inc %r13
- inc %r14
- dec %r12
- cmp $0, %r12
- jne cmp_string
- mov $1, %r11
- ret
- cmp_string_ne_exit:
- mov $0, %r11
- ret
- .data
- counter = 0
- file_str: .ascii "file"
- byte_str: .ascii "byte"
- destination_str: .ascii "dest"
- file: .fill 1024, 1, 0
- byte: .byte 0
- dest: .fill 1024, 1, 0
- buffer: .fill 10000, 1, 0
- bufferlen = 10000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement