C 如何在ARMv8部件中键入EOF?
我使用的是具有Aarch64执行状态的ARMv8指令集。我遇到的问题是,我们应该将C代码翻译成汇编代码,而我却陷入了以下困境:C 如何在ARMv8部件中键入EOF?,c,assembly,eof,armv8,C,Assembly,Eof,Armv8,我使用的是具有Aarch64执行状态的ARMv8指令集。我遇到的问题是,我们应该将C代码翻译成汇编代码,而我却陷入了以下困境: while (c != '\n' && c != EOF) c = getchar(); 我知道while循环的基本设置,以及如何测试c!='\n'但我的问题是如何在汇编中编写EOF。 我可以打字吗 cmp c_r, EOF b.eq skipwhile 还是其他原因?这取决于您在汇编中为getchar()使用的代码。- 如果您只是使用对标
while (c != '\n' && c != EOF)
c = getchar();
我知道while循环的基本设置,以及如何测试c!='\n'
但我的问题是如何在汇编中编写EOF
。
我可以打字吗
cmp c_r, EOF
b.eq skipwhile
还是其他原因?这取决于您在汇编中为
getchar()使用的代码。
-
- 如果您只是使用对标准C库的汇编版本的调用
,那么您可以使用C库的getchar()
-定义进行测试,通常EOF
-1
- 如果您正在汇编中实现自己的
,那么当getchar()
实现到达文件末尾时,您需要将测试与它的返回值相匹配getchar()
gcc-einfle.c
仅预处理源代码。这将替换所有宏,包括文件等。将有许多空行,但您将看到实际编译器看到的内容,因此像EOF这样的宏将被替换为,例如,(-1)
或其他内容。这在手工编译时非常有用。(如果您不使用gcc
,大多数编译器上都有类似的选项)(也有生成程序集的选项,只需输入“…;-”)