SSAT USAT 这两条指令用来限制输出范围太好使了, 例: 一个16位有符号整形数,在寄存器中一堆运算后很可能超出16位整形的表达范围. 通常我们的做法肯定是: if(r0 < -32768) r0 = -32768; else if(r0 > 32767) r0 = 32767;
CM3的饱合运算操作: SSAT.w r0,#16,r0
是不是快了很多!看样子ARM在设计这个内核时为嵌入式控制考虑了很多啊,里面好多指令对这方面应用都很有用: RBIT REV SXT UXT BFC BFI |