小编Sea*_*mey的帖子

Mingw-w64 C11threads.h 未找到?

我正在尝试在程序中使用C11标准线程,并且专门使用Mingw-w64工具链x86_64-8.1.0-posix-seh-rt_v6-rev0

当我#include <threads.h>按照C11标准定义时,我No such file or directorygcc收到错误。我发现我可以#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)

我没有收到有关没有线程的消息。

c multithreading pthreads mingw-w64

5
推荐指数
1
解决办法
2343
查看次数

汇编指令中冒号(:)的未知含义

我正在使用反汇编程序(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)

x86 assembly x86-64 disassembly

3
推荐指数
1
解决办法
618
查看次数

Dos中断处理程序锁定程序

我正在尝试制作一个简单的游戏引擎/库来创建我自己的DOS游戏.我正在努力让输入正常工作.我遇到的问题是我的自定义ISR处理int 9(键盘输入)锁定了我的程序.

注意:我使用我的编译器的_dos_getvect()和_dos_setvect(); 但是,我不知道为什么我自己的自定义getInterruptVector()和setInterruptVector()不起作用.如果有人能解释原因,我将非常感激.

查看有问题代码的"interrupt_hooker.c".

main.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)

input.h

#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)

Input.c中

#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)

c assembly dos game-engine

1
推荐指数
1
解决办法
133
查看次数