arm组件中的char*输出

arm组件中的char*输出,c,arm,calling-convention,C,Arm,Calling Convention,我目前正在研究R-pi的手臂装配 我正在做C和ARM之间的“呼叫约定”。 在“main.s”中,程序接受3个用户输入并将它们传递给function.c中的函数,该函数将返回char*输出。 最后,程序将打印输出 问题是,在这种情况下,ARM中char*输出的类型是什么。 据我所知,在ARM中,函数将把输出返回到“r0”。 然而,当我打印出这个“r0”时,它会显示奇怪的字符 在我的主要演讲中 ldr r0, =string ldr r1, =sindex ldr r2, =eindex bl su

我目前正在研究R-pi的手臂装配 我正在做C和ARM之间的“呼叫约定”。 在“main.s”中,程序接受3个用户输入并将它们传递给function.c中的函数,该函数将返回char*输出。 最后,程序将打印输出

问题是,在这种情况下,ARM中char*输出的类型是什么。 据我所知,在ARM中,函数将把输出返回到“r0”。 然而,当我打印出这个“r0”时,它会显示奇怪的字符

在我的主要演讲中

ldr r0, =string
ldr r1, =sindex
ldr r2, =eindex
bl sub_string

ldr r1, =s_string
str r0, [r1]

@print substring
ldr r0, =result @"The substring of the given string is '%s'
ldr r1, =s_string
bl printf

pop {ip, pc}
结果是

The substring of the given string is 'Strange character'

请提供一个示例,说明结果和您期望它做什么。A
char*
是一个指针。您应该打印出我使用的
r0
@user202729中存储的地址printf@DanielH我草草记下了代码的一些部分。我的代码有问题吗?我不知道ARM assembly,但我怀疑因为
sub\u string
的返回值
r0
已经是
char*
,所以应该将它传递给
printf%s
,而不是
s\u string