精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何寫要被C調用的匯編函數

麥辣雞腿堡 ? 來源:Microchip微芯 ? 作者:Microchip微芯 ? 2023-01-22 14:54 ? 次閱讀

問:我該怎么寫一個將被C調用的匯編函數?

答:一個最簡單的學習怎么寫匯編的方式是,先用C寫這個代碼的簡單版本,然后用編譯器將它編譯成為匯編代碼。然后你就可以用這個輸出的匯編代碼作為你自己匯編函數的模板。例如:

你說你想寫一個帶有“long”類型參數的匯編子程序,那么首先用C寫一個函數:

void MyAsmFunc(unsigned long parameter)
{
}

好了,現在編譯它產生匯編代碼。PICC編譯器的-S選項可以。

picc -16f877 -S file.c

這個命令將產生"file.as",打開它,它看起來像下面這樣:


; param _parameter assigned to ?_MyAsmFunc+0
_MyAsmFunc$parameter set ?_MyAsmFunc+0
psect text1,local,class=CODE,delta=2
global _MyAsmFunc
signat _MyAsmFunc,4216
psect text1
_MyAsmFunc
bcf 3,6
bcf 3,5
return


因為PICC編譯器會讓函數的bank回零。所以我們在這里看到它在return之前把bank回到bank0。從這個匯編代碼開始,你可以擴充你的匯編代碼。函數的參數可以使用_MyAsmFunc$paramter符號來訪問。這個符號訪問的是第一個字節,其余的字節就在符號上加偏移量,例如:

_MyAsmFunc$parameter+2

這將引用第三個字節。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62445
  • 編譯器
    +關注

    關注

    1

    文章

    1618

    瀏覽量

    49057
收藏 人收藏

    評論

    相關推薦

    C語言函數調用過程中的內存變化解析

    調用實例,內存視角,反匯編代碼來探討C 語言函數調用過程,也可以說是C 語言
    的頭像 發表于 12-11 16:21 ?3736次閱讀

    匯編C語言中的定義和調用

    單片機開發或多或少都會接觸一些匯編代碼,今天就來說說關于匯編C中的定義和調用,以及舉例說明嵌套匯編代碼。
    發表于 08-29 14:07 ?1396次閱讀

    匯編語言模塊調用C++函數實例

    現在編寫一個簡單的應用程序,提示用戶輸入整數,通過移位的方式將其與 2 的幕 (21?2?) 相乘,并用填充前導空格的形式再次顯示每個乘積。輸入-輸出使用 C++。匯編模塊將調用 3 個 C
    發表于 10-11 09:52 ?908次閱讀

    C函數調用機制與棧幀原理詳解

    當一個C函數調用時,函數的參數如何傳遞、堆棧指針如何變化、棧幀是如何被建立以及如何被消除的,一直缺乏系統性的理解,因此決定花時間學習下函數
    發表于 06-08 10:49 ?1231次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>函數</b><b class='flag-5'>調用</b>機制與棧幀原理詳解

    如何使用內聯函數調用匯編函數?

    C/C++中調用匯編代碼中的函數使用內聯函數調用匯編函數
    發表于 04-02 06:57

    C匯編是怎樣進行函數調用的?

    C匯編是怎樣進行函數調用的?分為哪幾種情況?
    發表于 04-27 07:00

    如何寫一個簡易的printf函數

    如何寫一個簡易的printf函數?
    發表于 04-28 06:47

    匯編調用C1、用c編寫函數

    匯編調用C1、用c編寫函數 int jc(int n),其功能是返回n!,保存為1c.c,編寫
    發表于 12-20 07:59

    C++教程之函數的遞歸調用

    C++教程之函數的遞歸調用 在執行函數 f 的過程中,又要調用 f 函數本身,稱為
    發表于 05-15 18:00 ?35次下載

    如何在c51程序中調用匯編函數

    一個整型變量。例中,先用c51寫出這個函數的主體,然后用SRC控制指令編譯產生asm文件,進一步修改這個asm文件就得到我們所要的匯編函數。該方法讓編譯器自動完成各種段的安排,提高了
    發表于 11-02 15:57 ?4191次閱讀

    Linux匯編C互相調用

    ? 一. 概述  匯編通過call指令調用C函數,call指令主要有兩個功能:1.將下一條指令的地址保存在棧頂;2.設置eip指向被
    發表于 04-02 14:46 ?418次閱讀

    C匯編如何互相調用

    一、gcc 內聯匯編 內聯匯編即在C中直接使用匯編語句進行編程,使程序可以在C程序中實現C語言不
    的頭像 發表于 12-25 15:50 ?2983次閱讀

    EE-128:C++中的DSP:從C++調用匯編類成員函數

    EE-128:C++中的DSP:從C++調用匯編類成員函數
    發表于 04-16 17:04 ?2次下載
    EE-128:<b class='flag-5'>C</b>++中的DSP:從<b class='flag-5'>C</b>++<b class='flag-5'>調用匯編</b>類成員<b class='flag-5'>函數</b>

    C語言代碼中調用匯編函數需要注意什么

    來看下混合語言工程中,就比如在匯編程序中調用C函數,或者在C語言代碼中調用匯編
    的頭像 發表于 11-12 11:04 ?2800次閱讀

    匯編調用C函數

    大多數情況下,可能只需要一到兩個簡單的匯編函數,所以就想將這些匯編代碼嵌入C代碼的文件中。多數開發工具都有一種被稱作內聯匯編的特性,而ARM
    發表于 08-05 10:07 ?4546次閱讀