如何在 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 值匹配-文件。
我正在使用具有 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 值匹配-文件。