Подскажите чем править CPUCODE?

Вроде хорошо, а найти не могу. Вобщемто я и вычленить сам NCPUCODE.bin не могу:( (cbrom32 v1.82), но с этим ладно - я вродебы нашел как ручками вырезать (нужный кусок нашел), но вот чем (или как) его смотреть?
Вобщем нужно вырезать оттуда несколько "лишних" процев, (с целью уменьшения обьема модуля)... по НЕХ коду так и не понял где чей микрокод (блоки 2кб вижу, а где какой чей не пойму). На какие байты смотреть?
ЗЫ если чтото не то ляпнул, не сердитесь - я ламер, БИОСы еще не ковырял, только учусь roll

Рекомендуется к прочтению IA-32 Intel® Architecture Software Developer’s Manual Volume 3: System Programming Guide, там структура блока микрокодов достаточно понятно расписана.

Аватар пользователя RomanLV

ОК, спасибо. Разбираться дальше правда стало лень, вырезал наугад половину кодов - работает (с моим процем по краенй мере, без ругани). Но информация пригодится на абудущее - сейчас время и вдохновение кончилось:(
PS если кому нужен БИОС для ABIT IP35-E "512k эдишин" - обращайтесь;)

Сильно не пинайте, написал тут неболшую программку по поводу микрокодов _http://mehfk.narod.ru/cpucode/cpucode.html.
ncpucode извлекал руками, благо, они в сыром виде легко находятся.

marinovsoft
по вашей ссылке не открывает mehk.narod.ru/cpucode/cpu_codev2.rar

Ссори, ошибка на странице была.
вот правильная ссылка mehfk.narod.ru/cpucode/cpu_codev2.rar
Bobr, +1

marinovsoft,

Цитата:
Все микрокоды имеют размер 2048 байт, из которых 48 байт представляют заголовок файла, а оставшиеся 2000 байт – непосредственно обновляемый микрокод.

Это не верно! Из IA-32 Intel® Architecture Software Developer’s Manual Volume 3: System Programming Guide раздел 9.11 MICROCODE UPDATE FACILITIES:
поле DataSize -
Цитата:
Specifies the size of the encrypted data in bytes, and must be a multiple of DWORDs. If this value is 00000000H, then the microcode update encrypted data is 2000 bytes (or 500 DWORDs).

На практике следующее, если DataSize = 0, то размер блока с микрокодом 2000 bytes, в противном случае = DataSize.
А ещё интересный момент заключается в том, что за блоком микрокода встречаются нули, о чем свидетельствует разница TotalSize - DataSize (обычно 400h, в моём случае ещё 8 нулей в конце модуля).
Кстати у меня AMI BIOS от P5Q3.

Модуль этот для AMI можно получить при помощи MMTool, ID = 11 - P6 Micro Code.
Мой скрипт для IDA, для структурирования:

#include <idc.idc>
/*
Анализ 11 модуля Microcode Update
*/

static main(void) 
{
	auto index, lSegEnd, idStruct, offDataSize, offTotalSize, DataSize, TotalSize, USize;
	
	lSegEnd = SegEnd(100) - 1;
	
	MakeUnknown(0, lSegEnd, 0);
	MakeUnknown(0, lSegEnd, 1);
	MakeUnknown(0, lSegEnd, 2);
	
	index = 0;
	
	CheckStructure();
	
	idStruct = GetStrucIdByName("microcodeHeader");
	offDataSize = GetMemberOffset(idStruct, "DataSize");
	offTotalSize = GetMemberOffset(idStruct, "TotalSize");
	
	while(index < lSegEnd) 
	{
		if (Dword(index) == 0) 
		{
			MakeArray(index, 1024);
			index = index + 1024;
		}
		MakeStructEx(index, -1, "microcodeHeader");
		
		DataSize = long(Dword(index + offDataSize));
		TotalSize = long(Dword(index + offTotalSize));
		
		Message("> index=0x%04X | DSize=%d | TSize=%d | \n", index, DataSize, TotalSize);
		
		MakeQword(index + 48);
		
		if (DataSize == 0) DataSize = 2000;
		
		MakeArray(index + 48, DataSize / 8);
		
		index = ItemEnd(index + 48);
	}
	
	return;
}

//Добавляем структуру для дальнейшего использования
static CheckStructure()
{
	if (GetStrucIdByName("microcodeHeader") == BADADDR)
	{
		auto sMicrocodeHeader;

		AddStrucEx(BADADDR, "microcodeHeader", 0); //BADADDR = -1 добавить структуру в конец списка структур.

		sMicrocodeHeader = GetStrucIdByName("microcodeHeader");

		AddStrucMember(sMicrocodeHeader, "HeaderVer", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "UpdRev", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "Date", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "ProcSign", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "CRC", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "LoaderRev", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "ProcFlags", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "DataSize", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "TotalSize", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "Reserved0", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "Reserved1", -1, FF_DWRD, -1, 4);
		AddStrucMember(sMicrocodeHeader, "Reserved2", -1, FF_DWRD, -1, 4);
	}
}

Если есть замечания с удовольствием выслушаю.

binaryshadow, я понимаю что не читать статьи до конца это круто. Но уж исходники то можно было посмотреть... А вы статейку дочитайте уж до конца, сделайте милость.


Type
   cpucode = record
      formatver1 : dword;     { Номер версии формата 1 }
      cpuid1     : byte;
      cpuid2     : byte;
      cpuid3     : byte;
      cpuid4     : byte;
      year       : word;      { Год в формaте BCD }
      day        : byte;      { День в формaте BCD }
      Month      : byte;      { Месяц в формате BCD }
      _cpuid     : word;      { CPUID процессора }
      reserved1  : word;      { Не используется - заполнено нулями }
      _crc       : dword;     { Возможно контрольная сумма }
      formatver2 : dword;     { Номер версии формата 2 }
      pkg        : dword;     { PKG (Package) процессора }
      fsize2     : dword;     { Размер микрокода без заголовка }
                              { если равно нулю, то fsize=2000 }
      reserved3  : array[1..16] of byte;
                          { Не используется - заполнено нулями }
                          { в "новом" формате используется,    }
                          { формат не ясен                     }
      microcode  : array[$31..$400] of byte;
   end;                   { Блоки кратны 1024 байт(ам)         }

marinovsoft, прошу прощения, не внятно читал. =)

Да, что там, у самого бывает.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей