我正在尝试在程序中使用C11标准线程,并且专门使用Mingw-w64工具链x86_64-8.1.0-posix-seh-rt_v6-rev0。
当我#include <threads.h>按照C11标准定义时,我No such file or directory从gcc收到错误。我发现我可以#include <pthread.h>没有错误。顺便说一句,我正在将-std=c11论点传递给gcc。
我在互联网上到处搜索有关标准C线程支持的信息。我能找到的所有信息都是C++的。有人可以向我解释一下为什么我不能使用C11标准threads.h库吗?
编辑:我还检查了是否定义了STDC_NO_THREADS宏。这似乎是未定义的。
#ifdef __STDC_NO_THREADS__
printf("We got no threads capp'n!\n");
#endif
Run Code Online (Sandbox Code Playgroud)
我没有收到有关没有线程的消息。
我正在使用反汇编程序(SmartDec:http://decompilation.info/ ),生成的反汇编中的许多指令看起来类似于:
mov rax, [rip + 0x32b5]:64
Run Code Online (Sandbox Code Playgroud)
我不熟悉:64这条指令的部分内容.这是什么意思?
其他例子:
cmp [rcx + r8 * 0x8]:64, 0x0
mov eax, [rip + 0x592a]:32
jmp [rip + 0x6bad]:64
Run Code Online (Sandbox Code Playgroud)
这个反汇编程序没有显示相应的机器代码,所以我使用了一个十六进制编辑器,并查找了它说该指令所在的地址:
1665: mov rax, [rip + 0x19a4]:64
Run Code Online (Sandbox Code Playgroud)
这就是Little Endian中有16个字节的内容:
54 00 00 49 89 E8 FF 15 DC 5F 00 00 E9 57 FF FF
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个简单的游戏引擎/库来创建我自己的DOS游戏.我正在努力让输入正常工作.我遇到的问题是我的自定义ISR处理int 9(键盘输入)锁定了我的程序.
注意:我使用我的编译器的_dos_getvect()和_dos_setvect(); 但是,我不知道为什么我自己的自定义getInterruptVector()和setInterruptVector()不起作用.如果有人能解释原因,我将非常感激.
查看有问题代码的"interrupt_hooker.c".
#include "input.h"
#include "stdio.h"
int main(int argc, char *argv[])
{
hookKeyboardISR();
unsigned char i = 0;
while(1)
{
printf("%i", 1);
//i = getKey(SCAN_ESC);
//printf("%i", i);
}
unhookKeyboardISR();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#ifndef INPUT_H_INCLUDED
#define INPUT_H_INCLUDED
#include "scan_codes.h"
void hookKeyboardISR();
void unhookKeyboardISR();
unsigned char getKey(unsigned char scan_code);
unsigned char isExtended();
#endif // INPUT_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)
#include "input.h"
#include "interrupt_hooker.h"
#ifndef NULL
#define NULL ((void*)0)
#endif // NULL
unsigned char key_array[MAX_SCAN_CODES] = {0};
unsigned char extended_key = …Run Code Online (Sandbox Code Playgroud) assembly ×2
c ×2
disassembly ×1
dos ×1
game-engine ×1
mingw-w64 ×1
pthreads ×1
x86 ×1
x86-64 ×1