龙芯开源社区

 找回密码
 注册新用户(newuser)
楼主: 吾要单片机

公开本人另一项发明专利:立即数扩展的方法

  [复制链接]
 楼主| 发表于 2017-5-18 22:37:04 | 显示全部楼层
32位指令集比16位指令集具有的优点是:
1、32位指令集拥有32个通用寄存器,而16位指令集只有16个通用寄存器,所以面向大型数据运算时,32位指令集具有优势。
2、32位指令集前缀有立即数扩展指令WIMM时,其32位数据处理指令仍然可以包含有跳转功能。
 楼主| 发表于 2017-5-25 21:08:58 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-24 12:48 编辑

16位指令集介绍
(共78条)
表1 加法、减法运算指令(10条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  ADD   Rd, Rn, Rj
  
  Rd=Rn+Rj
  
  NULL/WIMM/HIMM/CIMM
  
  NZCV
  
  1
  
  SUB   Rd, Rn, Rj
  
  Rd=Rn-Rj
  
  NULL/WIMM/HIMM/CIMM
  
  NZCV
  
  1
  
  ADD   Rd, #uimm4
  
  Rd=Rd+ #uimm4
  
  NULL/WIMM/HIMM/CIMM
  
  NZCV
  
  1
  
  SUB   Rd, #uimm4
  
  Rd=Rd- #uimm4
  
  NULL/WIMM/HIMM/CIMM
  
  NZCV
  
  1
  
  ADD   Rd, SP, #uimm4
  
  Rd=SP+ #uimm4<<2
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  ADD   SP, #uimm8
  
  SP=SP+ #uimm8<<2
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  SUB   SP,#uimm8
  
  SP=SP- #uimm8<<2
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  ADD   Rd, PC, #0
  
  Rd={PC[31:1], 1’b0}+ #0
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  
  CASEB    Rn,  Rj
  查找相等的字节
  
  NULL/WIMM/HIMM/CIMM
  
  n, Z
  
  1
  
  CASEH   Rn,  Rj
  
  查找相等的半字
  
  NULL/WIMM/HIMM/CIMM
  
  n, Z
  
  1
  
说明:

                                                             表2 乘法、除法运算指令(10条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  MUL    Rd, Rn, Rj
  
  Rd=Rn*Rj
  
  NULL/WIMM/CIMM
  
  
  
  1~3
  
  UMAC   Rd, Rn, #uimm16
  
  R1=Rd+Rn [15:0]* #uimm16
  
  HIMM
  
  
  
  1
  
  SMULT  Rd, Rj
  
  (有符号){HI,LO}=Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1~4
  
  UMULT  Rd, Rj
  
  (无符号){HI,LO}=Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1~4
  
  SMLA   Rd, Rj
  
  (有符号){HI,LO}={HI,LO}+Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  2~5
  
  UMLA   Rd, Rj
  
  (无符号){HI,LO}={HI,LO}+Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  2~5
  
  SMLS   Rd, Rj
  
  (有符号){HI,LO}={HI,LO}-Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  2~5
  
  UMLS   Rd, Rj
  
  (无符号){HI,LO}={HI,LO}-Rd*Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  2~5
  
  SDIV   Rd, Rj
  
  (有符号)LO=Rd/Rj, HI=Rd%Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  4~16
  
  UDIV   Rd, Rj
  
  (无符号)LO=Rd/Rj, HI=Rd%Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  4~16
  
说明:
                                                                   表3  逻辑运算指令(3条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  AND  Rd, Rn, Rj
  
  Rd=Rn&Rj
  
  NULL/WIMM/HIMM/CIMM
  
  NZ
  
  1
  
  OR   Rd, Rn, Rj
  
  Rd=Rn|Rj
  
  NULL/WIMM/HIMM/CIMM
  
  NZ
  
  1
  
  XOR  Rd, Rn, Rj
  
  Rd=Rn^Rj
  
  NULL/WIMM/HIMM/CIMM
  
  NZ
  
  1
  
说明:
                                                              表4  移位操作指令(4条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  LSL  Rd, Rj
  
  Rd=Rd<<Rj
  
  NULL/CIMM/RIMM/HIMM
  
  NZC
  
  1
  
  LSR  Rd, Rj
  
  Rd=Rd>>Rj
  
  NULL/CIMM/RIMM/HIMM
  
  NZC
  
  1
  
  ASR  Rd, Rj
  
  Rd=(signed)Rd>>Rj
  
  NULL/CIMM/RIMM/HIMM
  
  NZC
  
  1
  
  ROR  Rd, Rj
  
  Rd=Rd>>Rj
  
  NULL/CIMM/RIMM/HIMM
  
  NZC
  
  1
  
说明:

                                                                        表5 位操作指令(7条)

  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  BFEX   Rd, Rj, #width5,#lsb5
  
  位段提取
  
  HIMM
  
  NZ
  
  1
  
  BFIN   Rd, Rj, #width5,#lsb5
  
  位段插入
  
  HIMM
  
  NZ
  
  1
  
  BITA   Rd, Rj, #x, #y
  
   布尔与
  
  HIMM
  
  Z
  
  1
  
  BITO    Rd, Rj, #x, #y
  
   布尔或
  
  HIMM
  
  Z
  
  1
  
  BITX   Rd, Rj, #x, #y
  
   布尔异或
  
  HIMM
  
  Z
  
  1
  
  BITN   Rd, Rj, #x, #y
  
   布尔反
  
  HIMM
  
  Z
  
  1
  
  ZMB   Rd,  #x
  
   保存~Z
  
  NULL/CIMM
  
  
  
  1
  
说明:
                                                               表6  数制转换指令(4条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  SEXTB   Rj
  
  字节符号位扩展
  
  NULL/CIMM
  
  NZ
  
  1
  
  SEXTH   Rj
  
  半字符号位扩展
  
  NULL/CIMM
  
  NZ
  
  1
  
  CLZ     Rd, Rj
  
  计算前导0的个数
  
  NULL/CIMM
  
  Z
  
  1
  
  RBIT     Rd, Rj
  
  按位反转
  
  NULL/CIMM
  
  
  
  1
  
说明:
                                                

 楼主| 发表于 2017-5-25 21:10:35 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-23 20:11 编辑

表7  数据转送指令(21条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  MOV     Rd,  Rj
  
  Rd=Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  CPL     Rd,  Rj
  
  Rd=~Rj
  
  NULL/CIMM
  
  NZ
  
  1
  
  MOV    Rd,  HRj
  
  Rd=HRj
  
  NULL/CIMM
  
  
  
  1
  
  MOV    HRd, Rj
  
  HRd=Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  MOV    RC,  Rj
  
  RC=Rj
  
  NULL/WIMM/HIMM/CIMM
  
  
  
  1
  
  MOV    Rj, RC
  
  Rj=RC
  
  NULL/CIMM
  
  
  
  1
  
  MOV    Rj,  PSR
  
  Rj=PSR
  
  NULL/CIMM
  
  
  
  1
  
  MOV    PSR, Rj
  
  PSR=Rj
  
  NULL/WIMM/HIMM/CIMM
  
  VNCZ
  
  1
  
  XCHG   Ra, [Rb], Rc
  
  Ra=[Rb], [Rb]=Rc
  
  RIMM
  
  
  
  1
  
  SLB    Rd, [Rn, #0]
  
  Rd=(Sbyte)MEM[Rn+ #0]
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  SLH    Rd, [Rn, #0]
  
  Rd=(Shalf)MEM[Rn+ #0<<1]
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  ULB    Rd, [Rn, #0]
  
  Rd=(Ubyte)MEM[Rn+ #0]
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  ULH    Rd, [Rn, #0]
  
  Rd=(Uhalf)MEM[Rn+ #0<<1]
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  ULW    Rd, [Rn, #0]
  
  Rd=(Uword)MEM[Rn+ #0<<2]
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  STRB   Rd, [Rn, #0]
  
  (byte)MEM[Rn+ #0]=Rd
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  STRH   Rd, [Rn, #0]
  
  (half)MEM[Rn+ #0<<1]=Rd
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  STRW   Rd, [Rn, #0]
  
  (word)MEM[Rn+ #0<<2]=Rd
  
  NULL/WIMM/HIMM/CIMM/RIMM
  
  
  
  1
  
  ULD    Rd, [SP, #uimm4]
  
  Rd=(Uword)MEM[SP+ #uimm4<<2]
  
  NULL/WIMM/HIMM/CIMM/
  
  
  
  1
  
  STR    Rd, [SP, #uimm4]
  
  (Uword)MEM[SP+ #uimm4<<2]=Rd
  
  NULL/WIMM/HIMM/CIMM/
  
  
  
  1
  
  PUSH    Rd, #uimm4
  
  (uimm4+1)个寄存器压栈
  
  NULL/CIMM
  
  
  
uimm4+1
  
  POP     Rd, #uimm4
  
  (uimm4+1)个寄存器弹栈
  
  NULL/CIMM
  
  
  
uimm4+1  
  
说明:


表8 程序转移指令(12条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSW
  
  T
  
  MJZ     #uimm4
  
  分散转移
  
  WIMM/HIMM  
  
  2
  
  CALL    #simm11
  
  
  
  NULL/WIMM/HIMM
  
  
  
  2
  
  CALL    Rj
  
  
  
  
  
  
  
  
2
  
  J<cond> #simm4
  
  
  
  NULL/WIMM/HIMM
  
  
  
  2
  
  JMP      Rj
  
  
  
  NULL
  
  
  
  2
  
  CJZ    Rd, Rj,#simm12
  
  If (Rd^Rj)==0 then jmp
  
  WIMM/HIMM
  
  
  
  2
  
  CJNZ   Rd, Rj,#simm12
  
  If (Rd^Rj)!=0 then jmp
  
  WIMM/HIMM
  
  
  
  2
  
  TJZ    Rd, Rj,#simm12
  
  If (Rd&Rj)==0 then jmp
  
  WIMM/HIMM
  
  
  
  2
  
  TJNZ   Rd, Rj,#simm12
  
  If (Rd&Rj)!=0 then jmp
  
  WIMM/HIMM
  
  
  
  2
  
  INT     #uimm8
  
  软件中断
  
  NULL
  
  
  
  
2
  
  IRET
  
  中断返回
  
  NULL
  
  
  
  
2
  
  RET
  
  子程序返回
  
  NULL
  
  
  
  2
  
说明:


表9 控制指令(3条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSR
  
  T
  
  SLEEP        
  
  睡眠,等待中断唤醒
  
  NULL
  
  
  
  1
  
  SET     PSR,  #uimm4
  
  将PSR的I、P、B位置1
  
  NULL
  
  I,P,B
  
  1
  
  CLR     PSR,  #uimm4
  
  将PSR的I、P、B位清0
  
  NULL
  
  I,P,B
  
  1
  
说明:
表10 立即数扩展指令(4条)
  
汇编指令
  
  
操作说明
  
  WIMM     #imm28
  
  提供高28位立即数
  
  HIMM     #imm12
  
  提供高12位立即数
  
  RIMM     Ra, Rb, Rc
  
  提供寄存器操作数Ra, Rb, Rc
  
  CIMM     cond  [E]jmp  #v7
  
  提供执行条件码cond、反条件码E和跳转矢量#v7
  

   说明:
-----------16位指令集到这结束,等待第三项专利公开后再来补充---------



 楼主| 发表于 2017-5-25 23:41:35 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-23 13:44 编辑

32位指令集介绍
(共89条指令)

表1      加法、减法运算指令(10条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  ADD        Rd, Rn, #uimm16
  
  Rd=Rn + #uimm16
  
  
  
  NZCV
  
  1
  
  SUB        Rd, Rn, #uimm16
  
  Rd=Rn - #uimm16
  
  
  
  NZCV
  
  1
  
  RSB        Rd, Rn, #uimm16
  
  Rd=#uimm16 - Rn
  
  
  
  NZCV
  
  1
  
  ADD<cond>  Rd, #uimm5, [E]JMP  #v_6
  
  Rd=Rd + #uimm5
  
  
  
  NZCV
  
  1
  
  SUB<cond>  Rd,#uimm5, [E]JMP  #v_6
  
  Rd=Rd - #uimm5
  
  
  
  NZCV
  
  1
  
  ADD<cond>  Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn + Rj
  
  WIMM
  
  NZCV
  
  1
  
  SUB<cond>  Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn - Rj
  
  WIMM
  
  NZCV
  
  1
  
  ADD        Rd, PC, #uimm16
  
  Rd={PC[31:1], 1’b0} + #uimm16
  
  
  
  
  
  1
  

注明:*如果前缀有WIMM   #imm28指令,此时执行指令Rj就变为#imm4,两者组成32位立即数。

32位指令集---乘法、除法运算指令(11条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  MUL<cond>  Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn*Rj
  
  WIMM
  
  
  
  1~3
  
  MUL        Rd, Rn, #simm16
  
  Rd=Rn * #simm16
  
  
  
  
  
  1~2
  
  UMAC       Rd, Rn, #uimm16
  
  R1=Rd+ Rn[15:0] * #uimm16
  
  
  
  
  
  1
  
  SMULT<cond>  Rd, Rj, [E]JMP  #v_6
  
  (有符号)HIO=Rd*Rj
  
  WIMM
  
  
  
  2~5
  
  UMULT<cond>  Rd, Rj, [E]JMP  #v_6
  
  (无符号)HIO=Rd*Rj
  
  WIMM
  
  
  
  2~5
  
  SMLA<cond>   Rd, Rj, [E]JMP #v_6
  
  (有符号)HIO=HI:LO+Rd*Rj
  
  WIMM
  
  
  
2~5
  
  UMLA<cond>   Rd, Rj, [E]JMP #v_6
  
  (无符号)HI:LO=HI:LO+Rd*Rj
  
  WIMM
  
  
  
  2~5
  
  SMLS<cond>   Rd, Rj, [E]JMP #v_6
  
  (有符号)HI:LO=HI:LO-Rd*Rj
  
  WIMM
  
  
  
  2~5
  
  UMLS<cond>   Rd, Rj, [E]JMP #v_6
  
  (无符号)HI:LO=HI:LO-Rd*Rj
  
  WIMM
  
  
  
2~5
  
  SDIV<cond>   Rd, Rj, [E]JMP  #v_6
  
  (有符号)LO=Rd/Rj, HI=Rd%Rj
  
  WIMM
  
  
  
4~16
  
  UDIV<cond>   Rd, Rj, [E]JMP  #v_6
  
  (无符号)LO=Rd/Rj, HI=Rd%Rj
  
  WIMM
  
  
  
4~16

注明:*UMAC指令主要用于数组指针的计算,其目的寄存器是R1。
            **如果前缀有WIMM   #imm28指令,此时Rj就变为#imm4,两者组成32位立即数。

表3   逻辑运算指令(6条)
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  AND        Rd, Rn, #uimm16
  
  Rd=Rn& #uimm16
  
  
  
  NZ
  
  1
  
  OR         Rd, Rn, #uimm16
  
  Rd=Rn| #uimm16
  
  
  
  NZ
  
  1
  
  XOR        Rd, Rn, #uimm16
  
  Rd=Rn^ #uimm16
  
  
  
  NZ
  
  1
  
  AND<cond>  Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn&Rj
  
  WIMM
  
  NZ
  
  1
  
  OR<cond>   Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn|Rj
  
  WIMM
  
  NZ
  
  1
  
  XOR<cond>  Rd, Rn, Rj, [E]JMP  #v_6
  
  Rd=Rn^Rj
  
  WIMM
  
  NZ
  
  1
注明:*如果前缀有WIMM   #imm28指令,此时Rj就变为#imm4,两者组成32位立即数。

表4  移位操作指令(8条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  LSL<cond> Rd, Rn, #uimm5,[E]JMP #v_6
  
  Rd=Rn<< #uimm5
  
  
  
  NZC
  
  1
  
  LSR<cond> Rd, Rn, #uimm5,[E]JMP #v_6
  
  Rd=Rn>> #uimm5
  
  
  
  NZC
  
  1
  
  ASR<cond> Rd, Rn, #uimm5,[E]JMP #v_6
  
  Rd=(signed)Rn>>  #uimm5
  
  
  
  NZC
  
  1
  
  ROR<cond> Rd, Rn, #uimm5,[E]JMP #v_6
  
  Rd=Rn右环移 #uimm5位
  
  
  
  NZC
  
  1
  
  LSL<cond> Rd, Rn, Rj, [E]JMP #v_6
  
  Rd=Rn<<Rj
  
  
  
  NZC
  
  1
  
  LSR<cond> Rd, Rn, Rj, [E]JMP #v_6
  
  Rd=Rn>>Rj
  
  
  
  NZC
  
  1
  
  ASR<cond> Rd, Rn, Rj, [E]JMP #v_6
  
  Rd=(signed)Rn>>Rj
  
  
  
  NZC
  
  1
  
  ROR<cond> Rd, Rn, Rj, [E]JMP #v_6

  Rd=Rn>> Rn右环移Rj位
  
  
  
  NZC
  
  1
  



 楼主| 发表于 2017-5-25 23:45:08 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-24 12:48 编辑

表5    位操作指令(7条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  BFEX     Rd, Rj, #width5,#lsb5
  
  位段提取
  
  
  
  NZ
  
  1
  
  BFIN     Rd, Rj, #width5,#lsb5
  
  位段插入
  
  
  
  NZ
  
  1
  
  BITA     Rd, Rj, #x, #y
  
  (布尔指令)与
  
  
  
  Z
  
  1
  
  BITO     Rd, Rj, #x, #y
  
  (布尔指令)或
  
  
  
  Z
  
  1
  
  BITX     Rd, Rj, #x, #y
  
  (布尔指令)异或
  
  
  
  Z
  
  1
  
  BITN     Rd, Rj, #x, #y
  
  (布尔指令)取反
  
  
  
  Z
  
  1
  
  ZMB<cond>  Rd, #x, [E][JMP #v_6]
  
  保存~Z位,即Rd.#x =~Z
  
  
  
  
  
  1
  


表6   数制转换指令(4条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  SEXTB<cond>  Rd, Rj, [E]JMP  #v_6
  
  字节符号位扩展
  
  
  
  NZ
  
  1
  
  SEXTH<cond>  Rd, Rj, [E]JMP  #v_6
  
  半字符号位扩展
  
  
  
  NZ
  
  1
  
  CLZ<cond>   Rn, Rj,[E]JMP  #v_6
  
  计算前导0的个数
  
  
  
  Z
  
  1
  
  RBIT<cond>   Rn, Rj,[E]JMP  #v_6
  
  按位反转
  
  
  
  
  
  1
  


表7  数据转送指令(27条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  MOV<cond>  Rd,  Rj, [E]JMP  #v_6
  
  Rd=Rj
  
  WIMM
  
  
  
  1
  
  CPL<cond>  Rd,  Rj, [E]JMP  #v_6
  
  Rd=~Rj
  
  
  
  NZ
  
  1
  
  MOV<cond>   RC,  Rj,[E]JMP  #v_6
  
  RC=Rj
  
  WIMM
  
  
  
  1
  
  MOV<cond>   Rd,  RC, [E]JMP  #v_6
  
  Rd=RC
  
  
  
  
  
  1
  
  MOV<cond>   Rd,  PSR,[E]JMP  #v_6
  
  Rd=PSR
  
  
  
  
  
  1
  
  MOV<cond>   PSR, Rj, [E]JMP  #v_6
  
  PSR=Rj
  
  WIMM
  
  VNCZ
  
  1
  
  XCHG<cond> Rd, [Rn], Rj, [E]JMP   #v_6
  
  Rd=[Rn], [Rn]=Rj
  
  
  
  
  
  1
  
  SLB<cond>  Rd, [Rn,  Rj],[E]JMP #v_6
  
  Rd=(Sbyte)MEM[Rn+Rj]
  
  WIMM
  
  
  
  1
  
  SLB        Rd, [Rn, #uimm16]
  
  Rd=(Sbyte)MEM[Rn+ #uimm16]
  
  
  
  
  
  1
  
  SLH<cond>  Rd, [Rn,  Rj],[E]JMP #v_6
  
  Rd=(Shalf)MEM[Rn+Rj<<1]
  
  WIMM
  
  
  
  1
  
  SLH        Rd, [Rn, #uimm16]
  
  Rd=(Shalf)MEM[Rn+ #uimm16<<1]
  
  
  
  
  
  1
  
  ULB<cond>  Rd, [Rn, Rj],[E]JMP  #v_6
  
  Rd=(Ubyte)MEM[Rn+Rj]
  
  WIMM
  
  
  
  1
  
  ULB        Rd, [Rn, #uimm16]
  
  Rd=(Ubyte)MEM[Rn+ #uimm16]
  
  
  
  
  
  1
  
  ULH<cond>  Rd, [Rn,  Rj],[E]JMP #v_6
  
  Rd=(Uhalf)MEM[Rn+Rj<<1]
  
  WIMM
  
  
  
  1
  
  ULH        Rd, [Rn, #uimm16]
  
  Rd=(Uhalf)MEM[Rn+ #uimm16<<1]
  
  
  
  
  
  1
  
  ULW<cond>  Rd, [Rn,  Rj],[E]JMP #v_6
  
  Rd=(Uword)MEM[Rn+Rj<<2]
  
  WIMM
  
  
  
  1
  
  ULW        Rd, [Rn, #uimm16]
  
  Rd=(Uword)MEM[Rn+ #uimm16<<2]
  
  
  
  
  
  1
  
  STRB<cond> Rd, [Rn, Rj],[E]JMP #v_6
  
  (byte)MEM[Rn+Rj]=Rd
  
  WIMM
  
  
  
  1
  
  STRB       Rd, [Rn, #uimm16]
  
  (byte)MEM[Rn+ #uimm16]=Rd
  
  
  
  
  
  1
  
  STRH<cond> Rd, [Rn, Rj],[E]JMP #v_6
  
  (half)MEM[Rn+Rj<<1]=Rd
  
  WIMM
  
  
  
  1
  
  STRH       Rd, [Rn, #uimm16]
  
  (half)MEM[Rn+ #uimm16<<1]=Rd
  
  
  
  
  
  1
  
  STRW<cond> Rd, [Rn, Rj],[E]JMP #v_6
  
  (word)MEM[Rn+Rj<<2]=Rd
  
  WIMM
  
  
  
  1
  
  STRW       Rd, [Rn, #uimm16]
  
  (word)MEM[Rn+ #uimm16<<2]=Rd
  
  
  
  
  
  1
  
  ULD<cond>  Rd, [SP, #uimm10]  ,[E]JMP
             #v_6
  
  Rd=(Uword)MEM[SP+ #uimm10<<2]
  
  
  
  
  
  1
  
  STR<cond>  Rd, [SP, #uimm10]  ,[E]JMP
             #v_6
  
  (Uword)MEM[SP+ #uimm10<<2] = Rd
  
  
  
  
  
  1
  
  PUSH<cond> Rd,  #uimm5 [E]JMP  #v_6
  
  (uimm5+1)个寄存器入栈
  
  
  
  
  
uimm5+1  
  
  POP<cond>  Rd, #uimm5 [E]JMP  #v_6
  
  (uimm5+1)个寄存器出栈
  
  
  
  
  
uimm5+1  
  
说明:

 楼主| 发表于 2017-5-26 00:06:17 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-23 20:12 编辑

表8 程序转移指令(12条)
  
汇编指令
  
  
操作说明
  
  IMM
  
  PSW
  
  T
  
  MJZ       #uimm16
  
  分散转移
  
  WIMM
  
  
  
  2
  
  CALL       #simm26
  
  
  
  WIMM
  
  
  
  2
  
  CALL       Rj
  
  
  
  
  
  
  
  2
  
  J<cond>    #simm16
  
  
  
  
  
  
  
  2
  
  JMP        Rj
  
  
  
  
  
  
  
  2
  
  CJZ        Rd, Rj,#simm11
  
  If (Rd^Rj)==0 then jmp
  
  WIMM
  
  
  
  2
  
  CJNZ       Rd, Rj,#simm11
  
  If (Rd^Rj)!=0 then jmp
  
  WIMM
  
  
  
  2
  
  TJZ        Rd, Rj,#simm11
  
  If (Rd&Rj)==0 then jmp
  
  WIMM
  
  
  
  2
  
  TJNZ       Rd, Rj,#simm11
  
  If (Rd&Rj)!=0 then jmp
  
  WIMM
  
  
  
  2
  
  INT        #uimm8
  
  软件中断
  
  
  
  
  
  2
  
  IRET
  
  中断返回
  
  
  
  
  
  2
  
  RET
  
  子程序返回
  
  
  
  
  
  2
  
说明:
表9 控制指令(3条)
  
汇编指令
  
  
操作说明
  
  
IMM
  
  PSR
  
  T
  
  SLEEP        
  
  睡眠,等待中断唤醒
  
  
  
  
  
  1
  
  SET     PSR,  #uimm4
  
  将PSR的I、P、B位置1
  
  
  
I、P、B
  
  1
  
  CLR     PSR,  #uimm4
  
  将PSR的I、P、B位清0
  
  
  
I、P、B
  
  1
  
说明:
表10    立即数扩展指令(1条)

  
汇编指令
  
  
操作说明
  
  WIMM        #imm28
  
  为紧随其后的执行指令提供高28位立即数
  

----------------32位指令集到这结束,第三项专利公开后再补充---------------------


 楼主| 发表于 2017-6-3 02:06:17 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-6-3 08:09 编辑

????????????。
 楼主| 发表于 2017-6-5 18:14:32 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-12-19 21:24 编辑

更正XCHG指令,操作数有改动,更正为XCHG   Rd,    [Rn],    Rj
执行时间为1T,单周期完成读写。
 楼主| 发表于 2017-6-7 23:37:31 | 显示全部楼层
本帖最后由 吾要单片机 于 2017-6-8 12:33 编辑

更正:32位指令CJZ 、CJNZ、TJZ、TJNZ允许使用立即数前缀指令WIMM  #IMM28,实现寄存器与32位立即数比较、测试运算。
 楼主| 发表于 2017-6-11 01:30:11 | 显示全部楼层
条件码表有更正

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-5-20 14:20 , Processed in 0.221091 second(s), 17 queries .

快速回复 返回顶部 返回列表