ARMv7平台C内联汇编递归函数执行时触发段错误的问题求助
ARMv7平台C内联汇编递归函数执行时触发段错误的问题求助
我刚接触汇编没多久,最近在ARMv7平台上用Cxxdroid编译器写了一段带内联汇编的递归求和函数,结果运行的时候直接触发了段错误,折腾了好半天也没搞定,来求助各位大佬!
先贴一下我的代码:
#include <stdio.h> int sum_with_rec(int k) { int res = 0; __asm ( "sum_with_rec_:\n" "CMP %[input_i], #0\n" "BEQ endrec\n" "rec:\n" "ADD %[result], %[input_i]\n" "PUSH {%[result]}\n" "SUB %[input_i], #1\n" "BL sum_with_rec_\n" "endrec:\n" :[result] "+r" (res) :[input_i] "r" (k) ); return res; } int main(void) { int d = 10; int e = 0; e = sum_with_rec(d); printf("Result of %d = %d\n", d, e); return 0; }
补充一下环境信息:目标架构是ARMv7,用的编译器是Cxxdroid,普通的内联汇编代码编译运行都没问题,唯独在汇编里尝试递归的时候就会触发段错误。有没有大佬能帮我分析下问题出在哪?
内容来源于stack exchange
相关产品推荐
相关产品推荐

