如何创建一个汇编Mips程序,它以ASCII字符串

时间:2016-10-22 10:36:11

标签: assembly mips

我对汇编Mips编程很新,我感觉在C中更加舒适,但我想学习这门语言。

我正在考虑一个计算二进制数1的程序。例如,字母“e”的十字形代码是0x65,二进制0b1100101。 我的程序如果收到字母“e”作为输入,在输出中将有十进制的“4”,这是“e”的二进制1的数量。

我认为我需要逻辑按位指令,因为我不使用字节而是使用单个位。 任何人都可以帮我解决这个问题吗?非常感谢你。

1 个答案:

答案 0 :(得分:2)

如果我记得很清楚,在整数中将位数计为1的最快方法是SWAR算法:

int swar(uint32_t i) {
  i = i - ((i >> 1) & 0x55555555);
  i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
  return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}

您可以通过搜索适当的MIPS指令进行逻辑转换,等等来将其转换为汇编...