秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
GetCPUID for lazarus(windows),兼容32/64位,直接上代码:
复制代码
unit GetCPUIDUnit;

{$mode objfpc}{$H+}
{$ASMMODE intel}

interface

uses
  Classes, SysUtils;

function GetCPUID:string;

implementation

function GetCPUID:string;
var
  _ecx,_edx,_eaX,_ebx:LongWord;
begin
  //执行CPUID指令,EAX=1/RAX=1
  asm
    {$IFDEF CPUX64}
    MOV RAX,1
    PUSH RCX
    PUSH RBX
    PUSH RDX
    {$ELSE}
    MOV EAX,1
    PUSH ECX
    PUSH EBX
    PUSH EDX
    {$ENDIF}
    cpuid //执行cPUID指令
    mOV _eaX,eaX
    mOV _ebx,ebx
    mOV _ecX,ecX
    mov _edx,edx
    {$IFDEF CPUX64}
    POP RDX
    POP RBX
    POP RCX
    {$ELSE}
    POP EDX
    POP EBX
    POP ECX
    {$ENDIF}
  end;
  //将寄存器值转换为十六进制字符串
  Result := IntToHex(_eax,8)+IntToHex(_ecx,8)+IntToHex(_edx,8);
end;

end.
复制代码

 

posted on   秋·风  阅读(141)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2023-01-06 lazarus 使用unidac取mssql低版本(2000)数据时中文出现乱码的解决办法(2024-3-1更新:本方法也适用于mssql 2014等varchar字段中文乱码)
点击右上角即可分享
微信分享提示