gzyueqian
13352868059

嵌入式培训有关C语言中的小技巧——参数传递的学习

更新时间: 2019-04-02 15:23:51来源: 嵌入式培训浏览量:5056

  凡是从事IT行业的朋友或者同事,不管是做前端还是后台,基本上都有在大学或者自己私底下学过C语言,但是却对这门语言的认知很缺乏。学习嵌入式开发的人更能体会到C语言的重要性。今天嵌入式培训带大家学习的是C语言中的小技巧——参数传递。

  为了使用单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCS。嵌入式培训了解到,ATPCS定义了寄存器组中的{R0~R3}作为参数传递和结果返回寄存器。如果参数数目超过4个,则使用堆栈进行传递。由于内部寄存器的访问速度远远大于存储器,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在4个以下。
  示例 汇编函数调用的参数传递。
  从C语言中直接调用汇编语言函数
  extern void strcopy(char *d,const char *s);
  int main(void){
  const       char src="Source";
  char dest[10];
  ...
  strcopy(dest,src);
  ...
  }
  AREA     StrCopy,CODE,READONLY
  EXPORT strcopy
  strcopy
  LDRB     R2,[R1],#1
  STRB      R2,[R0],#1
  CMP              R2,#0
  BNE              strcopy
  MOV             PC,LR
  END
  上面这个例子中的函数strcopy用汇编来实现,根据ATPCS的定义,函数参数从左到右由寄存器进行传递,所以在汇编中直接由R0和R1进行引用。这样,在C语言和汇编语言之间进行调用就容易实现了。

  嵌入式C语言中的参数传递就讲到这里,一般学C语言的时候,粤嵌嵌入式培训会建议:大家学习C语言可以先在一个平台上扎根,然后开始接触这个平台上,C语言用于处理各种东西的库是怎样的,并运用他们,熟悉他们,到了一定的积累程度后,你会发现C语言真的可以做很多事情。

免费预约试听课