c語(yǔ)言調(diào)用匯編的方法
c部分很簡(jiǎn)單,文件名隨便,如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開(kāi)頭,如:rax、rbx等。
c調(diào)用的代碼如下,保存的文件名隨便,如decBin.S or decBin.s.
.global _decToBin #下劃線是必須的
_decToBin:
pushq %rbp
movq %rsp,%rbp
movq %rdi,-8(%rbp) #第一個(gè)參數(shù)
movq %rsi,-16(%rbp) #第二個(gè)參數(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語(yǔ)法的匯編網(wǎng)上有很多,俺就不介紹了。
在mac中使用的實(shí)際是clang編譯器,這又牽扯到了LLVM項(xiàng)目,LLVM是構(gòu)架編譯器(compiler)的框架系統(tǒng),Apple是LLVM計(jì)劃的主要資助者。
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
相關(guān)文章
利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器
這篇文章主要介紹了利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器的相關(guān)資料,需要的朋友可以參考下2015-03-03
C++深入探索內(nèi)聯(lián)函數(shù)inline與auto關(guān)鍵字的使用
本篇文章主要包括內(nèi)聯(lián)函數(shù)和auto關(guān)鍵字。其中,內(nèi)斂函數(shù)包括概念,特性等;auto關(guān)鍵字的使用規(guī)則,使用場(chǎng)景等,接下來(lái)讓我們深入了解2022-05-05
c語(yǔ)言實(shí)現(xiàn)找最大值最小值位置查找
這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)找最大值最小值位置查找,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
C語(yǔ)言實(shí)現(xiàn)最長(zhǎng)遞增子序列問(wèn)題的解決方法
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最長(zhǎng)遞增子序列問(wèn)題的解決方法,采用遞歸的方法解決該問(wèn)題,是非常經(jīng)典的一類算法,需要的朋友可以參考下2014-09-09
C語(yǔ)言深入分析數(shù)組指針和指針數(shù)組的應(yīng)用
在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活2022-04-04
基于QT的TCP通信服務(wù)的實(shí)現(xiàn)
在項(xiàng)目開(kāi)發(fā)過(guò)程中,很多地方都會(huì)用到TCP通信,本文主要介紹了基于QT的TCP通信服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
舉例分析private的作用(c/c++學(xué)習(xí))
我知道我們可以用 public 中的值,把private中的數(shù)據(jù)給提出來(lái),但是還是搞不懂private該怎么用,或者說(shuō)在一個(gè)具體程序中,private有什么用2020-08-08

