小编Bon*_*a04的帖子

用于x86输入/输出端口I/O的C inline asm具有操作数大小不匹配

我正在关注youtube上的一个教程,他说需要在C中编写一些asm代码(我在汇编方面不是很好)所以我只是处理了整个代码:

unsigned char inPortB (unsigned int _port) {
    unsigned char rv;
    __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
    return rv;
}
Run Code Online (Sandbox Code Playgroud)

void outPortB (unsigned int _port, unsigned char _data) {
    __asm__ __volatile__ ("outb %1, %0" : :  "dN" (_port), "a" (_data));
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译我得到这个错误:

operand type mismatch for 'in'
operand type mismatch for 'out'
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

c x86 assembly gcc inline-assembly

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

标签 统计

assembly ×1

c ×1

gcc ×1

inline-assembly ×1

x86 ×1