1

ここから、このコードを機能させようとしています

    char *mem = (unsigned char *) 0xF0000;
    int length, i;
    unsigned char checksum;
    while ((unsigned int) mem < 0x100000) {
        if (mem[0] == '_' && mem[1] == 'S' && mem[2] == 'M' && mem[3] == '_') {
            length = mem[5];
            checksum = 0;
            for(i = 0; i < length; i++) {
                checksum += mem[i];
            }
            if(checksum == 0) break;
        }
        mem += 16;
}

cant init char* with unsigned char* など、いくつかの型エラーがあります。

char *最初の行をunsigned char *intに置き換えようとすると、[] 表記を使用できmemcmpません。このコードでどのように使用できますか?

4

2 に答える 2

2

最初の行で にキャストしてunsigned char*いますが、 に代入してみてくださいchar*char*直接キャストしないのはなぜですか?

マルチタスク オペレーティング システムでは、ハードコードされたメモリ ロケーションにアクセスするだけでプログラムがクラッシュするため、組み込みシステム コードで作業していると想定しています。

于 2011-08-31T11:37:49.333 に答える
0

EFI マシンで smbios エントリ ポイント構造アドレスを見つける方法が正しくないため、コードは機能しませんでした。

于 2011-09-01T12:13:49.840 に答える