『壹』 C語言的子程序該怎麼調用
我沒學過VB,但是C里的子函數都是你調用才運算的呀,函數的類型就是返回值的類型,如float count(int a){。。。;return z;}就定義了一個返回值為float型的函數
『貳』 C語言中如何調用匯編子程序給個例子講解下
你是指內聯匯編吧?比如下面這個例子:
#include<stdio.h>
intfunc(inta,intb)
{
returna-b;
}
intmain()
{
//計算12-5
inta=12,b=5;//給定兩個數
intres;//用來記錄結果
__asm{//內聯匯編
pushb;//b壓棧
pusha;//a壓棧,注意C中函數接受參數的時候入棧是反著的
callfunc;//調用函數func,返回值保存在eax里
movres,eax;//將eax里的值賦給res
}
printf("%d ",res);//輸出結果,得到7
return0;
}
『叄』 arm 如何調用子程序,就是用c語言寫的,好像有許多格式控制,不是很明白,請指教
用C語言寫的ARM程序調用C函數和普通的C語言格式一樣,沒有特殊的地方;
如果用C語言調用ARM的匯編,則有規則。
在C程序和ARM匯編程序之間相互調用時必須遵守ATPCS(ARM-THUMB procere call standard )規則。ATPCS規定了一些子程序間調用的基本規則,比如:
寄存器的使用規則
子程序之間通過寄存器r0~r3來傳遞參數,當參數個數多於4個時,使用堆棧來傳遞參數。
在子程序中,使用寄存器r4~r11保存局部變數。
寄存器r12用於保存堆棧指針SP,當子程序返回時使用該寄存器出棧,記作IP。寄存器r13用作堆棧指針,記作SP。寄存器r14稱為鏈接寄存器,記作LR。該寄存器用於保存子程序的返回地址。寄存器r15稱為程序計數器,記作PC。
堆棧的使用規則
堆棧採用滿遞減類型(FD,Full Descending),即堆棧通過減小存儲器地址而向下增長,堆棧指針指向內含有效數據項的最低地址。
參數的傳遞規則
整數參數的前4個使用r0~r3傳遞,其他參數使用堆棧傳遞;
子程序的返回結果為一個32位整數時,通過r0返回;返回結果為一個64位整數時,通過r0和r1返回;依此類推。
匯編程序調用C程序的方法為:首先在匯編程序中使用IMPORT偽指令事先聲明將要調用的C語言函數;然後通過BL指令來調用C函數。
C程序調用匯編子程序的方法為:首先在匯編程序中使用EXPORT偽指令聲明被調用的子程序,表示該子程序將在其他文件中被調用;然後在C程序中使用extern關鍵字聲明要調用的匯編子程序為外部函數。
『肆』 C語言中如何調用子程序
在c/c++中,沒有子程序的說法,而叫做函數。函數可以有返回值,不需要時,可定義為void類型。
函數的使用與子程序的用法相同,沒有什麼特殊之處。例如
.............................................................................
int
max(int
a,
int
b)
{
/*
返回a和b的最大值
*/
return
(a
>
b)
?
a
:
b;
}
.............................................................................
int
a
=
5,b
=
8,c
=
3;
printf("a,b,c中的最大值是
:
%d\n",max(max(a,b),c);