Отказ сегментации блока

Это работает на управление Studio SQL Server также.

5
задан 30 November 2009 в 04:07
поделиться

3 ответа

Вызывается ли инициализация библиотеки времени выполнения C? Это должно быть выполнено первым для настройки stdout. Кстати, трассировка стека устранила бы сомнения относительно причины проблемы.

Кроме того, предотвратите переполнение буфера при преобразовании% s на% .12s или просто поместите нулевой байт после буфера.

4
ответ дан 14 December 2019 в 13:38
поделиться

не знаком с ассемблером, поэтому снимок в темноте: обе ваши строки имеют нулевое завершение?

0
ответ дан 14 December 2019 в 13:38
поделиться

You need to null-terminate the string you write into $buffer, rather than write on top of one word three times. Also, wallyk is right: are you sure that the CRT is being initialized?

Honestly, you are really much better off writing this program, which calls a C library function, in C. Write the CPUID code as inline assembly inside a __cdecl function, have it write its result to a string pointer, and then call that function from a C program.

void GetCPUID( char *toStr )
{
 // inline assembly left as exercise for the reader.. 
 // write ebx to *toStr, ecx to *toStr+4, edx to *toStr+8, and 0 to *toStr+12
}

void PrintCPUID()
{
   char cpuidstr[16];
   GetCPUID( cpuidstr );
   printf( "cpuid: %s\n", cpuidstr );

}
0
ответ дан 14 December 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: