欢迎光临散文网 会员登陆 & 注册

读懂SIMD/ARM汇编风格命名-个人整理表格 1

2022-04-22 16:34 作者:DeadCyber  | 我要投稿

    读某些代码时,由于项目与汇编指令相关,或者作者比较“老派”,喜欢用汇编术语来给各种操作命名,那么就会给不了解相关术语的人带来阅读困难。

    我最近就遇到了这种困难,在C/C++/Shader中读到很多汇编指令命名的函数,一眼没看出是什么意思。这种其实是不熟悉+生理适应困难。幸好我之前玩过《深圳IO》,算是克服了一些生理困难,建议以前不十分熟悉汇编的朋友可以玩玩这个游戏(别像我一样沉迷纸牌!游戏里打工还一个劲地摸鱼!)。

    由于也没有搜到相关的合集向内容,所以自己整理一下。

    本篇将我遇到的这些指令,和其不完全的原指(从官网上的摘取部分), 意指(作者把这个指令的行为思想放到项目语境下的意思),整理出来。(.md写表格太恶心了,我就直接空格了)

表格

注:除了指令名,还有非指令名的术语,就用小写指令都用大写

指令名 原指 意指

LD1 将从float*地址处赋予1~4个寄存器 float4=x[4], float3 = x[3]...

DUP 将单元素赋予1~4个寄存器 float4=x,float3=x...

lane 向量的某1个通道 float4.r

swz/swizzle 向量的某n个通道 float4.rgba,float4.rgb...

MOV 赋值 

ORR a|b

AND a&b

EOR 同或

XOR 异或

MVN 位反

SHL 左移

SHR 右移

ADDV 向量的所有分量相加

ADD 加

SUB 减

MUL 乘

div 除

ceq CompareEqual ==

clt CompareLittlerThan <

cgt CompareGreaterThan >

cle CompareLittlerEqual <=

cge CompareGreaterEqual >=

ST1 (Store a single-element structure from one lane of one register.) 向p地址中存储向量

ST1+lane () 向p地址中存储向量的某个通道

operand 操作数 参数

rndn ()(rounded to the nearest integer)

rtn ()  (round to nearest)

VPADD float4(a.x+a.y,a.z+a.w,b.x+b.y,b.z+b.w)

BSL (Bitwise Select)  按位选,mask中1选a,0选b,des = BSL(mask,a,b)

cond 条件指令

VCVT float和int类型互相转换(Convert)

hmin (Horizontal)float4中最小通道值

hmax (Horizontal)float4中最大通道值








读懂SIMD/ARM汇编风格命名-个人整理表格 1的评论 (共 条)

分享到微博请遵守国家法律