公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

Aurix/Tricore实验分享之五十二:Tricore 1.6汇编语言4

Aurix/Tricore实验分享之五十二:Tricore 1.6汇编语言4

User12775
Level 5
Level 5
First solution authored First like received

继续Tricore 汇编指令学习.

本集拟覆盖以下指令:


BISR

    进入中断时保存Lower CSA,同时禁止指定优先级别的中断. 这条指令属于高级指令, 放在后文做Demo.


BMERGE

   位合并. 将两个16bit整数交叉合并为一个32bit整数. 注意不是直接拼接, 交叉合并.


BSPLIT

   位拆分, 将一个32bit整数拆分为一个64bit的整数.不是直接拆分, 交叉拆分.


CACHEA.I
CACHEA.W
CACHEA.WI
CACHEI.I
CACHEI.W
CACHEI.WI

   这几条是Cache操作, 看不出效果来, 放在后文的Cache专门来写.


CADD

CADDN

    条件加法,其中CADDN是CADD的条件取反版本.


CALL
CALLA
CALLI

   三个函数调用指令, CALL与CALLA区别在于寻址范围, CALLI是间接调用,即函数地址在地址寄存器中.


CLO
CLO.H

  计算整数的前置1的个数, .H版本将一个32bit数当做两个16bit数.


CLS
CLS.H

  计算整数的前置符号的个数, .H版本将一个32bit数当做两个16bit数.


CLZ
CLZ.H

  计算整数的前置0的个数, .H版本将一个32bit数当做两个16bit数.


以上三种二进制记数指令常用于Event的优化实现,如操作系统中的Event,进程调度,内存管理等算法.


CMOV (16-bit)
CMOVN (16-bit)

    条件MOV指令. 大约等效于C语言中的(cond)?A:B语句.


CMP.F

   比较浮点数. 不仅比较大小,还可检查浮点数的是否为NAN等.这个放在后面的浮点章节进行Demo.


CSUB
CSUBN

   条件减法指令.


0 点赞
3510 次查看
8 评论