作者liptonbin (CATWILLFLY)
看板C_and_CPP
标题[问题] 请问记忆体测试
时间Tue Jul 14 00:55:38 2009
请问一下
我要测试实体记忆体 不知道这样写法观念是否正确
main()
{
int pattern=0xAAAAAAAA;
int* pDest = 0x100;
int* pEnd = 0x30000;
//写VALUE进去
do{
*pDest = pattern;
} while (++pDest < pEnd);
pDest =0x100;
//看看读出来对不对
do{
if(*pDest != pattern)
break;
} while (++pDest < pEnd);
}
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.241.21
1F:→ james732:首先会遇到的应该是保护模式问题吧…? 07/14 00:57
2F:推 QQ29:int* pDest = 0x100;会过嘛? 要转个型吧 07/14 01:02
3F:→ liptonbin:转什麽型? 07/14 01:47
4F:推 giveatry:我猜*pDest = pattern这行就会死了吧 07/14 02:00
5F:推 VictorTom:在保护模式的Windows下应该就等着报error了没错.... 07/14 02:24
6F:→ VictorTom:不过真实模式, 甚至是其他device的话应该能work吧?? 07/14 02:25
7F:→ VictorTom:话说, 这种用途加volatile关键字会不会比较好呢@_@" 07/14 02:27
8F:推 QQ29:int *pDest=(int*)0x100;不过下面对他dereference应该就gg了 07/14 07:34
9F:推 Ebergies:加个 volatile 比较安全些 07/14 09:57
10F:推 ledia:加个 volatile 只是不 optimize, 跟安全无关吧 07/14 11:02
11F:推 Ebergies:因为它目的要测试记忆体, optimize 掉就达不到效果了 07/14 11:03
12F:推 ledia:我的意思是, 加不加 volatile 都无法解决根本的 access 07/14 11:24
13F:→ ledia:violation 的问题啦~ 07/14 11:24
14F:→ ledia:另外, 把资料写进 memory 有什麽被 optimize 掉的风险吗? XD 07/14 11:25
15F:→ ledia:他可还有读出来呢~ 07/14 11:26
16F:推 Ebergies:哈哈原来如此, 因为预期他在 real mode... lol 07/14 11:26
17F:→ Ebergies:只要在外部不可见的都可能被 optimize 07/14 11:28
18F:→ Ebergies:内部读出来并没有可见的使用, 就有风险 07/14 11:28
19F:→ Ebergies:但刚实测了一下, 还是会写 07/14 11:29
20F:推 QQ29:请问楼上 怎麽让他不会 违规存取呢? 我用VC写都会error... 07/14 11:33
21F:→ QQ29:另外也想问 E大所谓的外部不可见 和内部 所描述的是甚麽意思 07/14 11:36
22F:推 Ebergies:1. 真实模式 2. 函数内外 07/14 14:07
23F:推 VictorTom:对记忆体单纯写入後读出的动作, 有可能直接被opt为暂存 07/14 19:12
24F:→ VictorTom:在reg或是直接从cache拿, 用volatile则保证memory的r/w 07/14 19:12
25F:推 VictorTom:一定要确实去做; 只是因为原po的case记忆体r/w的范围也 07/14 19:14
26F:→ VictorTom:不小, 所以遇上被reg cache起来的机会比较低一些.... 07/14 19:15
27F:→ VictorTom:第二推有点错, 应该跟cache无关, 而是直接省略mem的r/w 07/14 19:16
28F:→ VictorTom:只用reg这样; 至於mem access violation的问题, 就看 07/14 19:16
29F:→ VictorTom:原po要怎麽处理real mode的问题, 小弟也好奇想要学习XD 07/14 19:17
30F:推 QQ29:请问什麽是real mode啊? 07/15 01:13
31F:→ Celios:Windows下没机会测到真正记忆 测到的都是OS定给你的 OS还会 07/16 22:01
32F:→ Celios:再转换 还有很多记忆体位置 OS是做很多其他事的 不可能让你 07/16 22:02
33F:→ Celios:乱搞 要测真正记忆体每个BIT要去DOS下 或是BIOS才有可能 07/16 22:04
34F:→ Celios:要能windows下测 除非你真的很知道微软OS搞啥把戏 还有知道 07/16 22:29
35F:→ Celios:别人不知道的方法 免钱MSDN不用查 查不到的 要钱的MSDN还不 07/16 22:31
36F:→ Celios:一定有方法 07/16 22:32
37F:推 UNARYvvv:Win在过去可以透过 \Device\PhysicalMemory 读写实体记忆 07/17 01:19
38F:→ UNARYvvv:很旧的技术了 07/17 01:20