通过访问禁止的内存位置注入内存异常
Inject a memory exception by accessing forbidden memory location
我想测试我为嵌入式系统编写的异常处理函数,并想编写一个测试代码来注入对禁止访问的内存的访问。
void Test_Mem_exception
{
__asm(
"LDR R0, =0xA0100000\n\t"
"MOV R1, 0x77777777\n\t"
"STR R1, [R0,#0]"
);
这是我要在 0xA010000 写入访问内存位置的代码。不知何故,这对我来说似乎不是一个通用的测试代码。
有没有标准的方法可以用 C 或 C++ 编写此类测试代码。我所说的通用是指独立于它运行的系统的内存映射的代码。
我不会为此使用 asm
,只需使用指针即可。
void Test_Mem_exception
{
/* volatile, to suppress optimizing/removing the read statement */
volatile int *ptr = 0xC0C0C0C0;
int value = *ptr;
}
这不会总是导致异常,因为从地址 0 读取在某些系统上可能有效。
这同样适用于任何其他地址,不存在任何在所有系统上都会失败的地址。
我想测试我为嵌入式系统编写的异常处理函数,并想编写一个测试代码来注入对禁止访问的内存的访问。
void Test_Mem_exception
{
__asm(
"LDR R0, =0xA0100000\n\t"
"MOV R1, 0x77777777\n\t"
"STR R1, [R0,#0]"
);
这是我要在 0xA010000 写入访问内存位置的代码。不知何故,这对我来说似乎不是一个通用的测试代码。
有没有标准的方法可以用 C 或 C++ 编写此类测试代码。我所说的通用是指独立于它运行的系统的内存映射的代码。
我不会为此使用 asm
,只需使用指针即可。
void Test_Mem_exception
{
/* volatile, to suppress optimizing/removing the read statement */
volatile int *ptr = 0xC0C0C0C0;
int value = *ptr;
}
这不会总是导致异常,因为从地址 0 读取在某些系统上可能有效。
这同样适用于任何其他地址,不存在任何在所有系统上都会失败的地址。