2012 年 10 月のよしだむメモ


[最近] [トップ]

2012 年 10 月の事

<< < 2012/10 > >>
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

2012-10-01 (Mon)

無為な一日

_ ビデオの消化とか。


2012-10-02 (Tue)

無為な一日

_ ビデオの消化とか。


2012-10-03 (Wed)

無為な一日

_ いまさら Turbo Pascal で DOS プログラミングとか。 インラインアセンブラで無理矢理 32 ビット命令を使ってみたり。

(*
 * CPU info
 * Copyright 2012 yoshidam
 *)
program cpuid_test;
 
type
  CPUInfo = array[0..3] of longint;
 
function
test_32bit: boolean; assembler;
asm
  pushf
  pop ax
  or ax, 0f000h
  push ax
  popf
  pushf
  pop ax
  and ax, 0f000h
  jz @no_32bit
  mov al, 1
  ret
@no_32bit:
  xor al, al
end;
 
function
test_cpuid: boolean; assembler;
asm
  db 66h; pushf                    { pushfd }
  db 66h; pop ax                   { pop eax }
  db 66h; mov bx, ax               { mov ebx, eax }
  db 66h; xor ax, 0; dw 0020h      { xor eax, 00200000h }
  db 66h; push ax                  { push eax }
  db 66h; popf                     { popfd }
  db 66h; pushf                    { pushfd }
  db 66h; pop ax                   { pop eax }
  db 66h; cmp ax, bx               { cmp eax, ebx }
  jz @no_cpuid
  mov al, 1
  ret
@no_cpuid:
  xor al, al
end;
 
procedure
cpuid(var info: CPUInfo; infoType: longint); assembler;
asm
  db 66h; xor cx, cx                { xor ecx, ecx }
  db 66h; mov ax, word ptr infoType { mov eax, dword ptr infoType }
  db 0fh, 0a2h                      { cpuid }
  les di, info
  db 66h; mov es:[di +  0], ax      { mov es:[esi +  0], eax }
  db 66h; mov es:[di +  4], bx      { mov es:[esi +  4], ebx }
  db 66h; mov es:[di +  8], cx      { mov es:[esi +  8], ecx }
  db 66h; mov es:[di + 12], dx      { mov es:[esi + 12], edx }
end;
 
(*
function
hex1(b: byte): string;
const
  HexDigit: array[0..15] of char = '0123456789ABCDEF';
begin
  hex1 := HexDigit[(b shr 4) and 15] + HexDigit[b and 15];
end;
 
function
hex_dump(val: longint): string;
begin
  hex_dump := hex1((val shr 24) and 255) + ' ' +
              hex1((val shr 16) and 255) + ' ' +
              hex1((val shr 8) and 255) + ' ' +
              hex1(val and 255);
end;
*)
 
function
to_str(val: longint): string;
begin
  to_str := chr(val and 255) +
            chr((val shr 8) and 255) +
            chr((val shr 16) and 255) +
            chr((val shr 24) and 255);
end;
 
const
  EDX: array[0..31] of string = (
      'FPU', 'VME', 'DE', 'PSE', 'TSC', 'MSR', 'PAE', 'MCE', 'CX8',
      'APIC', 'Reserved', 'SEP', 'MTRR', 'PGE', 'MCA', 'CMOV', 'PAT',
      'PSE-36', 'PSN', 'CLFSH', 'Reserved',
      'DS', 'ACPI', 'MMX', 'FXSR', 'SSE', 'SSE2',
      'SS', 'HTT', 'TM', 'Reserved', 'PBE'
  );
  ECX: array[0..31] of string = (
      'SSE3', 'PCLMULQDQ', 'DTES64', 'MONITOR', 'DS-CPL', 'VMX',
      'SMX', 'EIST', 'TM2', 'SSSE3', 'CNXT-ID', 'Reserved',
      'FMA', 'CX16', 'xTPR', 'PDCM', 'Reserved', 'PCID', 'DCA',
      'SSE4.1', 'SSE4.2', 'x2APIC', 'MOVBE', 'POPCNT', 'TSC-DEADLINE',
      'AES', 'XSAVE', 'OSXSAVE', 'AVX', 'F16C', 'RDRAND', 'Not Used'
  );
  ExtFlags: array[0..31] of string = (
      '(FPU)', '(VME)', '(DE)', '(PSE)', '(TSC)', '(MSR)', '(PAE)',
      '(MCE)', '(CMPXCHG8B)', '(APIC)', '', 'SYSCALL',
      '(MTRR)', '(PGE)', '(MCA)', '(CMOV)', '(PAT)', '(PSE36)', '',
      '', 'XD(NX)',
      '', '(MmxExt)', '(MMX)', '(FXSR)', '(FFXSR)', '1GBPages',
      'RDTSCP', '', 'Intel64(LM)',
      '(3DNowExt)', '(3DNow)'
  );
  ExtFlags_AMD: array[0..31] of string = (
      'LahfSahf', 'CmpLegacy', 'SVM', 'ExtApicSpace', 'AltMovCr8',
      'ABM', 'SSE4A', 'MisAlignSse',
      '3DNowPrefetch', 'OSVW', 'IBS', 'XOP', 'SKINIT', 'WDT', '',
      'LWP',
      'FMA4', '', '', 'NodeId', '', 'TBM', 'TopologyExtensions', '',
      '', '', '', '', '', '', '', ''
  );
 
var
  info: CPUInfo;
  vender: string;
  bland: string;
  std_largest: longint;
  ext_largest: longint;
  stepping, model, family, ptype, emodel, efamily: integer;
  i: integer;
 
begin
  if not test_32bit then
  begin
    writeln('32 bit instruction not supported.');
    Halt(1);
  end;
  if not test_cpuid then
  begin
    writeln('cpuid instruction not supported.');
    Halt(1);
  end;
 
  cpuid(info, 0);
  std_largest := info[0];
  vender := to_str(info[1]) + to_str(info[3]) + to_str(info[2]);
  writeln('Venter: ' + vender);
 
  cpuid(info, $80000000);
  ext_largest := info[0];
  if (ext_largest < 0) and (ext_largest > $80000004) then
  begin
    cpuid(info, $80000002);
    bland := to_str(info[0]) + to_str(info[1]) +
             to_str(info[2]) + to_str(info[3]);
    cpuid(info, $80000003);
    bland := bland +
             to_str(info[0]) + to_str(info[1]) +
             to_str(info[2]) + to_str(info[3]);
    cpuid(info, $80000004);
    bland := bland +
             to_str(info[0]) + to_str(info[1]) +
             to_str(info[2]) + to_str(info[3]);
    writeln('Bland: ' + bland);
  end;
  if std_largest < 1 then Halt(0);
 
  cpuid(info, 1);
  stepping := info[0] and 15;
  emodel := (info[0] shr 16) and 15;
  efamily := (info[0] shr 20) and 255;
  model := ((info[0] shr 4) and 15) + (emodel shl 4);
  family := ((info[0] shr 8) and 15) + efamily;
  ptype := (info[0] shr 12) and 3;
  write('CPU family: ');
  writeln(family);
  write('Model num: ');
  writeln(model);
  write('Stepping: ');
  writeln(stepping);
  for i := 0 to 31 do
  begin
    if (info[3] shr i) and 1 <> 0 then
    begin
      write(EDX[i]);
      write(' ')
    end;
  end;
  for i := 0 to 31 do
  begin
    if (info[2] shr i) and 1 <> 0 then
    begin
      write(ECX[i]);
      write(' ')
    end;
  end;
  if (ext_largest < 0) and (ext_largest >= $80000001) then
  begin
    cpuid(info, $80000001);
    for i := 0 to 31 do
    begin
      if (info[3] shr i) and 1 <> 0 then
      begin
        write(ExtFlags[i]);
        write(' ')
      end;
    end;
    if vender = 'AuthenticAMD' then
    begin
      for i := 0 to 31 do
      begin
        if (info[2] shr i) and 1 <> 0 then
        begin
          write(ExtFlags_AMD[i]);
          write(' ')
        end;
      end;
    end;
  end;
  writeln('');
end.

2012-10-04 (Thu)

無為な一日

_ ビデオの消化とか。


2012-10-05 (Fri)

無為な一日

_ ゲームとか。


2012-10-06 (Sat)

無為な一日

_ ビデオの消化とか。


2012-10-07 (Sun)

メールサーバログ解析

_ 9/30〜10/7 のメールサーバのログ解析。 spam 数は横ばい。

状態メール数
非受信ブロック(Spamassassin)254
隔離(ClamAV)0
切断48
一時的な失敗0
受信hamと判定ham86
false negative76
ham計162
spamと判定spam50
false positive0
spam計50
受信メール計212
514

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China50.99%
Korea, Republic of 5.92%
United States 4.28%
Indonesia 3.29%
Russian Federation 2.63%

2012-10-08 (Mon)

無為な一日

_ ビデオの消化とか。


2012-10-09 (Tue)

無為な一日

_ ビデオの消化とか。


2012-10-10 (Wed)

Windows Update

_ 今月の定例アップデート。 緊急 1 件,重要 6 件。

_ それ以外に Windows 8 と Windows Server 2012 のアップデートもあったので結構時間がかかった。


2012-10-11 (Thu)

無為な一日

_ 散歩とか。


2012-10-12 (Fri)

無為な一日

_ ゲームとか。


2012-10-13 (Sat)

無為な一日

_ ゲームとか。


2012-10-14 (Sun)

メールサーバログ解析

_ 10/7〜10/14 のメールサーバのログ解析。 spam 数は横ばい。

状態メール数
非受信ブロック(Spamassassin)256
隔離(ClamAV)0
切断36
一時的な失敗0
受信hamと判定ham50
false negative81
ham計131
spamと判定spam46
false positive0
spam計46
受信メール計177
469

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China44.37%
India 6.95%
Russian Federation 4.97%
Brazil 3.64%
United States 3.64%

2012-10-15 (Mon)

無為な一日

_ 散歩とか。


2012-10-16 (Tue)

無為な一日

_ 散歩とか。


2012-10-17 (Wed)

無為な一日

_ ビデオの消化とか。


2012-10-18 (Thu)

無為な一日

_ ゲームとか。


2012-10-19 (Fri)

新商品内覧会

_ ドコモの新商品内覧会に行ってきた。

_ スマートフォンには特に興味を引かれる機種はなかった。

_ iモード携帯の新機種はどれもあからさまに廉価版という感じ。 一世代か二世代前の機種の方が質感はいいかもしれない。 miniUIM になってしまうのも面倒だし, そろそろ買い替えるつもりだったけどどうするかな。


2012-10-20 (Sat)

無為な一日

_ ゲームとか。


2012-10-21 (Sun)

メールサーバログ解析

_ 10/14〜10/21 のメールサーバのログ解析。 spam 数はやや増加。

状態メール数
非受信ブロック(Spamassassin)381
隔離(ClamAV)6
切断30
一時的な失敗0
受信hamと判定ham73
false negative67
ham計140
spamと判定spam62
false positive0
spam計62
受信メール計202
619

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China44.92%
Brazil 5.64%
United States 4.74%
Korea, Republic of 4.51%
India 4.06%

2012-10-22 (Mon)

無為な一日

_ 散歩とか。


2012-10-23 (Tue)

無為な一日

_ ゲームとか。


2012-10-24 (Wed)

無為な一日

_ 散歩とか。


2012-10-25 (Thu)

無為な一日

_ ゲームとか。


2012-10-26 (Fri)

無為な一日

_ ゲームとか。


2012-10-27 (Sat)

Office 2013

_ Office 2013 RTM が公開されたようなのでインストールしてみた。 Visio 2013 の日本語版はまだかな。

_ ちょっと触ってみた感じではプレビュー版とほとんど変わらないな。 Office IME も入っていないみたいだ。

電池交換

_ 最近 Windows 95 機 の CMOS の情報が飛んで起動しなくなることが頻繁に起こるようになったので, リチウム電池を交換してみた。

_ 1997 年製なのでさすがに電池が切れてもおかしくないな。


2012-10-28 (Sun)

メールサーバログ解析

_ 10/21〜10/28 のメールサーバのログ解析。 spam 数はほぼ横ばい。

状態メール数
非受信ブロック(Spamassassin)420
隔離(ClamAV)0
切断33
一時的な失敗0
受信hamと判定ham122
false negative55
ham計177
spamと判定spam63
false positive0
spam計63
受信メール計240
693

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China32.51%
India10.77%
Vietnam 7.45%
Russian Federation 5.38%
Korea, Republic of 4.14%

2012-10-29 (Mon)

無為な一日

_ 散歩とか。


2012-10-30 (Tue)

無為な一日

_ 散歩とか。


2012-10-31 (Wed)

無為な一日

_ ゲームとか。


Ganerated by nDiary version 0.9.4/ym3
Yoshida Masato (yoshidam@yoshidam.net)