A. 匯編語言是怎麼調用c語言的程序的
一、 參數傳遞的基本規則(ATPCS(ARM—Thumb Procere Call Standard))
1、 參數傳遞
二、匯編程序、C程序相互調用舉例
1、 C程序調用匯編程序
匯編程序的設計要遵守ATPCS(ARM—Thumb Procere Call Standard),保證程序調用時參數的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調用。在C程序使用extern聲明該匯編程序。
下面是一個C程序調用匯編程序的例子。其中匯編程序str實現字元串復制功能,C程序調用str完成字元串復制的工作。
//C程序
#include <stdio.h>
extern void str(char *d, const char *s);
int main( )
{
const char *srcstr=」First string-source」;
char dststr[ ]=」Second string-destination」;
printf(「Before ing:\n」);
printf(「%s\n %s\n」, srcstr,dststr);
str(dststr,srcstr);
printf(「After ing:\n」);
printf(「%s\n %s\n 「,srcstr,dststr);
while(1) ;
}
;匯編程序
AREA S, CODE, READONLY
EXPORT str
Str
LDRB R2, [R1], #1
STRB R2, [R0], #1
CMPR2,#0
BNE Str
MOV PC, LR
END
2、 匯編程序調用C程序
匯編程序的設計要遵守ATPCS,保證程序調用時參數的正確傳遞。在匯編程序中使用IMPORT偽操作聲明將要調用的C程序。下面是一個匯編程序調用C程序的例子。其中在匯編程序中設置好各參數的值。本例中有6個參數,分別使用寄存器R0存放第1個參數,
R1存放第2個參數, R2存放第3個參數, R3存放第4個參數, 第5個、第6個參數利用數據棧傳送。由於利用數據棧傳遞參數,在程序調用結束後要調整數據棧指針。
//C程序g( )返回6個參數的和
int g( int a, int b, int c, int d, int e, int f )
{
printf(「e=%d\n」, e);
printf(「f=%d\n」, f);
return (a+b+c+d+e+f);
}
; 匯編程序調用C程序 g( ) 計算6個整數 i, 2*i, 3*i, 4*i, 5*i, 6*i的和
EXPORT f
AREA f ,CODE, READONLY
IMPORT g
MOV R0, #1
ADD R1, R0, R0
ADD R2, R1, R0
ADD R3, R2, R0
ADD R4, R3, R0
ADD R5, R4, R0
STR R4, [SP, #-4]!
STR R5, [SP, #-4]!
BL g
ADD SP, SP, #4
ADD SP, SP, #4
STOP B STOP
END
B. c語言如何 調用外部程序
1. 在調用之前,先聲明和定義函數
2. 根據你函數的參數類表來,填入函數調用時所真正用到的參數來進行調用
例如:要在函數 F(){... } 中調用新增的小程序int FA(int a)和 char FC(char c),按照上面講的:
1.聲明和定義
int
FA(int a){ /*函數功能具體的定義*/};
char
FC(char& c){ ... /*函數功能具體的定義*/};
2 根據函數的聲明,在F()中加以調用
void
F()
{
... ...
int getA = FA(6); //6為int,如果參數是6.001,則會強制轉換成為6
... ...
char getC= FC('a') //a為單個的字元
}
就這樣,簡單吧,去試試吧 :-)
C. C語言如何調用別的程序
可以啊,只要放到程序李就得,但是不能是編譯語言
D. 怎樣在一個 C 程序中調用另一個程序 (獨立可執行的程序, 或系統命令)
使用庫函數 system(), 它的功能正是所要的。注意, 系統返回的值最多是命令的退出狀態值 (但這並不是一定的), 通常和命令的輸出無關。還要注意,system() 只接受一個單獨的字元串參數來表述調用程序。如果要建立復雜的命令行, 可以使用 sprintf()。根據使用的系統, 也許還可以使用系統函數, 例如exec 或 spawn (或execl,execv, spawnl, spawnv 等)。
E. C語言中如何用一個程序調用另一個程序,兩個程序都是.c文件。
你把被調用的.c文件中的main()函數改成其他名字
如fun();
然後在另一個.c文件的main()函數中調用fun();
只要保證一個C工程只有一個main()做入口點就行了,至於保留哪個main函數,那就要看你程序的邏輯了,注意main函數是入口點的概念