堆疊的設定
關於堆疊的設定,codewarrior提供了兩種方式:**「stacksize」命令方式和「stacktop」命令方式。這兩種方式在同乙個.prm檔案中,不能同時存在。**當使用者只關心堆疊的大小而不關心堆疊的存放位置時,推薦使用stacksize方式。 系統預設的方式為使用stacksize方式。
stacksize命令方式:
當使用stacksize命令方式時,如果在placement-end部分宣告了「sstack into ram」,這樣的話,堆疊區就被放在ram區域的起始部分,下面的例子說明了這種方式:
例5segments
„„ram = read_write data_near 0x2000 to 0x3fff;
„„end
placement
„„sstack, paged_ram, default_ram into ram;
„„end
stacksize 0x100
上面的例子將堆疊區域存放的位址為0x20ff-0x2000,初始的堆疊指標指向棧頂位址0x20ff。
分析:為什麼是0x20ff,因為0x2000加上0x100(可以看做0xff,因為起始位址就是終止位址相當於少乙個自己的理解)
相反,如果在placement-end部分沒有宣告「sstack into ram」,則堆疊被分配在ram區域中已分配空間的後面。請參見例6。
例6segments
„„ram = read_write data_near 0x2000 to 0x3fff;
„„end
placement
„„paged_ram, default_ram into ram;
„„end stacksize 0x100
在這個例子中,如果ram區域中已經分配的變數占用了4個位元組(從0x2000到0x2003)(每個位址存1個位元組的資料,所以四個位元組),則堆疊放在這四個位元組的後面,從0x2103到0x2004,初始的堆疊指標指向0x2103。
0x2103=0x2004+0x100(0xff)
stackyop命令方式: 當使用stacktop命令方式時,如果在placement-end部分宣告了「sstack into ram」,同樣,堆疊區就被放在ram區域的起始部分,初始的棧頂則由stacktop指定。若沒有相應的宣告,則初始的棧頂由stacktop指定,而堆疊的大小則根據處理器的不同由編譯器自行設定,其大小足夠裝下處理器的pc暫存器的值。
DDL的定義,對上文的補充
資料定義語言 資料定義語言 ddl 是 sql 的子集。它是用於描述資料庫中的資料及其關係的語言。您可以在指令碼中生成 ddl,供資料庫物件 保留資料庫結構的快照 設定乙個資料庫充當生產系統,但不包含資料的測試系統 為您可根據現有物件建立的新物件生成模板。例如,為 customer 表生成 ddl,...
關於堆疊的簡單分析
關於堆疊的簡單分析 片 public static void main string args private static void swap integer num1,integer num2 執行結果 before swap a 1,b 2 after swap a 1,b 2 大家會發現其中...
一次堆疊溢位的分析
在專案開發過程中,我會經常查一些引起程式崩潰的問題。就在前段時間,測試組反饋了乙個現象,當對某乙個功能進行拷機的過程中,大約進行了半個小時之後,程式就會引起崩潰,經過數次的重複測試,均出現了以上現象。經過對崩潰日誌的初步分析,我發現,雖然每次崩潰的地方一致,但通過閱讀原始碼,我發現那些地方一般是不會...