原创 gcc針對部分代碼取消編譯優化

爲了提高編譯和運行速度,或者爲了減少代碼段大小,我們常常需要使用編譯優化。 默認是-O0, 我們可以修改爲-O1, -O2,-Os,-O3等。 但是編譯優化有時候並不一定優化到最佳的效果,或者優化的結果需要某些支持才能正確執行。

原创 從編譯原理的角度看C語言是如何轉換成彙編語言的?

  大家都知道計算機只能處理和識別二進制指令,而我們利用各種高級編程語言所編寫的程序,要經過一些列的處理步驟,最終轉變爲彙編指令,再最後轉變爲機器指令。     以上這些轉變是如何發生的就屬於大名鼎鼎的“編譯原理”所研究的範疇,作爲計算

原创 python中的三個單引號

Python中的三個單引號表示多行註釋,相當於C語言的 /* xxxxxx */ 在Python中,使用三個單引號進行多行註釋,比如: ''' 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 '

原创 RISC-V 使能、禁止、恢復全局中斷

RISC-V的全局中斷標誌是在mstatus的MIE字段中。所以對全局中斷進行操作時,配置MIE字段即可。 禁止中斷 #define disable_irq() do {asm volatile ("csrr mstatus,

原创 RISC-V 不定長的指令週期

現代CPU由於存在多級流水線,對於分支處理又存在分支預測功能,因此在實際cpu的運行過程中,beq指令的週期不是固定的。 另外,即使對於其他指令,比如lw指令,其指令週期也不是固定的。取決於該指令跟後面的指令有沒有依賴關係。 使用