c語言調用匯編的方法
c部分很簡單,文件名隨便,如main.c:
#include <stdio.h>
#include <stdlib.h>
void decToBin(long dec,char *b); //聲明外部匯編函數(shù)
int main()
{
long dec=254;
char *bin=(char*)malloc(sizeof(char)*64);
decToBin(dec,bin);
printf("%s\n",bin);
free(bin);
return 0;
}
本人使用的是mac 64位系統(tǒng),所以64bit寄存器為r開頭,如:rax、rbx等。
c調用的代碼如下,保存的文件名隨便,如decBin.S or decBin.s.
.global _decToBin #下劃線是必須的
_decToBin:
pushq %rbp
movq %rsp,%rbp
movq %rdi,-8(%rbp) #第一個參數(shù)
movq %rsi,-16(%rbp) #第二個參數(shù)
movq -8(%rbp),%rax
movq -16(%rbp),%rbx
movq $63,%rcx
A:
rclq $1,%rax
jnc B
movb $49,(%rbx)
jmp C
B:
movb $48,(%rbx)
C:
addq $1,%rbx
loop A
popq %rbp
ret
AT&T語法的匯編網上有很多,俺就不介紹了。
在mac中使用的實際是clang編譯器,這又牽扯到了LLVM項目,LLVM是構架編譯器(compiler)的框架系統(tǒng),Apple是LLVM計劃的主要資助者。
cc鏈接的就是clang,Makefle文件:
main:main.o decBin.o
main.o:main.c
decBin.o:decBin.s
cc -c $<
clean:
-rm main.o decBin.o main
上一篇:STL 的string類怎么啦
欄 目:C語言
下一篇:標準C++類string的Copy-On-Write技術
本文標題:c語言調用匯編的方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3924.html
您可能感興趣的文章
- 04-02c語言函數(shù)調用后清空內存 c語言調用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求階乘


閱讀排行
本欄相關
- 04-02c語言函數(shù)調用后清空內存 c語言調用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05織夢dedecms什么時候用欄目交叉功能?