Ребята, хелб!
Пишу консольное приложение и появилась потребность читать нажатые на текущий момент клавиши, но хочется сделать так, что бы при отсутствии ввода вызов прерывался и программа шла по бесконечному циклу дальше. Побегал по форуму и ничего не нашел, будто никто этим даже не интересовался. Никто не реализовывал такое?
Вот сниппет (Нашинковал его, что бы не захламлять тут все):
1 sys_read equ 0
2 sys_write equ 1
3 sys_ioctl equ 16
4 sys_nanosleep equ 35
5 sys_exit equ 60
6
7 tcgets equ 0x5401
8 tcsets equ 0x5402
9 tiocgwinsz equ 0x5413
10
11 stdin equ 0
12 stdout equ 1
… … …
132 read_ioc:
133 mov rax, sys_ioctl
134 mov rdi, stdin
135 mov rsi, tcgets
136 mov rdx, default_par
137 syscall
138
139 mov rax, sys_ioctl
140 mov rdi, stdin
141 mov rsi, tcgets
142 mov rdx, modified_par
143 syscall
144
145 and dword [modified_par + 0], -1516
146 and dword [modified_par + 4], -2
147 and dword [modified_par + 12], -32844
148 and dword [modified_par + 8], -305
149 and dword [modified_par + 8], 48
150
151 mov rax, sys_ioctl
152 mov rdi, stdin
153 mov rsi, tcsets
154 mov rdx, modified_par
155 syscall
156
157 call check_input
158
159 mov rax, sys_ioctl
160 mov rdi, stdin
161 mov rsi, tcsets
162 mov rdx, default_par
163 syscall
164
165 ret
… … …
167 check_input:
168 mov rax, sys_read
169 mov rdi, stdin
170 mov rdx, 8
171 mov rsi, input_buffer
172 syscall
173
174 ret