久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1437|回復(fù): 10
收起左側(cè)

問(wèn)一個(gè)C語(yǔ)言匯編 之間互相調(diào)用的問(wèn)題

[復(fù)制鏈接]
ID:624769 發(fā)表于 2021-11-12 22:44 | 顯示全部樓層 |閱讀模式
在 C 語(yǔ)言中,如果聲明一個(gè)變量,
unsigned char ABC;
在匯編中 可以用
extrn DATA(ABC)
來(lái)調(diào)用,

那么,C 語(yǔ)言中一個(gè)define  如:
#define MainForse  24000000L
在匯編中應(yīng)該怎么調(diào)用?

回復(fù)

使用道具 舉報(bào)

ID:967119 發(fā)表于 2021-11-13 21:36 | 顯示全部樓層
真的理解。可能就是那種一切盡在掌握中,程序都跑不飛的那種上帝視角的感覺(jué)。
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-11-13 20:30 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-11-13 13:24
代碼占用空間變小,我還真沒(méi)有覺(jué)得
如果說(shuō)是在只有幾百B的低端國(guó)產(chǎn)單片機(jī)上,匯編是絕對(duì)需要的
程序空間 ...

嗯……, 或許是我C語(yǔ)言的編寫(xiě)能力太濫了吧……,畢竟我是業(yè)余的……
我是先學(xué)的C,后來(lái),玩STC8的時(shí)候,碰到31之后的中斷號(hào),才被迫的碰了點(diǎn)匯編的皮毛,那時(shí)候還是比較抵觸匯編的,再后來(lái)碰到幾個(gè)對(duì)時(shí)序要求非常嚴(yán)的問(wèn)題,怎么也搞不定,才去學(xué)的匯編,不知道為什么,一開(kāi)始認(rèn)真接觸匯編,忽然感覺(jué)一種奇特的親切感,利用匯編解決了那幾個(gè)時(shí)序問(wèn)題之后,就開(kāi)始仔細(xì)研究匯編。
越學(xué)越覺(jué)得這東西合我意啊,有一種直接操縱單片機(jī)的爽感,可以在整個(gè)FLASH里面隨意的跳,隨意的讀,不用去考慮有沒(méi)有聲明這個(gè),有沒(méi)有聲明那個(gè),也不會(huì)有在C里面那種,不能從這個(gè)函數(shù)直接跳去那個(gè)函數(shù)而不返回的郁悶。手握絕對(duì)操控權(quán)的感覺(jué)。 當(dāng)然,如果玩脫了,RET次數(shù)沒(méi)有計(jì)算控制好,PUSH,POP沒(méi)有配對(duì),后期糾錯(cuò)也相當(dāng)?shù)耐纯嗍隆?br /> 之后,歷時(shí)2年左右,通過(guò)用匯編重寫(xiě)以前大量的程序,總算對(duì)匯編有了一定的掌握。在這個(gè)過(guò)程,大部分在用C寫(xiě)的時(shí)候10K左右的程序(當(dāng)時(shí)不得不用STC15W408, IAP15W413以及后來(lái)STC8F2K16),匯編改寫(xiě)后,很多順利的塞進(jìn)了STCW204里面。當(dāng)然,里面可能有一開(kāi)始思考的不成熟,匯編改寫(xiě)后,順便優(yōu)化了算法的功勞,但是在壓縮程序體積上,匯編還是有絕對(duì)的優(yōu)勢(shì)的。C語(yǔ)言無(wú)論你設(shè)計(jì)多精簡(jiǎn),最終還是不可能帶著A,R0~R7  從這個(gè)函數(shù)跳到那個(gè)函數(shù),也不可能在一個(gè)函數(shù)里通過(guò)反復(fù)切換RS0,RS1,讓函數(shù)同時(shí)操縱32個(gè)通用寄存器,但是,這些都是減小代碼量的有效手段。
說(shuō)那么多,我不是說(shuō)匯編有多好,只是想表達(dá),我有多喜歡匯編,奈何這方面的資料太少…… 很多目的無(wú)法實(shí)現(xiàn),可惜……
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2021-11-13 17:20 | 顯示全部樓層
換STM8吧,51那120byte的直接尋址能力看了就想吐。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2021-11-13 13:24 | 顯示全部樓層
188610329 發(fā)表于 2021-11-13 12:23
好的,謝謝。

好處是: 代碼可以變小很多。

代碼占用空間變小,我還真沒(méi)有覺(jué)得
如果說(shuō)是在只有幾百B的低端國(guó)產(chǎn)單片機(jī)上,匯編是絕對(duì)需要的
程序空間超過(guò)1K的,用C來(lái)寫(xiě),盡量的調(diào)用函數(shù),匯編在代碼大小上是沒(méi)有優(yōu)勢(shì)的
只要你去熟練C的編程原則,總比啃匯編好
不會(huì)匯編的人多了去了,也就新手還在發(fā)帖問(wèn)"內(nèi)存不夠怎么辦",有經(jīng)驗(yàn)的單片機(jī)從業(yè)者,用C一樣的能寫(xiě)出簡(jiǎn)潔的程序出來(lái)
我之前就是用匯編的,用了幾年,煩了,累了
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-11-13 12:23 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-11-13 12:13
沒(méi)有試過(guò)混編,不知道
但這沒(méi)什么意義,至少在當(dāng)前的8051單片機(jī)上,C和匯編混編沒(méi)什么實(shí)際的好處,99.99%的 ...

好的,謝謝。

好處是: 代碼可以變小很多。
但是,可能年紀(jì)大了,全都用匯編的話……,腦殼疼……,只好退而求其次,混編。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2021-11-13 12:13 | 顯示全部樓層
188610329 發(fā)表于 2021-11-13 01:30
那么假定 我在  匯編里  
MainForse    EQU    24000D

沒(méi)有試過(guò)混編,不知道
但這沒(méi)什么意義,至少在當(dāng)前的8051單片機(jī)上,C和匯編混編沒(méi)什么實(shí)際的好處,99.99%的情況下,C是可以實(shí)現(xiàn)匯編的功能的
除了要精確一兩個(gè)時(shí)鐘的的時(shí)序程序,匯編沒(méi)什么優(yōu)勢(shì)可言,沒(méi)有必要深入這方面的東西,要么就是匯編,要么就是C
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-11-13 01:33 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-11-13 00:02
沒(méi)可能實(shí)現(xiàn)。#define是在預(yù)處理階段把MainForse直接簡(jiǎn)單替換成24000000L,MainForse這個(gè)名字都不可能出現(xiàn)在 ...

假定, 我有 24000000 這個(gè)值,匯編也要用到,C 也要用到,除了兩個(gè)文件分別 用 define 和 EQU 之外,有什么別的變通的辦法,可以實(shí)現(xiàn)只在一個(gè)地方 設(shè)定?
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-11-13 01:30 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-11-13 00:25
#define MainForse  24000000L
這個(gè)只是文本上替換而已,不會(huì)被編譯的
而且,#define 是可以在匯編環(huán)境下使 ...

那么假定 我在  匯編里  
MainForse    EQU    24000D

在 C 里面有辦法調(diào)用么?
現(xiàn)在主要問(wèn)題是,在混合編寫(xiě)的時(shí)候,有些設(shè)定,兩頭都設(shè)定,在修改時(shí),容易出現(xiàn)錯(cuò)漏,所以希望能有可以兩邊都引用的方法。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2021-11-13 00:25 | 顯示全部樓層
#define MainForse  24000000L
這個(gè)只是文本上替換而已,不會(huì)被編譯的
而且,#define 是可以在匯編環(huán)境下使用的,但是匯編幾乎每個(gè)指令都是地址有有關(guān),#define還不如EQU實(shí)用,所以,一般的匯編是不用#define的
當(dāng)然,我見(jiàn)過(guò)一些由C轉(zhuǎn)匯編的人喜歡用#define
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2021-11-13 00:02 | 顯示全部樓層
沒(méi)可能實(shí)現(xiàn)。#define是在預(yù)處理階段把MainForse直接簡(jiǎn)單替換成24000000L,MainForse這個(gè)名字都不可能出現(xiàn)在obj文件里面,更別說(shuō)讓linker找到跟asm編譯出來(lái)的obj連接在一起了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: japan25hdxxxx日本 做a的各种视频 | 亚洲网址在线观看 | 日韩电影中文字幕在线观看 | 特黄色毛片 | 久久不卡日韩美女 | 狠狠操你 | 欧美精品久久 | 欧美精品在线看 | 日韩欧美操 | 国产视频中文字幕在线观看 | 国产视频福利一区 | www日| 日韩欧美电影在线 | 欧美一区二区三区精品 | 国产精品免费一区二区三区四区 | 一区二区三区免费在线观看 | 久久狠狠| 久久人人国产 | 国产成人精品视频在线观看 | 国产精品欧美大片 | 一区二区三区四区视频 | 国产黄色精品在线观看 | 在线观看特色大片免费网站 | av中文字幕在线 | 91精品国产91久久久久久最新 | 玖玖精品 | 亚洲国产精品一区二区久久 | 国产精品jizz在线观看老狼 | 青青草av在线播放 | 国产一区二区三区在线视频 | 欧美视频一区二区三区 | 欧美一级二级在线观看 | 免费午夜电影 | 免费在线a视频 | 亚洲免费av一区 | 亚洲国产专区 | 久久99蜜桃综合影院免费观看 | 99热这里有精品 | 日韩一区二 | 免费中文字幕 | 一区二区三区日韩 |