C++ 指令描述的伪代码
我只是在尝试用类似C的伪代码来描述两条简单指令的最佳和最短的方法。提取指令定义如下:C++ 指令描述的伪代码,c++,c,C++,C,我只是在尝试用类似C的伪代码来描述两条简单指令的最佳和最短的方法。提取指令定义如下: extract rd, rs, imm 此指令从32位源寄存器rs和rs中提取适当的字节 右对齐在目标寄存器中。字节由imm指定,因此 可以取0(最低有效字节)和3(最高有效字节) rd=0x0;//零扩展结果,即确保结果中的位31至8设置为零 rd=(rs&&(0xff>imm;//这将提取适当的字节并将其存储在rd中 insert指令可视为反向操作,它从源寄存器rs获取右对齐字节,并将其存放在源寄存器r
extract rd, rs, imm
此指令从32位源寄存器rs和rs中提取适当的字节
右对齐在目标寄存器中。字节由imm指定,因此
可以取0(最低有效字节)和3(最高有效字节)
rd=0x0;//零扩展结果,即确保结果中的位31至8设置为零
rd=(rs&&(0xff>imm;//这将提取适当的字节并将其存储在rd中
insert指令可视为反向操作,它从源寄存器rs获取右对齐字节,并将其存放在源寄存器rs的相应字节中
目标寄存器rd;同样,该字节由imm的值确定
tmp = 0x0 XOR (rs << imm)) // shift the byte to the appropriate byte determined by imm
rd = (rd && (0x00 << imm)) // set appropriate byte to zero in rd
rd = rd XOR tmp // XOR the byte into the destination register
tmp=0x0异或(rsExtract:
rd = (rs >> (imm * 8)) & 0xff
插入:
rd = (rd & ~(0xff << (imm * 8))) | ((rs & 0xff) << (imm * 8))
rd=(rd&~(0xff提取:
rd = (rs >> (imm * 8)) & 0xff
插入:
rd = (rd & ~(0xff << (imm * 8))) | ((rs & 0xff) << (imm * 8))
rd=(rd&~(0xff首先,我认为您指的是“&”(位运算符AND)而不是“&&”(逻辑AND)。C中的异或位运算符是“^”
rd = 0x0;
rd = (rs & (0xff << imm)) >> imm;
tmp = 0x0 ^ (rs << imm));
rd = (rd & (0x00 << imm));
rd = rd ^ tmp;
第二部分:
rd = (~(0xFF << (imm * 8)) & rd) | ((rs & 0xFF) << (imm * 8));
rd=(~(0xFF首先,我认为您指的是“&”(位运算符AND)而不是“&&”(逻辑AND)。C中的异或按位运算符是“^”
rd = 0x0;
rd = (rs & (0xff << imm)) >> imm;
tmp = 0x0 ^ (rs << imm));
rd = (rd & (0x00 << imm));
rd = rd ^ tmp;
第二部分:
rd = (~(0xFF << (imm * 8)) & rd) | ((rs & 0xFF) << (imm * 8));
rd=(~(0xFF谢谢,我不知道为什么我会让生活变得更艰难:我想插入行中的第一个rs
应该是rd
+1:我用像你一样的公式回答,但我错了,因为我忘了*8。还有保护面具……归功于你;)谢谢,我不知道为什么我会让生活变得更艰难:我认为插入行中的第一个rs
应该是rd
+1:我用像你一样的公式回答,但我错了,因为我忘了*8。还有保护面具…感谢你;)对不起,但是“C类伪代码”是一种矛盾修饰法。伪代码的全部原因是通过使用散文和/或数学符号来描述操作,而不是形式语法,从而从计算机中抽象出来。对不起,但是“类似C的伪代码”伪代码的全部原因是通过使用散文和/或数学符号来描述操作,而不是形式语法,从而从计算机中抽象出来。