<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          C51軟復位分析

          作者: 時間:2012-07-04 來源:網(wǎng)絡 收藏


          這樣的語句就完成復位再啟功能了。類型轉(zhuǎn)換符()的優(yōu)先級跟指針運算符*的優(yōu)先級相同,
          二者的結合方向是自右至左,所以上述語句就能完成復位功能了。保險起見有些程序員常
          常喜歡再加個括號:

          #defineK(((void(*)())rst)

          (*K)()



          (*((void(*)())rst))();



          由于沒有輸入?yún)?shù),上述復位代碼更嚴謹?shù)膶懛ㄊ牵?BR>
          #defineK(((void(*)(void))rst)

          (*K)()



          (*((void(*)(void))rst))();

          關于帖子作者的解釋

          千萬不要犯“rst”形式的錯誤,對于一維數(shù)組而言,數(shù)組名rst就代表地址。以下二者等
          價,更常用的是等式左邊的形式:

          rst==rst[0]

          整個函數(shù)指針無所謂參數(shù)傳遞,只是把rst當作程序執(zhí)行地址調(diào)用而已,那個學生的解釋也
          有問題。

          還有一點必須提及,不是說能通過編譯,甚至生成正確代碼,就表示某語句一定是對的。
          對很復雜的語句,要考慮到編譯器不嚴格甚至出錯的可能性。

          哈佛結構和一個蠕蟲病毒

          請注意,定義數(shù)組rst[]時用了關鍵字code,這是特有的關鍵字,意味著把數(shù)組定義到
          程序空間。標準C是沒有關鍵字code的。

          哈佛結構和普林斯頓結構:

          哈佛結構——程序空間和存儲空間分開的。算是不太嚴格的哈佛結構——雖地址線分
          開,但數(shù)據(jù)線沒有分開。DSP是增強的哈佛結構。

          PC電腦上奔騰CPU是普林斯頓結構——數(shù)據(jù)空間和程序空間統(tǒng)一編址。


          如果數(shù)組rst[]數(shù)據(jù)的匯編機器碼是刪除文件的機器碼,這算不算是病毒?

          曾經(jīng)流行過一種蠕蟲病毒,其發(fā)作機理采取的就是將惡意代碼保存成文本文件,然后通過
          指針調(diào)用執(zhí)行這個文本,很多殺毒程序也不會查詢文本文件。

          程序也罷,數(shù)據(jù)也罷都是二進制形式,如果數(shù)據(jù)空間和程序空間是統(tǒng)一編碼的,數(shù)據(jù)當然
          可以當作程序運行。

          在這一點上,相對而言,哈佛結構的CPU安全性會好一點點。但嵌入式應用少有病毒,一般
          不用關心。


          關鍵詞: C51 軟復位分析

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();