《64位汇编语言的编程艺术》
昨天在京东上下单了这本书,结果下午就送到了,可能是因为选的是自营的缘故。很厚的一本,包装的很好,一看就是原装的。
趁着周末,学习起来,对以后的开发有帮助。
x86汇编的的基本指令和操作方式能否直接应用于64位计算? 学习 x64 汇编,确实是与 HugeCalc 开发有关。
因为迟迟等不到 u64*u64-->u128 的 SIMD 指令,
好不容易盼来的 AV512 却又惨遭阉割,
所以,我的 x64 汇编旅程迟迟未能成行。
今年春节期间,我终于打通了一个关键算法步骤,
可以绕开之前一直想要的高级指令,
仅用 AVX2 指令集,即可完成(当然,如有 zmm 寄存器支持,则更好)。
而 AVX2 的普及时间主要集中在 2015 至 2017 年;
现在,AVX2 基本成为 x86 处理器的“标配”。
x64 汇编的的基本指令和操作方式,与 x86 还是有不少区别的,
所以需要系统学习,才能避坑,以及发挥最大功效。
当今时代,获取知识的途径很多,
可看电子书、视频,也可找论坛交流,
但总感觉碎片化,不系统,
所以我仍偏重于挑选高质量的纸质书来看,
而这本书,是我感觉写得比较好的,推荐给大家。
另,我所在的城市,非常方便从图书馆免费借阅书籍,
只要从手机的一个 APP 下单,可以很方便地在指定地铁站取书还书。 现在的新款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
kimi说可以用
乘法相关指令
vpmuludq:该指令用于将两个256位的整数向量中的无符号整数相乘。它可以同时处理多个整数的乘法,从而提高超大整数乘法的效率。
vpmullw:对两个256位向量中的低字节进行乘法操作。
vpmulhw:对两个256位向量中的高字节进行乘法操作。
vpmulld:对两个256位向量中的低双字进行乘法操作。
vpmulhuw:对两个256位向量中的高字节进行无符号乘法操作 用mulx和addx,GMP也是这么玩的
最低支持处理器是Haswell,大概是4代core2
基本上普及了 GMP 可用到 SIMD 指令集? gxqcn 发表于 2025-3-25 10:40
GMP 可用到 SIMD 指令集?
用到了
页:
[1]