我编辑了1.c如下.
#include<stdio.h>
int x=100;
int main(void)
{
printf("%p",&x);
while(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我打开命令提示符并运行该程序并在程序仍在运行时获得输出00402000.现在我运行2.c.
#include<stdio.h>
int main(void)
{
int *p=(int *)0x00402000;
printf("%d",*p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在命令提示符的另一个实例中得到输出-1,我期望100位于00402000的位置.请解释为什么会出现这种情况?
下面是以下C代码的反汇编:
268: while (Counter < 250)
269: {
270: Counter++;
271: }
Run Code Online (Sandbox Code Playgroud)
拆卸:
268: while (Counter < 250)
001B08 370003 BRA 0x1B10
001B10 90406E MOV.B [W14+6], W0
001B12 404FE7 ADD.B W0, #0x7, [W15]
001B14 36FFFA BRA LEU, 0x1B0A
269: {
270: Counter++;
001B0A 90406E MOV.B [W14+6], W0
001B0C E84000 INC.B W0, W0
001B0E 984760 MOV.B W0, [W14+6]
271: }
272:
273: // call foo
274: foo(LAT, 4, Set, &Code);
001B16 203F20 MOV #0x3F2, W0
001B18 40000E ADD W0, W14, W0 …Run Code Online (Sandbox Code Playgroud) 我正在使用英特尔酷睿2双核CPU和Windows 7操作系统.我听说每个设备都映射到内存中,如果是这样,我如何获得连接到我系统的键盘地址?我的目的是将键盘输入读入一个volatile变量.那可能吗 ?