找回密码
 欢迎注册
查看: 326|回复: 13

[提问] MULX 指令可有操作数重叠限制?

[复制链接]
发表于 2025-12-24 10:27:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
比如:“MULX RAX, RDX, RAX” 是否合法?能否实现 RAX:RDX = RAX*RDX
相应的,“MUL RDX” 则合法,得到 RDX:RAX = RDX*RAX
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 10:40:18 | 显示全部楼层
这个问题人工智能能回答你吗?
用国外的人工智能看看
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-12-25 10:59:12 | 显示全部楼层
问过两款人工智能,发现在胡说八道,比如:将 MULX 隐藏的源操作数必须是 RDX/EDX,说成了 RAX/EAX,我提示后更正了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 11:55:21 | 显示全部楼层
所以你这里的问题是输入寄存器和输出寄存器有重叠,是否有问题。
答案是没有关系,因为硬件会进行寄存器换名,也就是实际上使用的物理寄存器,输入和输出寄存器总是不同,即使看上去是同一个寄存器。

点评

谢答。AI 提示不合法;但查 Intel 官方英文文档,确实未发现有此限制  发表于 2025-12-25 13:29
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 12:33:09 | 显示全部楼层
你没有试试国外的人工智能吗?
你都52岁了,还在码代码吗?
而且你码的还是汇编!
没有招一个小弟给你码代码吗?

评分

参与人数 2威望 -12 金币 -20 贡献 -18 经验 -18 鲜花 -12 收起 理由
mathe -12 -20 -12 -12 -12 50岁写代码的人还多着
wayne -6 -6 这是人话么

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2025-12-25 13:24:05 | 显示全部楼层
50+就不能码代码吗?码代码是爱好,与下棋钓鱼没区别
不过,毕竟是业余爱好,不直接产生经济价值,所以可以慢慢来
还招人写代码,还需数学好、懂汇编,那纯属想多了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 16:46:09 | 显示全部楼层
gxqcn 发表于 2025-12-25 13:24
50+就不能码代码吗?码代码是爱好,与下棋钓鱼没区别
不过,毕竟是业余爱好,不直接产生经济价值,所以可以 ...

国内这个环境,35岁都要把你优化了,
50岁码代码太难了!
还有你不是创业当老板了吗?
哪有老板自己码代码的道理?
难道经济形势不好,小弟都被你们裁掉了?
现在大街上很多旺铺转租,
经济形势很不好

点评

创业是搭平台,是服务大家的;不是为了干业余爱好的  发表于 2025-12-25 17:16
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 16:46:58 | 显示全部楼层
我刚毕业的时候,码代码的激情特别高,
现在不行了,现在很少码代码,

点评

别把你的负面情绪,输出给别人;多传递一些正能量,自己也会阳光一点  发表于 2025-12-26 09:46
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-12-25 17:34:30 | 显示全部楼层
我就纳闷了。
一个c语言代码的写法是啥结果,
只要自己调试下断点,
然后一步一步查看运行结果,
不就知道了吗?
同样的道理,难道汇编没有这样的功能?
自己写一个小的测试用例,
我总感觉即使是汇编也有这样的功能。
我记得c语言编辑器能运行汇编代码,
你不如让人工智能给你编写一个小的测试用例
然后下断点调试观察结果

点评

你说的都对:) 我只是抛出我的疑惑,与大家交流而已。  发表于 2025-12-26 09:44
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-6 13:42:02 | 显示全部楼层
自己写段代码编译验证一下即可。
比如以下CPP代码:
int64 a,b,c,d,e;
a=9999999999999LL;
b=8888888888889LL;
asm {
   mov  rax, a;
   mov  rdx, b;
   mulx rax, rdx, rax;
   mov  d, rax;
   mov  e, rdx;
}
编译后的CPU代码为:
// a=9999999999999LL;
000000000097A238 48B9FF9F724E18090000 movabs rcx, 0x9184e729fff
000000000097A242 48894D18         mov qword ptr [rbp + 0x18], rcx
// b=8888888888889LL;
000000000097A246 48B9398E109B15080000 movabs rcx, 0x8159b108e39
000000000097A250 48894D10         mov qword ptr [rbp + 0x10], rcx
// mov  rax, a;
000000000097A264 488B4518         mov rax, qword ptr [rbp + 0x18]
//   mov  rdx, b;
000000000097A268 488B5510         mov rdx, qword ptr [rbp + 0x10]
// mulx rax, rdx, rax;
000000000097A26C C4E2EBF6C0       mulx rax, rdx, rax
//  mov  d, rax;
000000000097A271 48894500         mov qword ptr [rbp], rax
//  mov  e, rdx;
000000000097A275 488955F8         mov qword ptr [rbp - 0x8], rdx

验证结果:指令无误,运行结果也符合预期。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2026-1-20 11:54 , Processed in 0.038740 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表