評論下面這個中斷函式

2022-09-09 02:36:11 字數 1920 閱讀 4033

今天看到的c/c++50個經典面試題中的問題:

中斷是嵌入式系統中重要的組成部分,這導致了很多編譯開發商提供一種擴充套件—讓標準c支援中斷。具代表事實是,產生了乙個新的關鍵字 __interrupt。

__interrupt double compute_area (double radius) 

這個函式有太多的錯誤了,以至讓人不知從何說起了:

1)  isr 不能返回乙個值。(如果你不懂這個,那麼你不會被雇用的。)

2)  isr 不能傳遞引數。(如果你沒有看到這一點,你被雇用的機會等同第一項。)

3)  在許多的處理器/編譯器中,浮點一般都是不可重入

的。(有些處理器/編譯器需要讓額處的暫存器入棧,有些處理器/編譯器就是不允許在isr中做浮點運算。

此外,isr應該是短而有效率的,在isr中做浮點運算是不明智的。)

4) 與第三點一脈相承,printf經常有重入

和效能上的問題。(如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到後兩點,那麼你的被雇用前景越來越光明了。)

不能在中斷服務程式中執行類似操作的原因是運算時間太長,不能在中段中作複雜的工作,你可以在中斷服務程式中置乙個標誌位.然後在主程式中查詢此位,判斷是否執行計算子程式.當然這樣做會在中斷產生與實際的中斷響應之間產生一定的延遲,如果你的系統對時間不太敏感還好,如果非常敏感可以考慮採用rtos。否則。。。多加幾句對中斷標誌位的判斷語句。。。。

在主程式中監測是否被置位來決定子程式是否執行.可能存在以下問題,就是,中斷返回後要執行幾個耗時比較長的子程式才能執行判斷標誌位的語句,這樣,可能會有太長的時間間隔.如果你在幾個耗時比較長的子程式之間加上一句判斷語句,就會減小中斷產生與中斷響應之

間的時間延遲.

中斷活動的全過程大致為:

1、中斷請求:中斷事件一旦發生或者中斷條件一旦構成,中斷源提交「申請報告」,與請求cpu暫時放下目前的工作而轉為中斷源作為專項服務

2、中斷遮蔽:雖然中斷源提交了「申請報告」,但是,是否得到cpu的響應,還要取決於「申請報告」是否能夠通過2道或者3道「關卡」(中斷遮蔽)送達cpu(相應的中斷遮蔽位等於1,為關卡放行;反之相應的中斷遮蔽位等於0,為關卡禁止通行);

3、中斷響應:如果一路放行,則cpu響應中斷後,將被打斷的工作斷點記錄下來(把斷點位址保護到堆疊),掛起「不再受理其他申請報告牌」(清除全域性中斷標誌位gie=0),跳轉到中斷服務子程式

4、保護現場:在處理新任務時可能破壞原有的工作現場,所以需要對工作現場和工作環境進行適當保護;

5、調查中斷源:檢查「申請報告」是由哪個中斷源提交的,以便作出有針對性的服務;

6、中斷處理:開始對查明的中斷源進行有針對性的中斷服務;

7、清除標誌:在處理完畢相應的任務之後,需要進行撤消登記(清除中斷標誌),以避免造成重複響應;

8、恢復現場:恢復前面曾經被保護起來的工作現場,以便繼續執行被中斷的工作;

9、中斷返回:將被打斷的工作斷點找回來(從堆疊中恢復斷點位址),並摘下「不再受理其他申請報告牌」(gie=1),繼續執行原先被打斷的工作。

重入一般可以理解為乙個函式在同時多次呼叫,例如作業系統在程序排程過程中,或者微控制器、處理器等的中斷的時候會發生重入的現象。

一般浮點運算都是由專門的硬體來完成,舉個例子假設有個硬體暫存器名字叫做float,用來計算和存放浮點數的中間運算結果

假設有這麼個函式

void fun()

假如第一次執行,有個對浮點數操作運算的結果臨時存在float暫存器中,而就在這時被中斷了,而中斷函式或者另乙個程序也呼叫fun函式,這時第二次呼叫的fun函式在執行的過程中就會破壞第一次float暫存器中的結果,這樣當返回到第一次fun函式的時候,結果就不正確了。

可以把fun函式理解為printf()函式。

取下面這個URL

可以在js裡用window.location的屬性來取呀,比如下面這個url 在servlet裡可以用request的方法來取,還是上面的url request.getservername localhost request.getserverport 8099 request.getrequest...

下面這個程式很奇怪

今天學習包裝類的拆箱與裝箱時,發現下面這個奇怪的程式 快取下面這個程式很奇怪 public class test1 else 當兩個數都是100的時候 判斷相等,當兩個數都是200的時候判斷不相等。下面分析還沒搞明白。檢視內部實現 可知,integer類有乙個快取,它會快取 128 127之間的整數...

ASO中評論權重降低 從六個角度說完這個問題

無論aso人怎樣哀嚎評論的權重如何的在降低,都改變不了其是影響app排名的因素之一。而有的aso朋友卻認為,評論之途已盡,需重點從其它幾個維度來下功夫了。其實這種想brhbfimpe法是錯誤的,本人認為無論何時,評論的權重都會在app的排名演算法中佔據一席之地。一 什麼叫換評論 有點資源互換的意思,...