GDB 在操作 SSE2 寄存器时报告EXC_BAD_ACCESS
GDB is reporting EXC_BAD_ACCESS, when manipulating SSE2 registers
所以我正在尝试编写一个AESNI库。当我使用符号编译程序并在 GDB 中运行它时。我收到以下错误:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
代码:(g++ -g aesni.c -o aesni; gdb aesni)
int main (int argc, const char *argv[])
{
// Nr = 10 (128bit), 12 (192bit), 14 (256bit)
__attribute__((aligned (16))) unsigned char Key128bit[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, 0x00 };
__attribute__((aligned (16))) unsigned char Key192bit[] = { 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b, 0x00 };
__attribute__((aligned (16))) unsigned char Key256bit[] = { 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4, 0x00 };
char Nr = 10; // 128bit / 12 for 192bit / 14 for 256bit
//__m128i *KeySchedule = new __m128i[Nr+1];
__m128i *KeySchedule = (__m128i*)(Nr+1);
switch(Nr+1)
{
case 11:
KeySchedule[0] = _mm_load_si128((__m128i*)Key128bit);
break;
case 13:
break;
case 15:
break;
}
}
所以我在第 33 行设置了断点。
该程序编译没有错误,但是当我尝试在GDB中逐步执行时,它卡住了。
更改:
__m128i *KeySchedule = (__m128i*)(Nr+1); // this declaration is completely broken
自:
__m128i KeySchedule[Nr+1]; // allocate array of (Nr+1) x __m128i
KeySchedule
指向的地址是 11,这是一个无效的地址,稍后用于存储 SSE 加载的结果。. 字符 Nr = 10; __m128i *键时间表 = (__m128i*)(Nr+1);
相关文章:
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 为什么 GetSystemMetrics (SM_CXVIRTUALSCREEN) 返回'bad'值?
- 将 lambda 传递给 STL 集时出错"bad function call"
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 使用 #define 被认为是"bad practice"吗?
- "400 Bad request"使用 OpenSSL BIO 进行请求时
- 解密文件AES_256_CBC返回"bad decrypt"错误
- 在C++流中,eof(),fail(),bad()和good()有什么区别
- make / gcc:"bad build"的可能原因是什么?
- 什么是地址0xbaddc0dedeadbead "Bad decode dead bead"
- 在多线程环境中,什么可能导致"bad file descriptor"?
- "std::vector"在调整大小时引发"bad allocation"异常
- 尝试使用 execp、dup2 和管道实现 shell,挂起或"bad file descriptor"
- OpenCV SVM 在火车上抛出异常,"Bad argument (There is only a single class)"
- 成员函数 bad() 的 std::ftsream 用于检查
- 使用 boost::asio 和 boost::thread 时"Bad file descriptor"
- OpenCV C++神经网络 predict() 函数抛出"Bad argument"错误