繁体   English   中英

如何创建在 ASCII 字符串中计算二进制 1 的 Assembly Mips 程序

[英]How to create an Assembly Mips program which counts binary 1 in an ASCII string

我对汇编 Mips 编程还很陌生,我对 C 感觉更舒服,但我想学习这门语言。

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

我认为我需要为此使用逻辑按位指令,因为我不是使用字节而是使用单个位。

我该怎么做?

如果我没记错的话,在整数中计算 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 指令以进行逻辑移位等将其转换为汇编...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM