君正X1000_M200用户手册资料

news/2025/1/15 6:32:08/

X1000_M200_MXU-User-Guide

1. 简介
工具链中MXU指令以内嵌汇编的方式提供。MXU有16个32bit 通用寄存器(xr0~xr15),一个32bit控制寄存器(xr16)。使用工具链中的 MXU 宏定义时需要程序员手动选择要使用的 MXU 寄存器。如Q16ADD_AA_WW(xr1,xr2,xr3,xr4),其中 Q16ADD_AA_WW 是内嵌汇编宏,xr1,xr2,xr3,xr4 是寄存器编号。指令的使用请详见附录,寄存器和内嵌汇编宏的定义请详见工具链中的 jzmedia.h (PATH_toolchain/mips-linux-gnu/libc/usr/include/jzmedia.h)。

● 使用 MXU 的内嵌汇编宏需要引用 jzmedia.h

● 使用 MXU 指令,在编译时需要添加“-mmxu” 编译选项。
● 使用 MXU 指令,在反汇编时需要添加“-Mmxu” 选项。

2. 指令使用举例
以 Q16ADD 指令为例

/* test.c */
#include <stdio.h>
#include <jzmedia.h>
void main()
{
short src1 [2] = { 1 , 2 };
short src2 [2] = { 10,20 };
short dst1 [2] ;
short dst2 [2] ;
S32LDD(xr1, src1, 0);
S32LDD(xr2, src2, 0);
/*调用 Q16ADD 指令,其中
EPTN2 :AA(00),表示加加运算,
OPTN2:WW(00),表示高位与高位,低位与低位操作
Operation:
xr4 = {xr1.l+xr2.l, xr1.h+xr2.h};
xr3= {xr1.l+xr2.l, xr1.h+xr2.h};*/
Q16ADD_AA_WW(xr4,xr2,xr1,xr3);
S32STD(xr3, dst1, 0);
S32STD(xr4, dst2, 0);
printf(" dst1[0] is %d, dst1[1] is %d\n", dst1[0], dst2[1]);
printf(" dst2[0] is %d, dst2[1] is %d\n", dst2[0], dst2[1]);
}

编译:
$ mips-linux-gnu-gcc test.c -o test -mmxu
反汇编:
$ mips-linux-gnu-objdump -D test -Mmxu
运行:
$./test
dst1[0] is 11, dst1[1] is 22
dst2[0] is 11, dst2[1] is 22

3. X1000附录
MXU 指令具体含义及使用方法请参考《XBurst_ISA_MXU_PM》,MXU 指令使用列表如下:
注:寄存器名称(xra,xrb,xrc,xrd...)为示例,不代表真实寄存器。

D16MUL_WW(xra,xrb,xrc,xrd);
D16MUL_HW(xra,xrb,xrc,xrd);
D16MUL_LW(xra,xrb,xrc,xrd);
D16MUL_XW(xra,xrb,xrc,xrd);

D16MULF_WW(xra,xrb,xrc);
D16MULF_LW(xra,xrb,xrc);
D16MULF_HW(xra,xrb,xrc);
D16MULF_XW(xra,xrb,xrc);


D16MULE_WW(xra,xrb,xrc,xrd);
D16MULE_LW(xra,xrb,xrc,xrd);
D16MULE_HW(xra,xrb,xrc,xrd);
D16MULE_XW(xra,xrb,xrc,xrd);

D16MAC_AA_WW(xra,xrb,xrc,xrd);
D16MAC_AA_LW(xra,xrb,xrc,xrd);
D16MAC_AA_HW(xra,xrb,xrc,xrd);
D16MAC_AA_XW(xra,xrb,xrc,xrd);

D16MAC_AS_WW(xra,xrb,xrc,xrd);
D16MAC_AS_LW(xra,xrb,xrc,xrd);
D16MAC_AS_HW(xra,xrb,xrc,xrd);
D16MAC_AS_XW(xra,xrb,xrc,xrd);

D16MAC_SA_WW(xra,xrb,xrc,xrd);
D16MAC_SA_LW(xra,xrb,xrc,xrd);
D16MAC_SA_HW(xra,xrb,xrc,xrd);

D16MAC_SA_XW(xra,xrb,xrc,xrd);

D16MAC_SS_WW(xra,xrb,xrc,xrd);
D16MAC_SS_LW(xra,xrb,xrc,xrd);
D16MAC_SS_HW(xra,xrb,xrc,xrd);
D16MAC_SS_XW(xra,xrb,xrc,xrd);

D16MACF_AA_WW(xra,xrb,xrc,xrd);
D16MACF_AA_LW(xra,xrb,xrc,xrd);
D16MACF_AA_HW(xra,xrb,xrc,xrd);
D16MACF_AA_XW(xra,xrb,xrc,xrd);

D16MACF_AS_WW(xra,xrb,xrc,xrd);
D16MACF_AS_LW(xra,xrb,xrc,xrd);
D16MACF_AS_HW(xra,xrb,xrc,xrd);
D16MACF_AS_XW(xra,xrb,xrc,xrd);

D16MACF_SA_WW(xra,xrb,xrc,xrd);
D16MACF_SA_LW(xra,xrb,xrc,xrd);
D16MACF_SA_HW(xra,xrb,xrc,xrd);
D16MACF_SA_XW(xra,xrb,xrc,xrd);

D16MACF_SS_WW(xra,xrb,xrc,xrd);
D16MACF_SS_LW(xra,xrb,xrc,xrd);
D16MACF_SS_HW(xra,xrb,xrc,xrd);
D16MACF_SS_XW(xra,xrb,xrc,xrd);

D16MADL_AA_WW(xra,xrb,xrc,xrd);
D16MADL_AA_LW(xra,xrb,xrc,xrd);
D16MADL_AA_HW(xra,xrb,xrc,xrd);
D16MADL_AA_XW(xra,xrb,xrc,xrd);

D16MADL_AS_WW(xra,xrb,xrc,xrd);
D16MADL_AS_LW(xra,xrb,xrc,xrd);
D16MADL_AS_HW(xra,xrb,xrc,xrd);
D16MADL_AS_XW(xra,xrb,xrc,xrd);

D16MADL_SA_WW(xra,xrb,xrc,xrd);
D16MADL_SA_LW(xra,xrb,xrc,xrd);
D16MADL_SA_HW(xra,xrb,xrc,xrd);
D16MADL_SA_XW(xra,xrb,xrc,xrd);

D16MADL_SS_WW(xra,xrb,xrc,xrd);
D16MADL_SS_LW(xra,xrb,xrc,xrd);

D16MADL_SS_HW(xra,xrb,xrc,xrd);
D16MADL_SS_XW(xra,xrb,xrc,xrd);

S16MAD_A_HH(xra,xrb,xrc,xrd);
S16MAD_A_LL(xra,xrb,xrc,xrd);
S16MAD_A_HL(xra,xrb,xrc,xrd);
S16MAD_A_LH(xra,xrb,xrc,xrd);

S16MAD_S_HH(xra,xrb,xrc,xrd);
S16MAD_S_LL(xra,xrb,xrc,xrd);
S16MAD_S_HL(xra,xrb,xrc,xrd);
S16MAD_S_LH(xra,xrb,xrc,xrd);

Q16ADD_AA_WW(xra,xrb,xrc,xrd);
Q16ADD_AA_LW(xra,xrb,xrc,xrd);
Q16ADD_AA_HW(xra,xrb,xrc,xrd);
Q16ADD_AA_XW(xra,xrb,xrc,xrd);

Q16ADD_AS_WW(xra,xrb,xrc,xrd);
Q16ADD_AS_LW(xra,xrb,xrc,xrd);
Q16ADD_AS_HW(xra,xrb,xrc,xrd);
Q16ADD_AS_XW(xra,xrb,xrc,xrd);

Q16ADD_SA_WW(xra,xrb,xrc,xrd);
Q16ADD_SA_LW(xra,xrb,xrc,xrd);
Q16ADD_SA_HW(xra,xrb,xrc,xrd);
Q16ADD_SA_XW(xra,xrb,xrc,xrd);

Q16ADD_SS_WW(xra,xrb,xrc,xrd);
Q16ADD_SS_LW(xra,xrb,xrc,xrd);
Q16ADD_SS_HW(xra,xrb,xrc,xrd);
Q16ADD_SS_XW(xra,xrb,xrc,xrd);

D16MACE_AA_WW(xra,xrb,xrc,xrd);
D16MACE_AA_LW(xra,xrb,xrc,xrd);
D16MACE_AA_HW(xra,xrb,xrc,xrd);
D16MACE_AA_XW(xra,xrb,xrc,xrd);

D16MACE_AS_WW(xra,xrb,xrc,xrd);
D16MACE_AS_LW(xra,xrb,xrc,xrd);
D16MACE_AS_HW(xra,xrb,xrc,xrd);
D16MACE_AS_XW(xra,xrb,xrc,xrd);

·····················

 

 

 


http://www.ppmy.cn/news/845868.html

相关文章

M200.岛屿的数量

题目链接 二维平面上的递归回溯 class Solution { private:int sum,n,m;int move[4][2] {{-1,0},{1,0},{0,-1},{0,1}};vector<vector<bool>> visited;bool inArea(int n,int m,int x,int y){return x>0&&x<n&&y>0&&y<m;}vo…

android+4.4+稳定性,MIPS可穿戴:M200 Android_4.4 v1.3新版本介绍

参考设备: Dorado, M200参考开发板&#xff0c;屏幕分辨率480X800(竖屏&#xff0c;型号BYD8991)。 版本Tag: ingenic-android4.4.4_r2-kernel3.10.14-dorado-v1.3-20150313 主要更新: v1.2版本升级至v1.3版本&#xff0c;功能上没有变化&#xff0c;主要是性能的提升(支持了“…

Makefile快速入门

视频&#xff1a;https://www.bilibili.com/video/BV1B4411F7EK/?spm_id_from333.337.search-card.all.click&vd_source6bcccf10adf3fa505b41acbe0da77a56笔记&#xff1a;看手写ai的tensorrt文档 1.初步 #最上面的是最终输出的目标 #目标&#xff1a;依赖 hello:hello.…

在君正M200平台android编译系统中集成kernel

使用的君正平台android系统版本是 android-4.4.4_r2-ingenic 内核版本是kernel-3.10 1、将kernel-3.10添加到android目录中 2、将kernel-3.10改名为kernel 3、在kernel目录下添加文件AndroidKernel.mk AndroidKernel.mk的内容如下: #Android makefile to build kernel …

昆仑通态复制的程序可以用吗_第478期丨相同功能带定时器的PLC程序怎么简化?非标设备出口到日本,应该怎么配电。...

论坛周刊 10 Oct 2020 本期论坛周刊精彩内容&#xff1a; 1、相同功能带定时器的PLC程序怎么简化&#xff1f; 2、非标设备出口到日本&#xff0c;应该怎么配电? 3、施耐德ATV61变频器维修内部元器件爆炸故障。 4、远程调试&#xff0c;一口老血吐在了屏幕上&#xff0c;倒地身…

工具库1:封装一个日志库(linux)

一、&#xff0c;需求 &#xff08;1&#xff09;封装一个c/c日志库&#xff0c;提供格式打印接口&#xff0c;编写程序代码时方便使用&#xff1b; &#xff08;2&#xff09; 格式打印接口支持可变参数&#xff1b; &#xff08;3&#xff09;格式打印接口封装成可变参数宏&…

uniApp之同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示、adb、shell、package、uninstall

文章目录 背景解决思路执行查找第三方应用的指令执行卸载指令 背景 一开始正常编译运行&#xff0c;由于应用页面有些许奇怪的错误&#xff0c;便想着卸载&#xff0c;重新运行安装调试基座。卸载后&#xff0c;运行还是会出现&#xff0c;明明已经把应用卸载了&#xff0c;还是…

JVM参数配置 JDK1.8

一.标准配置&#xff1a; [这里是图片001] -Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio8 -XX:UseG1GC -XX:MaxTenuringThreshold14 -XX:ParallelGCThreads8 -XX:ConcGCThreads8 -XX:DisableExplicitGC -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathd:/a.dump -XX:P…