MIPS lw指令的转换

Conversion of MIPS lw instruction

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

lw $2,100($2)

如何拆分存储到一个变量中。

:它会覆盖输入字符串,所以如果你给它 " ,()" 作为定界符,它会在工作时擦除原始字符串的实际定界字符,然后你否则将不知道找到了什么定界符。另一方面,如果你只给它一个定界符,那么它就不够分隔了。

建议避免 strtok,并编写自己的代码逐个字符 — 您将完全控制何时找到哪些标记,并且在找到各种分隔符时也会知道。

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

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