mor*_*llo 4 c c++ linux windows
我想知道是否可以从c ++代码访问处理器中断(我想我需要使用汇编代码).
这就是事情.我习惯使用嵌入式系统(PIC,ARM7和Atmel处理器),我可以毫无问题地编程中断(我使用C).所有寄存器都被映射,总而言之,这很容易,具体取决于应用程序.现在我正在使用x86和x64架构,我希望(强调WANT)能够在这些处理器中做同样的事情.
例如:我想在c ++中有一个运行代码的线程,该代码在不按Enter键(cin,getchar等)的情况下不断验证当前按下的键.我想编写一个定时器中断,以便我能够在特定时间执行操作.我知道我想做的很多事情都可以通过操作系统来完成,但我真的希望自己有这样做的自由.
目前我正在使用Linux(Ubuntu),但我很快就会使用Windows,如果这是回答这个问题所需的信息
对于用户级进程,中断由信号替换.您可以通过致电安排将信号发送到您的流程setitimer.但最有可能的是,做你想做的事情的最好方法是两件事之一:
使用事件循环.基本上,将程序编写为一个巨大的循环,定期检查是否有任何需要做的事情.在循环中,检查时间,检查按键等.做一些你需要做的工作,然后再循环.
使用线程.您可以拥有一个线程来观察时间并触发计时器作业.read当数据到达时,您可以拥有一个阻塞a的线程,就像中断一样.
可能在你的脑海中钻了你在中断处理程序本身做最小的工作,通常只是将信息传递给在正常上下文中运行的其他代码.那么,操作系统已经为你做了那部分.您只需要编写等待中断处理程序(或任何需要的)的代码来检测并开始处理事件.
我希望在c ++中有一个运行代码的线程,该代码在不按Enter键(cin,getchar等)的情况下不断验证当前按下的键.
那样做吧.这需要一个线程,它需要将终端的输入模式更改为不需要输入密钥的模式.这与中断无关.