雷军1994年写的诗一样的代码,我把它运行起来了!
這是一段古董代碼了,因?yàn)樵?994年,當(dāng)時(shí)我的一個(gè)老師也是做匯編項(xiàng)目,他跟我聊過的故事是,當(dāng)時(shí)是他跟一個(gè)前輩一起去現(xiàn)場給客戶看故障,調(diào)試,用的ARM匯編,當(dāng)時(shí)前輩是賺了2w,他賺到了6k的樣子。
在94年能夠精通匯編,雖然不被大眾認(rèn)可,認(rèn)為這個(gè)電腦還是比較飄幻,因?yàn)槟菚r(shí)候還沒有進(jìn)入尋常百姓家,我接觸電腦在初中,那時(shí)候也02-03年了,而且那時(shí)候要記指令,也沒多少畫面,印象不深。
記得學(xué)校有個(gè)校園網(wǎng)劇音頻版,就是《讓青春繼續(xù)》,講述的牽扯到了四小龍以及當(dāng)時(shí)的包分配最終走向自營的過程,剛好也是這個(gè)時(shí)間段,主人公百腦也是系統(tǒng)子弟,叛逆的去學(xué)了編程,最終走出自己的傳奇人生。
他們都是出生在這個(gè)時(shí)代,這個(gè)時(shí)代造就的人才,科技人才,能夠接觸到信息技術(shù),那么很容易就能夠出彩。像馬化騰,張小龍,還有雷軍,李彥宏,都是做過技術(shù)開發(fā)的,有了程序員思維,同時(shí)又在商業(yè)中尋求生存,試錯(cuò)的機(jī)會以及風(fēng)口卷動,最終扶搖而出。
之前看到有朋友發(fā)雷軍寫的代碼,因?yàn)楝F(xiàn)在都不直接用匯編去寫代碼,但是如果用匯編寫過代碼的話,其實(shí)對于硬件接觸的多會對編碼有更深的理解,具體就是能夠?qū)?shí)現(xiàn)具體拆下去成顆粒狀的指令,這個(gè)跟我們一般意義的C語言還是有區(qū)別的。
當(dāng)寫匯編的時(shí)候,會曉得一點(diǎn),就是能夠感知到指令周期,以及時(shí)鐘運(yùn)轉(zhuǎn)的流程,指令是計(jì)算機(jī)中表征最小顆粒,再往下的微指令一般都不深究,到這里就足夠?qū)⒂?jì)算機(jī)系統(tǒng)搭建完成。
那么回過頭來,我們看下雷軍當(dāng)時(shí)寫的代碼,因?yàn)槭菂R編語言,看了下大致就是MASM,于是我上網(wǎng)找出MASM32plus工具,但是編譯的結(jié)果是報(bào)錯(cuò),爆出很多不識別的指令。
這個(gè)也沒細(xì)究,我之前用MASM的時(shí)候,也已經(jīng)是有API的,就是匯編的API,已經(jīng)不是純粹匯編寫法了,大致是這種寫法了。
那么我再繼續(xù)查找,這段代碼跟我之前寫的C51的寫法差不多,我找了相關(guān)的一個(gè)編譯工具,emu8086,這個(gè)工具是識別這段匯編的,但是有個(gè)報(bào)錯(cuò)是,重定義。這里主要就是代碼中多處的@@2這類標(biāo)簽,在這個(gè)emu8086里面會認(rèn)為這個(gè)是多重定義,但是按理說不應(yīng)該,所以工具是沒選對的。也就是emu8086會把標(biāo)簽認(rèn)定成是全局的,但是實(shí)際上這個(gè)是函數(shù)內(nèi)部的標(biāo)簽。
那么我繼續(xù)去找ASM的編譯工具,找的關(guān)鍵字都是8086ASM,最終試了多個(gè)都是失敗了,也是比較挫折的。今天又想著不能放棄,再找找看看有沒有線索,于是便繼續(xù)檢索,找到了一本書,這本書給出了答案。
這本書的作者是雷軍,對就是寫這個(gè)的,求伯君和雷軍,寫出的金山軟件。書名是《深入DOS編程》,因?yàn)檫@段代碼就是DOS下的清理軟件,而且時(shí)間點(diǎn)也是匹配的,所以這個(gè)書里面應(yīng)該有答案的。(文末提供這本書的鏈接,以及對應(yīng)的所有工具。)
我要找的是什么?就是編寫代碼,以及書里面怎么編譯的。簡單驗(yàn)證了下匯編寫法一致,那么就剩下找到書里的編譯工具,幸運(yùn)的是,找到了,具體是:
TASM 3.0。引用下百度的介紹:
下一步便是找到工具,從csdn找到的開發(fā)包缺少tlink工具,于是又百度找了下,最終找全了。在win7 ,win10上面,運(yùn)行不了這個(gè)工具了,因?yàn)槿鄙貲OS環(huán)境了,那么我們就應(yīng)該找到 XP 系統(tǒng),這個(gè)里面是包含著DOS系統(tǒng)的,我們?nèi)タ磜indows的PE結(jié)構(gòu),就知道里面前面的一部分是表征的DOS結(jié)構(gòu)。
那么我們裝一個(gè)虛擬機(jī),我這里用的Vbox,我電腦裝VM12裝xp系統(tǒng)就會卡死,于是我用了Vbox安裝了雨林木風(fēng)的GHOST,最終把工具放到里面,運(yùn)行成功。以下是運(yùn)行的效果,編譯過程。
具體是:tasm 匯編成obj,然后使用tlink進(jìn)行鏈接,最終生成COM可執(zhí)行程序。
最后分享個(gè)學(xué)習(xí)方法,在使用一個(gè)工具的時(shí)候,可以去看看它的官方文檔,以及工具中的文件夾,幸運(yùn)的是,TASM安裝包有EXAMPLES,打開可以去看看一些實(shí)例,學(xué)習(xí),編譯。同時(shí)還能快速的確認(rèn)出來,跟雷軍的代碼使用的偽指令,匯編代碼差不多,也就是這個(gè)工具就對了。
當(dāng)然這個(gè)工具真正要跑應(yīng)用,是在DOS的實(shí)模式運(yùn)行,我們的XP是模擬的DOS環(huán)境,所以也不是完全一致,這塊如果要真正測驗(yàn),需要一個(gè)DOS的模擬器,完全一致下,測試效果就出來了。
最后分享一張雷軍還是碼農(nóng)的時(shí)候照片,有時(shí)候在想,是不是因?yàn)橐獣r(shí)常輔導(dǎo)女同事,然后最終把自己的技術(shù)煉道成仙了呢?
所以,我們寫不好代碼,有可能是因?yàn)闆]有這么漂亮的女同事吧?不管咋,這個(gè)理由可以有。
~~ end not end ~~
代碼和工具的獲取方式 ,后臺回復(fù)?雷軍代碼 。
-END-
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請聯(lián)系刪除?|
往期好文合集
如何才能學(xué)好單片機(jī)?
2020年11月全國程序員工資,新出爐!
10年老兵!從大學(xué)畢業(yè)生到嵌入式系統(tǒng)工程師的修煉之道……
??最 后??
?若覺得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號內(nèi)回復(fù)「更多資源」,即可免費(fèi)獲取,期待你的關(guān)注~
總結(jié)
以上是生活随笔為你收集整理的雷军1994年写的诗一样的代码,我把它运行起来了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何才能学好单片机?
- 下一篇: 一根网线有这么多“花样”,你知道吗?