gxqcn 发表于 2025-3-8 17:02:08

《64位汇编语言的编程艺术》

昨天在京东上下单了这本书,结果下午就送到了,可能是因为选的是自营的缘故。
很厚的一本,包装的很好,一看就是原装的。
趁着周末,学习起来,对以后的开发有帮助。

northwolves 发表于 2025-3-8 21:50:43

x86汇编的的基本指令和操作方式能否直接应用于64位计算?

gxqcn 发表于 2025-3-9 09:48:08

学习 x64 汇编,确实是与 HugeCalc 开发有关。

因为迟迟等不到 u64*u64-->u128 的 SIMD 指令,
好不容易盼来的 AV512 却又惨遭阉割,
所以,我的 x64 汇编旅程迟迟未能成行。

今年春节期间,我终于打通了一个关键算法步骤,
可以绕开之前一直想要的高级指令,
仅用 AVX2 指令集,即可完成(当然,如有 zmm 寄存器支持,则更好)。

而 AVX2 的普及时间主要集中在 2015 至 2017 年;
现在,AVX2 基本成为 x86 处理器的“标配”。

x64 汇编的的基本指令和操作方式,与 x86 还是有不少区别的,
所以需要系统学习,才能避坑,以及发挥最大功效。

当今时代,获取知识的途径很多,
可看电子书、视频,也可找论坛交流,
但总感觉碎片化,不系统,
所以我仍偏重于挑选高质量的纸质书来看,
而这本书,是我感觉写得比较好的,推荐给大家。

另,我所在的城市,非常方便从图书馆免费借阅书籍,
只要从手机的一个 APP 下单,可以很方便地在指定地铁站取书还书。

wayne 发表于 2025-3-9 18:43:21

现在的新款CPU都支持AVX2 和 AV512吧, 我试了一下我的迷你主机:
cc@Mini:~$ cat /proc/cpuinfo
processor        : 0
vendor_id        : AuthenticAMD
cpu family        : 25
model                : 116
model name        : AMD Ryzen 9 7940HS w/ Radeon 780M Graphics
stepping        : 1
microcode        : 0xa704104
cpu MHz                : 1324.313
cache size        : 1024 KB
physical id        : 0
siblings        : 16
core id                : 0
cpu cores        : 8
apicid                : 0
initial apicid        : 0
fpu                : yes
fpu_exception        : yes
cpuid level        : 16
wp                : yes
flags                : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs                : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips        : 7984.45
TLB size        : 3584 4K pages
clflush size        : 64
cache_alignment        : 64
address sizes        : 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro

mathe 发表于 2025-3-9 21:27:34

kimi说可以用
乘法相关指令
vpmuludq:该指令用于将两个256位的整数向量中的无符号整数相乘。它可以同时处理多个整数的乘法,从而提高超大整数乘法的效率。
vpmullw:对两个256位向量中的低字节进行乘法操作。
vpmulhw:对两个256位向量中的高字节进行乘法操作。
vpmulld:对两个256位向量中的低双字进行乘法操作。
vpmulhuw:对两个256位向量中的高字节进行无符号乘法操作

无心人 发表于 2025-3-25 09:46:23

用mulx和addx,GMP也是这么玩的
最低支持处理器是Haswell,大概是4代core2
基本上普及了

gxqcn 发表于 2025-3-25 10:40:41

GMP 可用到 SIMD 指令集?

无心人 发表于 2025-3-25 16:47:44

gxqcn 发表于 2025-3-25 10:40
GMP 可用到 SIMD 指令集?

用到了
页: [1]
查看完整版本: 《64位汇编语言的编程艺术》