Ребята, хелб!
Пишу консольное приложение и появилась потребность читать нажатые на текущий момент клавиши, но хочется сделать так, что бы при отсутствии ввода вызов прерывался и программа шла по бесконечному циклу дальше. Побегал по форуму и ничего не нашел, будто никто этим даже не интересовался. Никто не реализовывал такое?
Вот сниппет (Нашинковал его, что бы не захламлять тут все):
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

