diff options
author | turret <turret@duck.com> | 2023-09-08 10:11:38 -0500 |
---|---|---|
committer | turret <turret@duck.com> | 2023-09-08 10:11:38 -0500 |
commit | 64b2832475a676b4126e4a7807c2ad4b3fdad0dd (patch) | |
tree | 8cab3acb4c41b14a21a3a08b50ba671be5e5a95b /cat.s | |
parent | 7fe2c32d10543e5d06b745f92bea86d7483c4b5d (diff) | |
download | cat-64b2832475a676b4126e4a7807c2ad4b3fdad0dd.tar.gz cat-64b2832475a676b4126e4a7807c2ad4b3fdad0dd.tar.bz2 cat-64b2832475a676b4126e4a7807c2ad4b3fdad0dd.zip |
cat: actual groundwork for flags
Diffstat (limited to 'cat.s')
-rw-r--r-- | cat.s | 34 |
1 files changed, 28 insertions, 6 deletions
@@ -32,15 +32,31 @@ process_fd: ret _start: - ; TODO: cmd flag consumer - ; r12 = argc mov rbp, rsp - mov r13, [rbp] mov r12, [rbp] cmp r12, 2 - jl .stdin + jl final.stdin + +.loop: + cmp r12, 2 + jl final + + mov r11, [rbp] + mov r11, [r11] + and r11, 0xff + cmp r11, 0x2d ;'-' + jne .cont +.cont: + add rbp, 8 + sub r12, 1 + jmp .loop + +final: + ; fix rbp and r12 + mov rbp, rsp + mov r12, [rbp] add rbp, 8 * 2 ; jump past 1st arg .loop: @@ -104,8 +120,14 @@ exit: mov rdi, 0 syscall - section .data - section .bss bufSize: equ 65536 buf: resb bufSize + +numbernonblankonly: equ 0b000001 +showends: equ 0b000010 +numberlines: equ 0b000100 +squeezeblanks: equ 0b001000 +showtabs: equ 0b010000 +shownonprinting: equ 0b100000 + |