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

標(biāo)題: Keil匯編進(jìn)階指南(1) - 編譯與鏈接 [打印本頁(yè)]

作者: Astrix    時(shí)間: 2024-11-28 23:39
標(biāo)題: Keil匯編進(jìn)階指南(1) - 編譯與鏈接
作為大家接觸C51點(diǎn)燈用的語言(也可能不是),但看見身邊大多數(shù)人仍然沿用舊版的匯編寫法,故作此指南
首先,該文章所有的內(nèi)容參照keil的相關(guān)文檔,強(qiáng)烈建議使用keil μvision4及以上版本,另外keil的官方文檔是以編譯器版本9.61編撰的,部分內(nèi)容可能未在舊版更新(比如MPL)
指路:developer.arm.com/documentation/101655/0961

編譯與鏈接

在開始進(jìn)一步匯編的編程之前,我們有必要重新溫習(xí)一下整個(gè)Keil C51編譯器的運(yùn)作,在官方文檔中提供了這樣一個(gè)圖



可以看見,程序并不是直接從C編譯而來,首先C要編譯成object文件,需要注意的是在這個(gè)時(shí)候文件并沒有進(jìn)行鏈接,也就是所有的函數(shù)跳轉(zhuǎn)都是標(biāo)記而不是地址,然后經(jīng)過BL51進(jìn)行鏈接,BL51會(huì)將所有的函數(shù)塊還有內(nèi)存變量之類的亂七八糟的東西進(jìn)行妥善安置并確定好最終的地址,然后替換掉標(biāo)簽(這個(gè)過程可以看到會(huì)生成MAP文件,里面記載著所有的函數(shù)段之類的位置),這個(gè)時(shí)候所有的標(biāo)記就都被抹掉了,生成的OMF文件也就是最終文件,我們燒寫所用的HEX文件是經(jīng)過OH51轉(zhuǎn)了一手,μvision的調(diào)試器使用的是omf文件
我在這里插一句,在Cx51也就是C編譯器那里實(shí)際上有一些更復(fù)雜的運(yùn)作,一般來講,C語言首先會(huì)被編譯成匯編,然后再形成object文件,但是對(duì)于keil來說稍稍有些復(fù)雜,在此按下不表,在以下的指南中,我們都會(huì)認(rèn)為C語言會(huì)被編譯成匯編然后再形成obj,這個(gè)過程同時(shí)造就了一些有趣的bug,比如同時(shí)定義兩個(gè)名字完全相同但是大小寫不一樣的變量,例如sec和SEC,keil會(huì)提示你multiple defination,也就是所謂的名字重復(fù),主要原因就是keil的C編譯器分大小寫,匯編編譯器不分,C不報(bào)錯(cuò),因?yàn)樗执笮懀珔R編編譯器拿過來,他不管大小寫,一看倆一樣的名字,報(bào)ERROR吧
在明確了這一過程之后,我們開始進(jìn)行下一步

作者: frank8586    時(shí)間: 2025-6-2 11:15
感謝分享




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产一区视频在线播放 | 日本国产欧美 | 久草免费福利视频 | xxx免费视频 | 91性高潮久久久久久久久 | av福利在线 | 一级片在线播放 | 中文字幕在线观看网址 | 成人精品国产 | 中文字幕免费观看 | 国精产品99永久一区一区 | 亚洲精品字幕在线观看 | 中国免费毛片 | 成人免费视频观看视频 | 天堂成人av | 日韩影音| 这里只有精品视频 | 日本人做爰全过程 | 不卡视频一区二区 | 在线观看黄色片 | 大尺度做爰床戏呻吟舒畅 | 久久都是精品 | 亚洲乱码在线 | 欧美天天干 | 亚洲成人日韩 | 国产精品二区一区二区aⅴ污介绍 | 中文字幕网站 | 天天狠狠 | 成年视频在线观看 | 国产欧美一区二区三区视频在线观看 | 久久999| 日本三级久久 | 美女91网站 | 精品久久影院 | 国产1级片 | 免费一区二区 | 精品久久视频 | 欧美专区在线观看 | 久久久久久久久久久国产 | 亚洲国产激情 | 一区二区三区在线观看视频 |