我想要获得一些输出的RISC-V程序(程序集)运行在pk之上的Spike使用newlib。
我可以用空终止字符串(例如(代码段))调用printf。
la a0 msg_
jal printf
.data
msg_ .ascii "MESSAGE IS \n"
.equ len_msg_, . - msg_
将打印出消息是--但是如何将字符串的长度传递给调用?我尝试过a1 - a7,它似乎不是它们,我也不能让我想要的堆栈的长度工作(我可能只是做错了这件事,但无论如何,printf函数似乎要做的第一件事就是在堆栈上保存大量寄存器,所以我不认为它会起作用)。
更让我困惑的是,我使用了编译器资源管理器( Compiler,https://godbolt.org/z/vscGPG),没有看到任何长度的信息正在传递。我错过了什么?
发布于 2021-01-10 23:50:28
你没有。你空终止msg
我不太熟悉这个程序集,但是您想让它发出一个零字节。其中之一可能是正确的:
msg_ .ascii "MESSAGE IS \n\0"
msg_ .asciz "MESSAGE IS \n"
msg_ .ascii "MESSAGE IS \n"
.byte 0
在任何情况下你都不需要len_msg_
https://stackoverflow.com/questions/65659368
复制相似问题