c - 如何在 ARMv8 汇编中输入 EOF?

标签 c assembly eof armv8

我正在使用具有 Aarch64 执行状态的 ARMv8 指令集。我遇到的问题是应该将 C 代码翻译成汇编,但我陷入了以下困境:

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

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

cmp c_r, EOF
b.eq skipwhile

还是别的什么?

最佳答案

这取决于您在汇编中使用的 getchar() 代码 -

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

关于c - 如何在 ARMv8 汇编中输入 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107196/

相关文章:

c - C 中的 String.indexOf 函数

read.csv 警告 'EOF within quoted string' 阻止完全读取文件

c++ - C 骰子游戏的退出函数

C:有效地循环大数组

内部函数可以使用父函数中定义的变量吗?

c - C 中不关闭冲水管

c - 程序中ctrl+z算字符数统计字符数

delphi - 为什么我不能在 asm block 中使用编译器内在函数?

c - 汇编与 C 代码比较

x86-64 程序集的性能优化 - 对齐和分支预测