看板 ask-why 關於我們 聯絡資訊
: 推 cpt:就依序把RAM每個位址存一個bit 再讀取 就能偵錯啦 : 推 jphant:可以解釋一下怎麼寫一個可以從RAM第一個bit存取到最後一個 : → jphant:bit的應用程式麼? 我很好奇要怎麼寫 : 推 gamer:用c就可以寫了,每個記憶體位址都有一個號碼比方說000000x0 : → gamer:然後你可以宣告每一個記憶體位址為一個數字,直到把所有位址 : → gamer:都宣告完。 一般用 C 寫的 application 應該是沒辦法,因為 OS 會作 virtual memory , 所以實際上會對應到哪些 physical memory 是要看 page allocation 的結果。 通常記憶體會有某些部份保留給 OS ,這部份是測不到的。 所以多數 memtest 的軟體都得要用它自己開機才行,這樣才能直接存取記憶體。 : 推 ot32em:for(i=0;i<memSize;i++){if(!ReadWriteOk(i))return gg;} -- 我實實在在的告訴你們,一粒麥子不落在地裡死了, 仍舊是一粒,若是死了,就結出許多子粒來。 約翰福音 12:24 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84
HuangJC:C under OS 是不行;但 C 本身倒不會不行,要換 compiler.. 11/14 01:31
jphant:我也是這樣想所以才會問要怎麼去寫這個程式... 11/14 02:40
jphant:要換成甚麼compiler才可以直接access RAM的物理位置? 11/14 02:42
HuangJC:下一篇有提到,OS cache 你可以避過但 H/W cache 卻不好避 11/14 02:48
HuangJC:所以不只換 Compiler,還得懂硬體配置;那已經相當於寫組合 11/14 02:48
HuangJC:語言了;用 C 不會省你多少事 11/14 02:51
jphant:所以如果是這樣說 像樓上po的那些用C寫一個迴圈去一個bit 11/14 05:13
jphant:一個bit去跑的solution 還算是solution麼? 11/14 05:14
HuangJC:凡是有多環結的事(不單指寫程式),你都得考量要不要再深入 11/14 10:51
HuangJC:了解內部環結.你想做的不是數理邏輯,而是干涉硬體,最糟狀 11/14 10:52
HuangJC:況你連電子學都要懂一些咧.. 11/14 10:52
HuangJC:每一個環結出錯都可以導致錯誤,所以用C寫 bit test 可以通 11/14 11:01
HuangJC:過一個環結;但那畢竟不是關鍵.你也知道關鍵是直接物理位址 11/14 11:03
HuangJC:存取.那你要看通多少硬體關聯? 11/14 11:04