我正在使用具有 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/