MIPS lw 指令的转换

时间:2021-02-17 18:19:08

标签: mips

我一直在使用strtok来分割各种指令的字符串。我对拆分指令的偏移量感到震惊,如下所示

lw $2,100($2)

如何拆分并存储到变量中。

1 个答案:

答案 0 :(得分:0)

strtok is terrible:它会覆盖输入字符串,所以如果你给它 " ,()" 作为分隔符,当它完成它的工作时,它会清除原始字符串的实际分隔字符,你会否则不知道找到了什么分隔符。另一方面,如果你只给它一个分隔符,那么它就不够分隔。

建议避免使用 strtok,并编写自己的代码来逐个字符地执行 — 您可以完全控制何时找到哪些标记,并且还可以在找到各种分隔符时了解。

通过初始化指向行首的字符指针 (char *p) 并一次推进一个字符 (p++) 来完成此操作。跳过可选空格字符,然后是操作码,然后跳过可选空格,然后是寄存器名称、可选空格、可选逗号、可选整数、左括号、可选空格、寄存器名称、可选空格、右括号、可选空格和注释。

在引用的答案中,Eric Lippert 建议编写一个不可变的词法分析器,但要清楚的是,词法分析器不需要解析事物——解析器可以直接处理字符——而且由于汇编语言通常相当简单,我建议只按顺序执行上述操作,一个字符一个字符。