gpt4 book ai didi

c - 强制整数常量为四字

转载 作者:行者123 更新时间:2023-12-04 02:40:20 24 4
gpt4 key购买 nike

为类编写编译器,但类没有人能确切地弄清楚为什么我们不能做直截了当的事情。

cmpq %r13, %r10
movq $0, %r10
cmovne $1, %r10

我最好的猜测是,由于 cmovXX 没有像 movq 或 movl 那样明确定义其参数的大小,因此 $1 不知道该有多大,因此会引发类型不匹配的脾气。

我的问题是,如何强制整数常量成为四字? $1q 没有用,所以我猜不到。

谢谢!

最佳答案

不是真的。 cmov 根本不可用(英特尔和 AMD 均未创建此特定指令的此类编码)具有立即操作数。它仅对寄存器和内存位置进行操作。

在 AT&T 语法中强制执行特定大小的指令是通过将一个大小前缀附加到指令的助记符来完成的 - 就像您所做的那样。

x86-64 指令集中唯一可以接受四字(64 位)立即数的指令是带有 64 位寄存器的 mov 指令。但是,执行 movq $0, %rax 将为您提供带有 32 位立即数的普通编码。为了强制汇编程序发出 64 位立即数,您必须使用 movabs $0, %rax

关于c - 强制整数常量为四字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058314/

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