MULX 指令可有操作数重叠限制?
比如:“MULX RAX, RDX, RAX” 是否合法?能否实现 RAX:RDX = RAX*RDX相应的,“MUL RDX” 则合法,得到 RDX:RAX = RDX*RAX 这个问题人工智能能回答你吗?
用国外的人工智能看看 问过两款人工智能,发现在胡说八道,比如:将 MULX 隐藏的源操作数必须是 RDX/EDX,说成了 RAX/EAX,我提示后更正了 所以你这里的问题是输入寄存器和输出寄存器有重叠,是否有问题。
答案是没有关系,因为硬件会进行寄存器换名,也就是实际上使用的物理寄存器,输入和输出寄存器总是不同,即使看上去是同一个寄存器。 你没有试试国外的人工智能吗?
你都52岁了,还在码代码吗?
而且你码的还是汇编!
没有招一个小弟给你码代码吗? 50+就不能码代码吗?码代码是爱好,与下棋钓鱼没区别
不过,毕竟是业余爱好,不直接产生经济价值,所以可以慢慢来
还招人写代码,还需数学好、懂汇编,那纯属想多了 gxqcn 发表于 2025-12-25 13:24
50+就不能码代码吗?码代码是爱好,与下棋钓鱼没区别
不过,毕竟是业余爱好,不直接产生经济价值,所以可以 ...
国内这个环境,35岁都要把你优化了,
50岁码代码太难了!
还有你不是创业当老板了吗?
哪有老板自己码代码的道理?
难道经济形势不好,小弟都被你们裁掉了?
现在大街上很多旺铺转租,
经济形势很不好 我刚毕业的时候,码代码的激情特别高,
现在不行了,现在很少码代码,
我就纳闷了。
一个c语言代码的写法是啥结果,
只要自己调试下断点,
然后一步一步查看运行结果,
不就知道了吗?
同样的道理,难道汇编没有这样的功能?
自己写一个小的测试用例,
我总感觉即使是汇编也有这样的功能。
我记得c语言编辑器能运行汇编代码,
你不如让人工智能给你编写一个小的测试用例
然后下断点调试观察结果 自己写段代码编译验证一下即可。
比如以下CPP代码:
int64 a,b,c,d,e;
a=9999999999999LL;
b=8888888888889LL;
asm {
movrax, a;
movrdx, b;
mulx rax, rdx, rax;
movd, rax;
move, rdx;
}
编译后的CPU代码为:
// a=9999999999999LL;
000000000097A238 48B9FF9F724E18090000 movabs rcx, 0x9184e729fff
000000000097A242 48894D18 mov qword ptr , rcx
// b=8888888888889LL;
000000000097A246 48B9398E109B15080000 movabs rcx, 0x8159b108e39
000000000097A250 48894D10 mov qword ptr , rcx
// movrax, a;
000000000097A264 488B4518 mov rax, qword ptr
// movrdx, b;
000000000097A268 488B5510 mov rdx, qword ptr
// mulx rax, rdx, rax;
000000000097A26C C4E2EBF6C0 mulx rax, rdx, rax
//movd, rax;
000000000097A271 48894500 mov qword ptr , rax
//move, rdx;
000000000097A275 488955F8 mov qword ptr , rdx
验证结果:指令无误,运行结果也符合预期。
页:
[1]