黑洞引擎 发表于 2020-5-24 11:46:50

有没有人有龙芯扩展指令集的详细描述?

想写个汇编器来玩玩,目前只弄了MIPS32 R2的,想把龙芯扩展指令加进去,论坛里有人有吗?
源码贴上,欢迎有兴趣的小伙伴一起学习改进!

cyberhero 发表于 2020-5-24 22:29:21

程序怎麼玩

黑洞引擎 发表于 2020-5-25 18:22:37

本帖最后由 黑洞引擎 于 2020-5-25 18:24 编辑

cyberhero 发表于 2020-5-24 22:29
程序怎麼玩
make之后得到zhizhu主程序
然后就可以按照下面命令格式翻译汇编文件
./zhizhu -o test test.S
只支持mips文档里(mips32 r2)的指令和格式

cyberhero 发表于 2020-5-26 03:03:12

本帖最后由 cyberhero 于 2020-5-26 03:06 编辑

報錯

$ Diligent\ Spider/zhizhu -o first first.s
文件:first.s 第1行 错误码:-1无法识别的命令!
.text


                .text
                .global main
                .ent main
main:                nop
                li $v0, 8
                jr $ra
                .end main

黑洞引擎 发表于 2020-5-26 19:59:49

cyberhero 发表于 2020-5-26 03:03
報錯

:(目前只支持mips32 r2的指令格式,具体如下表
而且只实现单条指令的翻译,系统启动码跟接口都没有呢:(


    abs.d fd, fsdi nor rd, rs, rt
abs.ps fd, fsdiv rs, rtor rd, rs, rt
abs.s fd, fsdiv.d fd, fs, ftori rt, rs, immediate
add rd, rs, rtdiv.s fd, fs, ftpause
add.d fd, fs, ftdivu rs, rtpll.ps fd, fs, ft
add.ps fd, fs, ftehbplu.ps fd, fs, ft
add.s fd, fs, ftei pref hint, offset(base)
addi rt, rs, immediateeretprefe hint, offset(base)
addiu rt, rs, immediateext rt, rs, pos, sizeprefx hint, index(base)
addu rd, rs, rtfloor.l.d fd, fspul.ps fd, fs, ft
alnv.ps fd, fs, ft, rsfloor.l.s fd, fspuu.ps fd, fs, ft
and rd, rs, rtfloor.w.d fd, fsrdhwr rt, rd
andi rt, rs, immediatefloor.w.s fd, fsrdpgpr rd, rt
b offsetins rt, rs, pos, sizerecip.d fd, fs
bal offsetj targetrecip.s fd, fs
bc1f offsetjal targetrotr rd, rt, sa
bc1t offsetjalr rsrotrv rd, rt, rs
bc2f offsetjalr.hb rsround.l.d fd, fs
bc2t offsetjalx targetround.l.s fd, fs
beq rs, rt, offsetjr rsround.w.d fd, fs
bgez rs, offsetjr.hb rsround.w.s fd, fs
bgezal rs, offsetlb rt, offset(base)rsqrt.d fd, fs
bgtz rs, offsetlbe rt, offset(base)rsqrt.s fd, fs
blez rs, offsetlbu rt, offset(base)sb rt, offset(base)
bltz rs, offsetlbue rt, offset(base)sbe rt, offset(base)
bltzal rs, offsetldc1 ft, offset(base)sc rt, offset(base)
bne rs, rt, offsetldc2 rt, offset(base)sce rt, offset(base)
break ldxc1 fd, index(base)sdbbp
c.eq.d fs, ftlh rt, offset(base)sdc1 ft, offset(base)
c.eq.ps fs, ftlhe rt, offset(base)sdc2 rt, offset(base)
c.eq.s fs, ftlhu rt, offset(base)sdxc1 fs, index(base)
c.f.d fs, ftlhue rt, offset(base)seb rd, rt
c.f.ps fs, ftll rt, offset(base)seh rd, rt
c.f.s fs, ftlle rt, offset(base)sh rt, offset(base)
c.le.d fs, ftlui rt, immediateshe rt, offset(base)
c.le.ps fs, ftluxc1 fd, index(base)sll rd, rt, sa
c.le.s fs, ftlw rt, offset(base)sllv rd, rt, rs
c.lt.d fs, ftlwc1 ft, offset(base)slt rd, rs, rt
c.lt.ps fs, ftlwc2 rt, offset(base)slti rt, rs, immediate
c.lt.s fs, ftlwe rt, offset(base)sltiu rt, rs, immediate
c.nge.d fs, ftlwl rt, offset(base)sltu rd, rs, rt
c.nge.ps fs, ftlwle rt, offset(base)sqrt.d fd, fs
c.nge.s fs, ftlwr rt, offset(base)sqrt.s fd, fs
c.ngl.d fs, ftlwre rt, offset(base)sra rd, rt, sa
c.ngl.ps fs, ftlwxc1 fd, index(base)srav rd, rt, rs
c.ngl.s fs, ftmadd rs, rtsrl rd, rt, sa
c.ngle.d fs, ftmadd.d fd, fr, fs, ftsrlv rd, rt, rs
c.ngle.ps fs, ftmadd.ps fd, fr, fs, ftssnop
c.ngle.s fs, ftmadd.s fd, fr, fs, ftsub rd, rs, rt
c.ngt.d fs, ftmaddu rs, rtsub.d fd, fs, ft
c.ngt.ps fs, ftmfc0 rt, rd [, sel]sub.ps fd, fs, ft
c.ngt.s fs, ftmfc1 rt, fssub.s fd, fs, ft
c.ole.d fs, ftmfhc1 rt, fssubu rd, rs, rt
c.ole.ps fs, ftmfhi rdsuxc1 fs, index(base)
c.ole.s fs, ftmflo rdsw rt, offset(base)
c.olt.d fs, ftmov.d fd, fsswc1 rt, offset(base)
c.olt.ps fs, ftmov.ps fd, fsswc2 rt, offset(base)
c.olt.s fs, ftmov.s fd, fsswe rt, offset(base)
c.seq.d fs, ftmovf rd, rs, ccswl rt, offset(base)
c.seq.ps fs, ftmovf.d fd, fs, ccswle rt, offset(base)
c.seq.s fs, ftmovf.ps fd, fs, ccswr rt, offset(base)
c.sf.d fs, ftmovf.s fd, fs, ccswre rt, offset(base)
c.sf.ps fs, ftmovn rd, rs, rtswxc1 fs, index(base)
c.sf.s fs, ftmovn.d fd, fs, rtsync
c.ueq.d fs, ftmovn.ps fd, fs, rtsynci offset(base)
c.ueq.ps fs, ftmovn.s fd, fs, rtsyscall
c.ueq.s fs, ftmovt rd, rs, ccteq rs, rt [,code]
c.ule.d fs, ftmovt.d fd, fs, ccteqi rs, immediate
c.ule.ps fs, ftmovt.ps fd, fs, cctge rs, rt [,code]
c.ule.s fs, ftmovt.s fd, fs, cctgei rs, immediate
c.ult.d fs, ftmovz rd, rs, rttgeiu rs, immediate
c.ult.ps fs, ftmovz.d fd, fs, rttgeu rs, rt [,code]
c.ult.s fs, ftmovz.ps fd, fs, rttlbinv
c.un.d fs, ftmovz.s fd, fs, rttlbinvf
c.un.ps fs, ftmsub rs, rttlbp
c.un.s fs, ftmsub.d fd, fr, fs, fttlbr
cache op, offset(base)msub.ps fd, fr, fs, fttlbwi
cachee op, offset(base)msub.s fd, fr, fs, fttlbwr
ceil.l.d fd, fsmsubu rs, rttlt rs, rt [,code]
ceil.l.s fd, fsmtc0 rt, rd [, sel]tlti rs, immediate
ceil.w.d fd, fsmtc1 rt, fstltiu rs, immediate
ceil.w.s fd, fsmthc1 rt, fstltu rs, rt [,code]
cfc1 rt, fsmthi rstne rs, rt [,code]
clo rd, rsmtlo rstnei rs, immediate
clz rd, rsmul rd, rs, rttrunc.l.d fd, fs
ctc1 rt, fsmul.d fd, fs, fttrunc.l.s fd, fs
cvt.d.l fd, fsmul.ps fd, fs, fttrunc.w.d fd, fs
cvt.d.s fd, fsmul.s fd, fs, fttrunc.w.s fd, fs
cvt.d.w fd, fsmult rs, rtwait
cvt.l.d fd, fsmultu rs, rtwrpgpr rd, rt
cvt.l.s fd, fsneg.d fd, fswsbh rd, rt
cvt.ps.s fd, fs, ftneg.ps fd, fsxor rd, rs, rt
cvt.s.d fd, fsneg.s fd, fsxori rt, rs, immediate
cvt.s.l fd, fsnmadd.d fd, fr, fs, ft

cvt.s.pl fd, fsnmadd.ps fd, fr, fs, ft

cvt.s.pu fd, fsnmadd.s fd, fr, fs, ft

cvt.s.w fd, fsnmsub.d fd, fr, fs, ft

cvt.w.d fd, fsnmsub.ps fd, fr, fs, ft

cvt.w.s fd, fsnmsub.s fd, fr, fs, ft

deretnop

windows1089 发表于 2020-7-5 17:44:06

https://github.com/FlyGoat/loongson-insn/blob/master/loongson-ext.md
这类有一个非官方的 LoongEXT 文档可供参考
页: [1]
查看完整版本: 有没有人有龙芯扩展指令集的详细描述?