gpt4 book ai didi

c - 微型 C 编译器 : "error: unknown opcode ' jmp'"

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:01 33 4
gpt4 key购买 nike

给定这段代码:

int main(void)
{
__asm volatile ("jmp %eax");

return 0;
}

32 位 TCC 会提示:

test.c:3: error: unknown opcode 'jmp'

但是 64 位版本可以正常编译。

32 位代码有什么问题?

最佳答案

解决办法就是在寄存器前加一个星号(*),像这样:

__asm volatile ("jmp *%eax");

我不是很清楚这颗星是什么意思。根据this所以帖子:

The star is some syntactical sugar indicating that control is to be passed indirectly, by reference/pointer.

至于为什么它适用于 64 位 TCC,我认为这是一个错误; 64 位 GCC 提示 Error: operand type mismatch for 'jmp',这是应该的。

关于c - 微型 C 编译器 : "error: unknown opcode ' jmp'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18517634/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com