2012-01-25 1 views
0

내가 암호화 ++의 ZLIB 기능을 사용하게하는 프로그램에 Valgrind의와 이상한 오류가 점점 오전 :Valgrind의 : 중단 암호화 ++ ZLIB 테스트

vex x86->IR: unhandled instruction bytes: 0xC5 0xF9 0x6E 0x45 
==8605== valgrind: Unrecognised instruction at address 0x814c88b. 
==8605== at 0x814C88B: CryptoPP::ByteQueue::TransferTo2(CryptoPP::BufferedTransformation&, unsigned long long&, std::string const&, bool) (misc.h:189) 
==8605== by 0x814C3E6: CryptoPP::ByteQueue::Get(unsigned char*, unsigned int) (cryptlib.h:901) 
==8605== by 0x815DAAE: CryptoPP::ZlibDecompressor::ProcessPoststreamTail() (zlib.cpp:84) 
==8605== by 0x815B6EC: CryptoPP::Inflator::ProcessInput(bool) (zinflate.cpp:349) 
==8605== by 0x815BC25: CryptoPP::Inflator::Put2(unsigned char const*, unsigned int, int, bool) (zinflate.cpp:295) 
==8605== by 0x805E40C: CryptoPP::BufferedTransformation::Put(unsigned char const*, unsigned int, bool) (cryptlib.h:789) 

알아요 암호화는 ++ 속도를 특정 지역에 약간의 손으로 코딩 어셈블리를 사용하는 나는 0xC5로 시작하는 명령어가 컴파일 된 코드에 존재하지 않는다는 것을 읽었습니다. 이것이 손으로 코딩 된 어셈블리의 어셈블리 명령 때문일 수 있습니까? 그렇다면 valgrind를 통해이 검사를 비활성화하여 프로그램을 계속 테스트 할 수 있습니까?

답변

1

이것은 AVX 명령입니다. Valgrind does not currently support AVX instructions이지만 AVX 지원이 개발 중입니다. valgrind는 각 명령어를 에뮬레이션하여 작동하기 때문에 실제 명령어로 바로 이동하기를 원하지 않는 한 우회 할 수있는 검사가 아니라 나머지 실행을 위해 valgrind를 모두 비활성화 할 수 있습니다.

+0

설명해 주셔서 감사합니다. 나는 지금 다른 라이브러리를 사용함으로써 그것을 피했습니다. – Ben