Add file descriptor constants
This commit is contained in:
@ -1,6 +1,9 @@
|
|||||||
extern EOS
|
extern EOS
|
||||||
extern NL
|
extern NL
|
||||||
extern NR_write
|
extern NR_write
|
||||||
|
extern FD_stdin
|
||||||
|
extern FD_stdout
|
||||||
|
extern FS_stderr
|
||||||
extern strlen
|
extern strlen
|
||||||
extern itoa
|
extern itoa
|
||||||
|
|
||||||
@ -64,7 +67,7 @@ print:
|
|||||||
mov rdx, rax
|
mov rdx, rax
|
||||||
mov rax, NR_write
|
mov rax, NR_write
|
||||||
mov rsi, rdi
|
mov rsi, rdi
|
||||||
mov rdi, 1
|
mov rdi, FD_stdout
|
||||||
syscall
|
syscall
|
||||||
ret
|
ret
|
||||||
;----- puts (char* string) -----;
|
;----- puts (char* string) -----;
|
||||||
@ -74,7 +77,7 @@ puts:
|
|||||||
call print
|
call print
|
||||||
mov rdi, r10
|
mov rdi, r10
|
||||||
mov rax, NR_write
|
mov rax, NR_write
|
||||||
mov rdi, 1
|
mov rdi, FD_stdout
|
||||||
mov rsi, bNL
|
mov rsi, bNL
|
||||||
mov rdx, 1
|
mov rdx, 1
|
||||||
syscall
|
syscall
|
||||||
@ -244,7 +247,7 @@ printf:
|
|||||||
push r8
|
push r8
|
||||||
push r9
|
push r9
|
||||||
mov rax, NR_write
|
mov rax, NR_write
|
||||||
mov rdi, 1
|
mov rdi, FD_stdout
|
||||||
lea rsi, [rel printfBuff]
|
lea rsi, [rel printfBuff]
|
||||||
mov rdx, r14
|
mov rdx, r14
|
||||||
mov byte [r11], 0x0
|
mov byte [r11], 0x0
|
||||||
@ -267,7 +270,7 @@ printf:
|
|||||||
.finish:
|
.finish:
|
||||||
mov byte [r11], 0x0
|
mov byte [r11], 0x0
|
||||||
mov rax, NR_write
|
mov rax, NR_write
|
||||||
mov rdi, 1
|
mov rdi, FD_stdout
|
||||||
lea rsi, [rel printfBuff]
|
lea rsi, [rel printfBuff]
|
||||||
mov rdx, r14
|
mov rdx, r14
|
||||||
add r13, r14
|
add r13, r14
|
||||||
|
@ -5,6 +5,10 @@ section .rodata
|
|||||||
global NR_close
|
global NR_close
|
||||||
global NR_exit
|
global NR_exit
|
||||||
|
|
||||||
|
global FD_stdin
|
||||||
|
global FD_stdout
|
||||||
|
global FD_stderr
|
||||||
|
|
||||||
global EOS
|
global EOS
|
||||||
global NL
|
global NL
|
||||||
|
|
||||||
@ -15,6 +19,11 @@ section .rodata
|
|||||||
NR_close equ 3
|
NR_close equ 3
|
||||||
NR_exit equ 60
|
NR_exit equ 60
|
||||||
|
|
||||||
|
;file descriptors
|
||||||
|
FD_stdin equ 0
|
||||||
|
FD_stdout equ 1
|
||||||
|
FD_stderr equ 2
|
||||||
|
|
||||||
;ascii
|
;ascii
|
||||||
EOS equ 0x0
|
EOS equ 0x0
|
||||||
NL equ 0xA
|
NL equ 0xA
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
extern FD_stderr
|
||||||
extern NR_read
|
extern NR_read
|
||||||
extern NR_write
|
extern NR_write
|
||||||
extern NR_open
|
extern NR_open
|
||||||
@ -80,8 +81,8 @@ fclose:
|
|||||||
; writes a string to opened file
|
; writes a string to opened file
|
||||||
; return value: amount of written characters on success, below 0 otherwise (neg errno)
|
; return value: amount of written characters on success, below 0 otherwise (neg errno)
|
||||||
fwrite:
|
fwrite:
|
||||||
cmp rdi, 3
|
cmp rdi, FD_stderr
|
||||||
jl .ebadf
|
jle .ebadf
|
||||||
|
|
||||||
mov r9, rdi
|
mov r9, rdi
|
||||||
mov rdi, rsi
|
mov rdi, rsi
|
||||||
|
Reference in New Issue
Block a user