x86 — Ошибка профилирования со встроенным ассемблером в коде C ++

я нашел Эта статья на эффективность std::vector::push_back, связанный код можно найти Вот. Я попробовал это сам, и я получил illegal instruction (core dumped), GDB указывает на ошибку в строке 37.

Я скомпилировал с помощью gcc 4.7.2, на компьютере с:

$ sudo dmidecode -t processor
# dmidecode 2.11
SMBIOS 2.5 present.

Handle 0x0400, DMI type 4, 40 bytes
Processor Information
Socket Designation: CPU
Type: Central Processor
Family: Core 2 Duo
Manufacturer: Intel
ID: 7A 06 01 00 FF FB EB BF
Signature: Type 0, Family 6, Model 23, Stepping 10
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Not Specified
Voltage: 1.2 V
External Clock: 1333 MHz
Max Speed: 5200 MHz
Current Speed: 3000 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
L1 Cache Handle: 0x0700
L2 Cache Handle: 0x0701
L3 Cache Handle: Not Provided
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable

В чем здесь проблема? Как я могу заставить этот код работать? Я также пытался с ICPC 13.1.0, но это также не удалось.

Редактировать: Я использую Ubuntu 12.10 64-bit.

1

Решение

Ваш процессор не поддерживает RDTSCP инструкция. Это Core i7 инструкция, а ваш процессор более раннего поколения (Мер-L).

Вы должны быть в состоянии использовать RDTSC вместо. Смотрите, например, Разница между rdtscp, rdtsc: памятью и процессором / rdtsc?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]