如何在 ARMv8 程序集中键入 EOF?

How to type EOF in ARMv8 Assembly?

我正在使用具有 Aarch64 执行状态的 ARMv8 指令集。我遇到的问题是应该将 C 代码转换为汇编代码,但我坚持以下几点:

while (c != '\n' && c != EOF)
    c = getchar();

我知道 while 循环的基本设置,以及如何测试 c != '\n' 但我遇到的问题是如何在汇编中编写 EOF。 我可以输入

cmp c_r, EOF
b.eq skipwhile

还是其他原因?

这取决于您在 getchar() -

中使用的汇编代码
  • 如果您只是使用对标准 C 库 getchar() 的汇编版本的调用,那么您可以使用 C 库的 EOF 定义进行测试 - 通常 -1
  • 如果您在汇编中实现自己的 getchar(),那么您需要在测试结束时将您的测试与 getchar() 实现的 return 值匹配-文件。