1、 參數(shù)傳遞
創(chuàng)新互聯(lián)服務(wù)項目包括留壩網(wǎng)站建設(shè)、留壩網(wǎng)站制作、留壩網(wǎng)頁制作以及留壩網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,留壩網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到留壩省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
二、匯編程序、C程序相互調(diào)用舉例
1、 C程序調(diào)用匯編程序
匯編程序的設(shè)計要遵守ATPCS(ARM—Thumb Procedure Call Standard),保證程序調(diào)用時參數(shù)的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調(diào)用。在C程序使用extern聲明該匯編程序。
下面是一個C程序調(diào)用匯編程序的例子。其中匯編程序strcopy實現(xiàn)字符串復制功能,C程序調(diào)用strcopy完成字符串復制的工作。
把匯編寫在另一個文件里 在main寫個原型聲明 再把兩個文件同時編譯可不可以。
我的gcc編譯器里是這樣寫的
匯編文件m.s
.file "stdio.h"
#hellowrold.s print "hello,world!"
.section .data
output:
.ascii "%d %d %d\0"
.section .text
.globl _fun
_fun:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl 0x8(%ebp), %eax
movl %eax, 0x4(%esp)
movl 0xc(%ebp), %eax
movl %eax, 0x8(%esp)
movl 0x10(%ebp), %eax
movl %eax, 0xc(%esp)
movl $output, %eax
movl %eax, (%esp)
call _printf
movl %ebp, %esp
popl %ebp
ret
.end
主函數(shù)前的原型聲明 extern int fun(int i, int j, int k);
1、如果匯編程序是可執(zhí)行文件,比如exe文件,則可以使用system函數(shù)直接調(diào)用。比如下面的代碼,用system()打開windows上的記事本程序。
#include
#include
int main()
{
system("notepad.exe");
return 0;
}2、在C語言源碼中,可以通過內(nèi)聯(lián)匯編來直接編寫匯編程序代碼。不同的編譯器使用內(nèi)聯(lián)匯編的方法不同,vc/vs編譯器中一般使用__asm關(guān)鍵字來使用內(nèi)聯(lián)匯編,gcc編譯器一般使用asm關(guān)鍵字來使用內(nèi)聯(lián)匯編,以vc6.0為例,下面的代碼通過使用內(nèi)聯(lián)匯編來計算1+1,并將結(jié)果保存到int型變量result中。
#include
int main()
{
int result;
_asm {
mov eax,1
mov ebx,1
add eax,ebx
mov result, eax
}
printf("1+1=%d\n", result);
return 0;
}
TI 的CCS軟件??
C要調(diào)用匯編..首先要 匯編編寫的時候 符合C調(diào)用規(guī)則, 這個首先要去看C語言編譯器
同樣匯編調(diào)用C, 也要先在匯編狀態(tài)下準備C需要的環(huán)境
舉個例子TI CCS里面 寫LF2407編譯器.
在匯編里面 所有的c變量都需要加_ ,,比如 int a; 匯編要調(diào)用的名字就是 _a
C語言用R6 R7做堆棧指針等等