⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppcasm.h

📁 包含哈希,对称以及非对称的经典算法 包含经典事例
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Three-operand instructions */#define PPC_TYPE31(minor,d,a,b)	\	PPC_MAJOR(31)|PPC_DEST(d)|PPC_SRCA(a)|PPC_SRCB(b)|PPC_MINOR(minor)#define PPC_ADD(d,a,b)  	PPC_TYPE31(266,d,a,b)#define PPC_ADD_(d,a,b) 	PPC_TYPE31(266,d,a,b)|PPC_RC#define PPC_ADDO(d,a,b) 	PPC_TYPE31(266,d,a,b)|PPC_OE#define PPC_ADDO_(d,a,b)	PPC_TYPE31(266,d,a,b)|PPC_OE|PPC_RC#define PPC_ADDC(d,a,b) 	PPC_TYPE31(10,d,a,b)#define PPC_ADDC_(d,a,b)	PPC_TYPE31(10,d,a,b)|PPC_RC#define PPC_ADDCO(d,a,b)	PPC_TYPE31(10,d,a,b)|PPC_OE#define PPC_ADDCO_(d,a,b)	PPC_TYPE31(10,d,a,b)|PPC_OE|PPC_RC#define PPC_ADDE(d,a,b) 	PPC_TYPE31(138,d,a,b)#define PPC_ADDE_(d,a,b)	PPC_TYPE31(138,d,a,b)|PPC_RC#define PPC_ADDEO(d,a,b)	PPC_TYPE31(138,d,a,b)|PPC_OE#define PPC_ADDEO_(d,a,b)	PPC_TYPE31(138,d,a,b)|PPC_OE|PPC_RC#define PPC_ADDME(d,a)  	PPC_TYPE31(234,d,a,0)#define PPC_ADDME_(d,a) 	PPC_TYPE31(234,d,a,0)|PPC_RC#define PPC_ADDMEO(d,a) 	PPC_TYPE31(234,d,a,0)|PPC_OE#define PPC_ADDMEO_(d,a)	PPC_TYPE31(234,d,a,0)|PPC_OE|PPC_RC#define PPC_ADDZE(d,a)  	PPC_TYPE31(202,d,a,0)#define PPC_ADDZE_(d,a) 	PPC_TYPE31(202,d,a,0)|PPC_RC#define PPC_ADDZEO(d,a) 	PPC_TYPE31(202,d,a,0)|PPC_OE#define PPC_ADDZEO_(d,a)	PPC_TYPE31(202,d,a,0)|PPC_OE|PPC_RC#define PPC_AND(a,s,b)  	PPC_TYPE31(28,s,a,b)#define PPC_AND_(a,s,b) 	PPC_TYPE31(28,s,a,b)|PPC_RC#define PPC_ANDC(a,s,b) 	PPC_TYPE31(60,s,a,b)#define PPC_ANDC_(a,s,b)	PPC_TYPE31(60,s,a,b)|PPC_RC#define PPC_CMP(cr,a,b) 	PPC_TYPE31(0,(cr)<<2,a,b)#define PPC_CMPL(cr,a,b)	PPC_TYPE31(32,(cr)<<2,a,b)#define PPC_CNTLZW(a,s) 	PPC_TYPE31(26,s,a,0)#define PPC_CNTLZW_(a,s)	PPC_TYPE31(26,s,a,0)|PPC_RC#define PPC_DCBF(a,b)   	PPC_TYPE31(86,0,a,b)#define PPC_DCBI(a,b)   	PPC_TYPE31(470,0,a,b)#define PPC_DCBST(a,b)  	PPC_TYPE31(54,0,a,b)#define PPC_DCBT(a,b)   	PPC_TYPE31(278,0,a,b)#define PPC_DCBTST(a,b) 	PPC_TYPE31(246,0,a,b)#define PPC_DCBZ(a,b)   	PPC_TYPE31(1014,0,a,b)#define PPC_DIVW(d,a,b) 	PPC_TYPE31(491,d,a,b)#define PPC_DIVW_(d,a,b)	PPC_TYPE31(491,d,a,b)|PPC_RC#define PPC_DIVWO(d,a,b)	PPC_TYPE31(491,d,a,b)|PPC_OE#define PPC_DIVWO_(d,a,b)	PPC_TYPE31(491,d,a,b)|PPC_OE|PPC_RC#define PPC_DIVWU(d,a,b)	PPC_TYPE31(459,d,a,b)#define PPC_DIVWU_(d,a,b)	PPC_TYPE31(459,d,a,b)|PPC_RC#define PPC_DIVWUO(d,a,b)	PPC_TYPE31(459,d,a,b)|PPC_OE#define PPC_DIVWUO_(d,a,b)	PPC_TYPE31(459,d,a,b)|PPC_OE|PPC_RC#define PPC_EIEIO()     	PPC_TYPE31(854,0,0,0)#define PPC_EQV(a,s,b)  	PPC_TYPE31(284,s,a,b)#define PPC_EQV_(a,s,b) 	PPC_TYPE31(284,s,a,b)|PPC_RC#define PPC_EXTSB(a,s,b)	PPC_TYPE31(954,s,a,b)#define PPC_EXTSB_(a,s,b)	PPC_TYPE31(954,s,a,b)|PPC_RC#define PPC_EXTSH(a,s,b)	PPC_TYPE31(922,s,a,b)#define PPC_EXTSH_(a,s,b)	PPC_TYPE31(922,s,a,b)|PPC_RC#define PPC_ICBI(a,b)   	PPC_TYPE31(982,0,a,b)#define PPC_ISYNC()     	PPC_TYPE31(150,0,0,0)#define PPC_LBZUX(d,a,b)	PPC_TYPE31(119,d,a,b)#define PPC_LBZX(d,a,b) 	PPC_TYPE31(87,d,a,b)#define PPC_LHAUX(d,a,b)	PPC_TYPE31(375,d,a,b)#define PPC_LHAX(d,a,b) 	PPC_TYPE31(343,d,a,b)#define PPC_LHBRX(d,a,b)	PPC_TYPE31(790,d,a,b)#define PPC_LHZUX(d,a,b)	PPC_TYPE31(311,d,a,b)#define PPC_LHZX(d,a,b) 	PPC_TYPE31(279,d,a,b)#define PPC_LSWI(d,a,nb)	PPC_TYPE31(597,d,a,nb)#define PPC_LSWX(d,a,b) 	PPC_TYPE31(533,d,a,b)#define PPC_LSARX(d,a,b) 	PPC_TYPE31(20,d,a,b)#define PPC_LSBRX(d,a,b) 	PPC_TYPE31(534,d,a,b)#define PPC_MCRXR(crd)  	PPC_TYPE31(512,(crd)<<2,0,0)#define PPC_MFCR(d)     	PPC_TYPE31(19,d,0,0)#define PPC_MFSPR(d,spr)     	PPC_TYPE31(339,d,(spr)&31,(spr)>>5)#define PPC_MFTB(d)     	PPC_TYPE31(371,d,12,8)#define PPC_MFTBU(d)     	PPC_TYPE31(371,d,13,8)#define PPC_MTCRF(mask,s)     	PPC_TYPE31(144,s,0,(mask)&0xff)#define PPC_MTSPR(s,spr)     	PPC_TYPE31(467,s,(spr)&31,(spr)>>5)#define PPC_MULHW(d,a,b) 	PPC_TYPE31(75,d,a,b)#define PPC_MULHW_(d,a,b) 	PPC_TYPE31(75,d,a,b)|PPC_RC#define PPC_MULHWU(d,a,b) 	PPC_TYPE31(11,d,a,b)#define PPC_MULHWU_(d,a,b) 	PPC_TYPE31(11,d,a,b)|PPC_RC#define PPC_MULLW(d,a,b) 	PPC_TYPE31(235,d,a,b)#define PPC_MULLW_(d,a,b) 	PPC_TYPE31(235,d,a,b)|PPC_RC#define PPC_MULLWO(d,a,b) 	PPC_TYPE31(235,d,a,b)|PPC_OE#define PPC_MULLWO_(d,a,b) 	PPC_TYPE31(235,d,a,b)|PPC_OE|PPC_RC#define PPC_NAND(a,s,b)  	PPC_TYPE31(476,s,a,b)#define PPC_NAND_(a,s,b) 	PPC_TYPE31(476,s,a,b)|PPC_RC#define PPC_NEG(d,a)    	PPC_TYPE31(104,d,a,b)#define PPC_NEG_(d,a)    	PPC_TYPE31(104,d,a,b)|PPC_RC#define PPC_NEGO(d,a)    	PPC_TYPE31(104,d,a,b)|PPC_OE#define PPC_NEGO_(d,a)    	PPC_TYPE31(104,d,a,b)|PPC_OE|PPC_RC#define PPC_NOR(a,s,b)  	PPC_TYPE31(124,s,a,b)#define PPC_NOR_(a,s,b) 	PPC_TYPE31(124,s,a,b)|PPC_RC#define PPC_OR(a,s,b)   	PPC_TYPE31(444,s,a,b)#define PPC_OR_(a,s,b)  	PPC_TYPE31(444,s,a,b)|PPC_RC#define PPC_ORC(a,s,b)   	PPC_TYPE31(412,s,a,b)#define PPC_ORC_(a,s,b)  	PPC_TYPE31(412,s,a,b)|PPC_RC#define PPC_SLW(a,s,b)   	PPC_TYPE31(24,s,a,b)#define PPC_SLW_(a,s,b)  	PPC_TYPE31(24,s,a,b)|PPC_RC#define PPC_SRAW(a,s,b)   	PPC_TYPE31(792,s,a,b)#define PPC_SRAW_(a,s,b)  	PPC_TYPE31(792,s,a,b)|PPC_RC#define PPC_SRAWI(a,s,sh)   	PPC_TYPE31(824,s,a,sh)#define PPC_SRAWI_(a,s,sh)  	PPC_TYPE31(824,s,a,sh)|PPC_RC#define PPC_SRW(a,s,b)   	PPC_TYPE31(536,s,a,b)#define PPC_SRW_(a,s,b)  	PPC_TYPE31(536,s,a,b)|PPC_RC#define PPC_STBUX(s,a,b)   	PPC_TYPE31(247,s,a,b)#define PPC_STBX(s,a,b)   	PPC_TYPE31(215,s,a,b)#define PPC_STHBRX(s,a,b)   	PPC_TYPE31(918,s,a,b)#define PPC_STHUX(s,a,b)   	PPC_TYPE31(439,s,a,b)#define PPC_STHX(s,a,b)   	PPC_TYPE31(407,s,a,b)#define PPC_STSWI(s,a,nb)   	PPC_TYPE31(725,s,a,nb)#define PPC_STSWX(s,a,b)   	PPC_TYPE31(661,s,a,b)#define PPC_STWBRX(s,a,b)   	PPC_TYPE31(662,s,a,b)#define PPC_STWCX_(s,a,b)   	PPC_TYPE31(150,s,a,b)|PPC_RC#define PPC_STWUX(s,a,b)   	PPC_TYPE31(183,s,a,b)#define PPC_STWX(s,a,b)   	PPC_TYPE31(151,s,a,b)#define PPC_SUBF(d,a,b) 	PPC_TYPE31(40,d,a,b)#define PPC_SUBF_(d,a,b) 	PPC_TYPE31(40,d,a,b)|PPC_RC#define PPC_SUBFO(d,a,b) 	PPC_TYPE31(40,d,a,b)|PPC_OE#define PPC_SUBFO_(d,a,b) 	PPC_TYPE31(40,d,a,b)|PPC_OE|PPC_RC#define PPC_SUB(d,b,a)		PPC_SUBF(d,a,b)#define PPC_SUB_(d,b,a)		PPC_SUBF_(d,a,b)#define PPC_SUBO(d,b,a)		PPC_SUBFO(d,a,b)#define PPC_SUBO_(d,b,a)	PPC_SUBFO_(d,a,b)#define PPC_SUBFC(d,a,b) 	PPC_TYPE31(8,d,a,b)#define PPC_SUBFC_(d,a,b) 	PPC_TYPE31(8,d,a,b)|PPC_RC#define PPC_SUBFCO(d,a,b) 	PPC_TYPE31(8,d,a,b)|PPC_OE#define PPC_SUBFCO_(d,a,b) 	PPC_TYPE31(8,d,a,b)|PPC_OE|PPC_RC#define PPC_SUBFE(d,a,b) 	PPC_TYPE31(136,d,a,b)#define PPC_SUBFE_(d,a,b) 	PPC_TYPE31(136,d,a,b)|PPC_RC#define PPC_SUBFEO(d,a,b) 	PPC_TYPE31(136,d,a,b)|PPC_OE#define PPC_SUBFEO_(d,a,b) 	PPC_TYPE31(136,d,a,b)|PPC_OE|PPC_RC#define PPC_SUBFME(d,a) 	PPC_TYPE31(232,d,a,0)#define PPC_SUBFME_(d,a) 	PPC_TYPE31(232,d,a,0)|PPC_RC#define PPC_SUBFMEO(d,a) 	PPC_TYPE31(232,d,a,0)|PPC_OE#define PPC_SUBFMEO_(d,a) 	PPC_TYPE31(232,d,a,0)|PPC_OE|PPC_RC#define PPC_SUBFZE(d,a) 	PPC_TYPE31(200,d,a,0)#define PPC_SUBFZE_(d,a) 	PPC_TYPE31(200,d,a,0)|PPC_RC#define PPC_SUBFZEO(d,a) 	PPC_TYPE31(200,d,a,0)|PPC_OE#define PPC_SUBFZEO_(d,a) 	PPC_TYPE31(200,d,a,0)|PPC_OE|PPC_RC#define PPC_SYNC()		PPC_TYPE31(598,0,0,0)#define PPC_TW(to,a,b)   	PPC_TYPE31(4,to,a,b)#define PPC_XOR(a,s,b)   	PPC_TYPE31(316,s,a,b)	/* Immediate-operand instructions.  Take a 16-bit immediate operand */#define PPC_IMM(major,d,a,imm) \	PPC_MAJOR(major)|PPC_DEST(d)|PPC_SRCA(a)|((imm)&0xffff)/* Trap word immediate */#define PPV_TWI(to,a,simm)	PPC_IMM(3,to,a,simm)/* Integer arithmetic */#define PPC_MULLI(d,a,simm)	PPC_IMM(7,d,a,simm)#define PPC_SUBFIC(s,a,simm)	PPC_IMM(8,s,a,simm)#define PPC_CMPLI(cr,a,uimm)	PPC_IMM(10,(cr)<<2,a,uimm)#define PPC_CMPI(cr,a,simm)	PPC_IMM(11,(cr)<<2,a,simm)#define PPC_ADDIC(d,a,simm)	PPC_IMM(12,d,a,simm)#define PPC_ADDIC_(d,a,simm)	PPC_IMM(13,d,a,simm)#define PPC_ADDI(d,a,simm)	PPC_IMM(14,d,a,simm)#define PPC_ADDIS(d,a,simm)	PPC_IMM(15,d,a,simm)/* Conditional branch (dest is 16 bits, +/- 2^15 bytes) */#define PPC_BC(bo,bi,dest)	PPC_IMM(16,bo,bi,((dest)<<2)&0xfffc)#define PPC_BCA(bo,bi,dest)	PPC_BC(bo,bi,dest)|PPC_AA#define PPC_BCL(bo,bi,dest)	PPC_BC(bo,bi,dest)|PPC_LK#define PPC_BCLA(bo,bi,dest)	PPC_BC(bo,bi,dest)|PPC_AA|PPC_LK/* Logical operations */#define PPC_ORI(a,s,uimm)	PPC_IMM(24,s,a,uimm)#define PPC_ORIS(a,s,uimm)	PPC_IMM(25,s,a,uimm)#define PPC_XORI(a,s,uimm)	PPC_IMM(26,s,a,uimm)#define PPC_XORIS(a,s,uimm)	PPC_IMM(27,s,a,uimm)#define PPC_ANDI_(a,s,uimm)	PPC_IMM(28,s,a,uimm)#define PPC_ANDIS(a,s,uimm)	PPC_IMM(29,s,a,uimm)/* Load/store */#define PPC_LWZ(d,a,simm)	PPC_IMM(32,d,a,simm)#define PPC_LWZU(d,a,simm)	PPC_IMM(33,d,a,simm)#define PPC_LBZ(d,a,simm)	PPC_IMM(34,d,a,simm)#define PPC_LBZU(d,a,simm)	PPC_IMM(35,d,a,simm)#define PPC_STW(s,a,simm)	PPC_IMM(36,s,a,simm)#define PPC_STWU(s,a,simm)	PPC_IMM(37,s,a,simm)#define PPC_STB(s,a,simm)	PPC_IMM(38,s,a,simm)#define PPC_STBU(s,a,simm)	PPC_IMM(39,s,a,simm)#define PPC_LHZ(d,a,simm)	PPC_IMM(40,d,a,simm)#define PPC_LHZU(d,a,simm)	PPC_IMM(41,d,a,simm)#define PPC_LHA(d,a,simm)	PPC_IMM(42,d,a,simm)#define PPC_STH(s,a,simm)	PPC_IMM(44,s,a,simm)#define PPC_STHU(s,a,simm)	PPC_IMM(45,s,a,simm)#define PPC_LHAU(d,a,simm)	PPC_IMM(43,d,a,simm)#define PPC_LMW(d,a,simm)	PPC_IMM(46,d,a,simm)#define PPC_STMW(s,a,simm)	PPC_IMM(47,s,a,simm)/* Major number = 19 - condition register operations.  d, a and b are CR bits */#define PPC_TYPE19(minor,d,a,b) \	PPC_MAJOR(19)|PPC_DEST(d)|PPC_SRCA(a)|PPC_SRCB(b)|PPC_MINOR(minor)#define PPC_MCRF(d,s)   	PPC_TYPE19(0,(d)<<2,(s)<<2,0)#define PPC_CRNOR(d,a,b)	PPC_TYPE19(33,d,a,b)#define PPC_CRANDC(d,a,b)	PPC_TYPE19(129,d,a,b)#define PPC_CRXOR(d,a,b)	PPC_TYPE19(193,d,a,b)#define PPC_CRNAND(d,a,b)	PPC_TYPE19(225,d,a,b)#define PPC_CRAND(d,a,b)	PPC_TYPE19(257,d,a,b)#define PPC_CREQV(d,a,b)	PPC_TYPE19(289,d,a,b)#define PPC_CRORC(d,a,b)	PPC_TYPE19(417,d,a,b)#define PPC_CROR(d,a,b) 	PPC_TYPE19(449,d,a,b)/* Indirect conditional branch */#define PPC_BCLR(bo,bi) 	PPC_TYPE19(16,bo,bi,0)#define PPC_BCLRL(bo,bi)	PPC_TYPE19(16,bo,bi,0)|PPC_LK#define PPC_BCCTR(bo,bi)	PPC_TYPE19(528,bo,bi,0)#define PPC_BCCTRL(bo,bi)	PPC_TYPE19(528,bo,bi,0)|PPC_LK#define PPC_BLR()           	PPC_BCLR(20,31)#define PPC_BCTR()           	PPC_BCCTR(20,31)/* Other */#define  PPC_RLWIMI(a,s,sh,mb,me) \	PPC_MAJOR(20)|PPC_DEST(s)|PPC_SRCA(A)|PPC_SRCB(sh)|(mb)<<6|(me)<<1 #define  PPC_RLWIMI_(a,s,sh,mb,me)	PPC_RLWIMI(a,s,sh,mb,me)|PPC_RC#define  PPC_RLWINM(a,s,sh,mb,me) \	PPC_MAJOR(21)|PPC_DEST(s)|PPC_SRCA(A)|PPC_SRCB(sh)|(mb)<<6|(me)<<1 #define  PPC_RLWINM_(a,s,sh,mb,me)	PPC_RLWINM(a,s,sh,mb,me)|PPC_RC#define  PPC_RLWNM(a,s,b,mb,me) \ 	PPC_MAJOR(23)|PPC_DEST(s)|PPC_SRCA(A)|PPC_SRCB(b)|(mb)<<6|(me)<<1 #define  PPC_RLWNM_(a,s,b,mb,me)	PPC_RLWNM(a,s,b,mb,me)|PPC_RC#define PPC_SC()			PPC_MAJOR(17)|2/* Major number = 63 Floating-point operations (not implemented for now) *//* Simplified Mnemonics *//* Fabricate immediate subtract out of add negative */#define PPC_SUBI(d,a,simm)	PPC_ADDI(d,a,-(simm))#define PPC_SUBIS(d,a,simm)	PPC_ADDIS(d,a,-(simm))#define PPC_SUBIC(d,a,simm)	PPC_ADDIC(d,a,-(simm))#define PPC_SUBIC_(d,a,simm)	PPC_ADDIC_(d,a,-(simm))/* Fabricate subtract out of subtract from */#define PPC_SUBC(d,b,a)		PPC_SUBFC(d,a,b)#define PPC_SUBC_(d,b,a)	PPC_SUBFC_(d,a,b)#define PPC_SUBCO(d,b,a)	PPC_SUBFCO(d,a,b)#define PPC_SUBCO_(d,b,a)	PPC_SUBFCO_(d,a,b)/* Messy compare bits omitted *//* Shift and rotate omitted *//* Branch coding omitted */#define PPC_CRSET(d)		PPC_CREQV(d,d,d)#define PPC_CRCLR(d)		PPC_CRXOR(d,d,d)#define PPC_CRMOVE(d,s)		PPC_CROR(d,s,s)#define PPC_CRNOT(d,s)		PPC_CRNOR(d,s,s)/* Trap menmonics omitted *//* Menmonics for user-accessible SPRs */#define PPC_MFXER(d)    	PPC_MFSPR(d,1)		#define PPC_MFLR(d)     	PPC_MFSPR(d,8)		#define PPC_MFCTR(d)    	PPC_MFSPR(d,9)		#define PPC_MTXER(s)    	PPC_MTSPR(s,1)		#define PPC_MTLR(s)     	PPC_MTSPR(s,8)		#define PPC_MTCTR(s)    	PPC_MTSPR(s,9)		/* Recommended mnemonics */#define PPC_NOP()		PPC_ORI(0,0,0)#define PPC_LI(d,simm)		PPC_ADDI(d,0,simm)#define PPC_LIS(d,simm)		PPC_ADDIS(d,0,simm)#define PPC_LA(d,a,simm)	PPC_ADDI(d,a,simm)#define PPC_MR(d,s)		PPC_OR(d,s,s)#define PPC_NOT(d,s)		PPC_NOR(d,s,s)#define PPC_MTCR(s)		PPC_MTCRF(0xff,s)#endif /* PPCASM_H *//* 45678901234567890123456789012345678901234567890123456789012345678901234567 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -