您的位置:

颗粒识别c语言,c语言人脸识别

本文目录一览:

如何用C语言编写探测cpu的程序

参考下面的文章:

利用利用CPUID 汇编指令(机器码:0FH A2H, 如果你的编译器不支持CPUID 指令,只有emit 机器码了), 该指令可以被如下CPU识别:

Intel 486 以上的CPU,

Cyrix M1 以上的CPU,

AMD Am486 以上的CPU

(1) 取CPU OEM 字符串, 判断CPU 厂商

先让EAX=0, 再调用CPUID

Inel的CPU将返回:

EBX:756E6547H 'Genu'

EDX:49656E69H 'ineI'

ECX:6C65746EH 'ntel'

EBX,EDX,ECX 将连成"GenuineIntel", 真正的Intel。

Cyrix 的CPU 将返回:

EBX:43797269H

EDX:78496E73H

ECX:74656164H

"CyrixInstead","Cyrix 来代替"。

AMD 的CPU 将返回:

EBX:41757468H

EDX:656E7469H

ECX:63414D44H

"AuthenticAMD", 可信的AMD。

在Windows98中,用右键单击"我的电脑",选择" 属性- 常规"在计算机描述 处就可看见CPU OEM 字符串。

(2)CPU 到底是几86, 是否支持MMX

先让EAX=1,再调用CPUID

EAX的8到11位就表明是几86

3 - 386

4 - i486

5 - Pentium

6 - Pentium Pro Pentium II

2 - Dual Processors

EDX 的第0位:有无FPU

EDX的第23位:CPU是否支持IA MMX,很重要啊 !如果你想用那57条新增的指 令,先检查这一位吧,否则就等着看Windows 的"该程序执行了非法指令,将被关 闭" 吧。

(3) 专门检测是否P6架构

先让EAX=1,再调用CPUID

如果AL=1,就是Pentium Pro 或Pentium II

(4) 专门检测AMD的CPU信息

先让EAX=80000001H,再调用CPUID

如果EAX=51H, 是AMD K5

如 果EAX=66H, 是K6

EDX第0 位: 是否有FPU( 多余的 !谁用过没FPU的K5,K6?)

EDX 第23 位,CPU是否支持MMX,

程序如下:

//------CPUID Instruction Demo Program------------

#include

#include

#pragma hdrstop

//------------------------------------------------

#pragma inline

#pragma argsused

int main(int argc, char **argv)

{

char OEMString[13];

int iEAXValue,iEBXValue,iECXValue,iEDXValue;

_asm {

mov eax,0

cpuid

mov DWORD PTR OEMString,ebx

mov DWORD PTR OEMString+4,edx

mov DWORD PTR OEMString+8,ecx

mov BYTE PTR OEMString+12,0

}

cout "This CPU 's OEM String is:" OEMString endl;

_asm {

mov eax,1

cpuid

mov iEAXValue,eax

mov iEBXValue,ebx

mov iECXValue,ecx

mov iEDXValue,edx

}

if(iEDXValue0x800000)

cout "This is MMX CPU" endl;

else

cout "None MMX Support." endl;

int iCPUFamily=(0xf00 iEAXValue) 8;

cout "CPU Family is:" iCPUFamily endl;

_asm{

mov eax,2

CPUID

}

if(_AL==1)

cout "Pentium Pro or Pentium II Found";

getch();

return 0;

}

最后,最好学会自己去搜索你需要的信息,

我上面的答案也是搜索来的。

关键字“C语言 CPU 信息”

c语言怎么做?

int a = b[0][0];

for(int i = 0;i3;i++)

    for(int j=0;j4;j++)

    {

        if(a  b[i][j])

            a = b[i][j];

     }

芯片解密后可以得到C语言程序么?

不可能得到。

就算解密,得到的也是编译后的二进制文件。

源代码是不可能得到的,也是没法修改的。

C语言进阶04-预防、检测及消除bug

01

开发软件不等于编码

写程序时会有"编码--测试--调试"的习惯.很不幸,这是开发软件的错误方法.专业的程序员会使用策略来预防、检测及消除软件bug.编码不是在开发软件.编码的意思是在文本编辑器中输入语句.编码只是开发软件的小部分.开发软件需要编程前、编程中、编程后的许多步骤.下面分着讲解.

02

编程前

1、了解需求.

2、考虑可能的输入和期望的输出.

3、识别出有效但非期望的输入和正确的输出.这是对于开发可靠的软件而言是一个关键点.

4、识别出无效输入并找到检测它们的方法.要注意即使输入无效的数据时,程序也不能奔溃.

5、想出解决办法,并记录.

6、设计程序,可以节省大量的时间.

03

编程中

1、若想正确且更快的完成程序, 就写更多的代码.为了满足一个要求而把代码放到一个更大的程序之前,写一个小程序来测试你的解决方案.即单元测试.

2、使用自动缩进的文本编辑器可以帮你检查代码是否对齐,可以节省宝贵的时间.

3、在运行之前一行一行的读代码.可以帮你找到通过测试很难发现的问题.

4、自己想一些测试例子. 若自己不知道自己写的代码,则计算机也不知道.

5、尽量使用函数来重构代码,避免复制代码.

6、要用版本控制系统(这不是废话吗).

7、编译时,警告信息也不要放过.

04

编程后

不要依赖测试,测试只会告诉你程序没有正常工作,不会告诉你程序真的在正常运行.很可能测试用例没有涵盖所有可能的方案.通过测试用例涵盖所有可能的方案是很困难的.

05

常见错误

未初始化变量: 一些人认为所有的变量都会自动初始化为0,C语言中不会初始化.通过测试很难测试出来.

错误数据类型: 需要理解并正确地使用类型,编程语言的趋势是让数据类型更有限制性,防止犯意外的错误.

06

后执行式和交互式调试

调试一个程序分为几个阶段, 举个列子:

1、从一个文件中读取一些整数;

2、把整数排序;

3、把排好序的整数存到另一个文件中;

单元测试: 在上面三部整合之前测试每一部分叫作单元测试.

对于单元测试,经常需要写一些额外的代码,作为单独部分的"驱动".调试可能是交互式或后执行式的.若程序会花费几个小时,你就不会想要用交互式来调试这个程序了.相反,你会想要程序打印出调试信息,即日志.

对交互式调试而言打印调试信息存在多个问题:

1、需要插入代码来打印调试信息.多数情况下,调试信息必须在随后被移除,因为此信息不应该出现在最终的代码和它的输出中.

2、如果有很少的信息,那么就会缺少足够的信息帮助你判断哪里错了.

3、如果信息太多,可以忽略不相关的信息,获得好信息是很困难的.

4、最糟糕的是,问题可能会出现在意想不到的地方,而那里却并未插入调试信息.结果就是添加越来越多的调试信息.这是很耗时的.

07

生产代码与测试代码分离

自己应该能检测出自身bug的程序.编写程序之前就应该考虑编写测试代码.这是普遍的做法,这个称为 测试驱动的开发. 开发的时候需要将测试代码和开发代码分开,这样可以随意删除测试代码.

内存的颗粒识别,详解

您好,现在内存颗粒主要有以下厂家的产品:

samsung(三星),elpida(尔必达),hynix,(现代)nanya,(蓝牙)infineon,(英飞凌)

在内存颗粒上都会有用激光蚀刻上去的相应的logo,您可以看得到,具体各个厂家的产品编码序列号的意思可以参考下面的内容:

DDR SDRAM:

HYNIX DDR SDRAM颗粒编号:

HY XX X XX XX X X X X X X X - XX X

1 2 3 4 5 6 7 8 9 10 11 12 - 13 14

整个DDR

SDRAM颗粒的编号,一共是由14组数字或字母组成,他们分别代表内存的一个重要

参数,了解了他们,就等于了解了现代内存。

颗粒编号解释如下:

1. HY是HYNIX的简称,代表着该颗粒是现代制造的产品。

2. 内存芯片类型:(5D=DDR SDRAM)

3. 处理工艺及供电:(V:VDD=3.3V VDDQ=2.5V;U:VDD=2.5V

VDDQ=2.5V;W:VDD=2.5V VDDQ=1.8V;S:VDD=1.8V VDDQ=1.8V)

4. 芯片容量密度和刷新速度:(64:64M 4K刷新;66:64M 2K刷新;28:128M

4K刷新;56:256M

8K刷新;57:256M 4K刷新;12:512M 8K刷新;1G:1G 8K刷新)

5. 内存条芯片结构:(4=4颗芯片;8=8颗芯片;16=16颗芯片;32=32颗芯

片)

6. 内存bank(储蓄位):(1=2 bank;2=4 bank;3=8 bank)

7. 接口类型:(1=SSTL_3;2=SSTL_2;3=SSTL_18)

8. 内核代号:(空白=第1代;A=第2代;B=第3代;C=第4代)

9. 能源消耗:(空白=普通;L=低功耗型)

10.封装类型:(T=TSOP;Q=LOFP;F=FBGA;FC=FBGA(UTC:8x13mm))

11.封装堆栈:(空白=普通;S=Hynix;K=MT;J=其它;M=MCP(Hynix);MU

=MCP(UTC))

12.封装原料:(空白=普通;P=铅;H=卤素;R=铅+卤素)

13.速度:(D43=DDR400 3-3-3;D4=DDR400 3-4-4;J=DDR333;M=DDR333 2

-2-2;K=DDR266A;H=DDR266B;L=DDR200)

14.工作温度:(I=工业常温(-40 - 85度);E=扩展温度(-25 - 85度))

由上面14条注解,我们不难发现,其实最终我们只需要记住2、3、6、13等几处数

字的实际含义,就能轻松实现对使用现代DDR SDRAM内存颗粒的产品进行辨别。尤

其是第13位数字,它将明确的告诉消费者,这款内存实际的最高工作状态是多少

。假如,消费者买到一款这里显示为L的产品(也就是说,它只支持DDR200)

注:有的编码没有那么长,但几个根本的数字还是有的

LGS的内存可以说是目前市场上见到的最多,也是最广泛的内存了,所以LGS应该

首先排第一位。

LGS的内存编码规则:

GM 72 X XX XX X X X X X XXX

1 2 3 4 5 6 7 8 9 10 11

定义:

1、GM代表LGS公司。

2、72代表SDRAM。

3、V代表3V电压。

4、内存单位容量和刷新单位:其中:16:16M,4K刷新;17:16M,2K刷新;28:

128M,4K刷新;64: 64M,16K刷新。65:64M,8K刷新;66:64M,4K刷新。

5、数据带宽:4:4位,8:8位,16:16位,32:32位。

6、芯片组成:1:1BAND,2:2BANK,4:4BANK,8:8BANK

7、I/O界面:一般为1

8、产品系列:从A至F。

9、功耗:空白则是普通,L是低功

10、封装模式:一般为T(TSOP)

11、速度:其中:8:8NS,7K:10NS(CL2),7J(10NS,CL23),10K(10NS[

一说15NS],PC66), 12(12NS,83HZ),15(15NS,66HZ)

二、HY(现代HYUNDAI)

现代是韩国著名的内存生产厂,其产品在国内的占用量也很大。

HY的编码规则:

HY 5X X XXX XX X X X X- XX XX

1 2 3 4 5 6 7 8 9 10 11

定义:

1、HY代表现代。

2、一般是57,代表SDRAM。

3、工艺:空白则是5V,V是3V。

4、内存单位容量和刷新单位:16:16M4K刷新;64:64M,8K刷新;65:64M,4K

刷新;128:128M, 8K刷新;129:128M,4K刷新。

5、数据带宽:40:4位,80:8位,16:16位,32:32位。

6、芯片组成:1:2BANK,2:4BANK;3:8BANK;

7、I/O界面:一般为0

8、产品线:从A-D系列

9、功率:空白则为普通,L为低功耗。

10、封装:一般为TC(TSOP)

11、速度:7:7NS,8:8NS,10P:10NS(CL23),10S:10NS,(PC100,CL3)

,10:10NS,12: 12NS,15:15NS

三、SEC(三星SAMSUNG)

做为韩国著名的电器厂商,三星的重要性不必多说,在内存方面,三星的产量虽

然不及上两者大,但是三星一直专注于高品质、高性能的产品。三星的标识不是

很容易的就可以读出来,而且三星的产品线较全,所以品种非常多,此处仅供普

通SDRAM参考。

SEC编码规则:

KM4 XX S XX 0 X X XT-XX

1 2 3 4 5 6 7 89 10 11

1、KM代表SEC三星,此处编码一般均为4。

2、数据带宽:4:4位,8:8位,16:16位,32:32位。

3、一般均为S

4、这个数乘以S前边的位数就是内存的容量。

5、一般均为0

6、芯片组成:2:2BANK,3:4BANK

7、I/O界面:一般为0

8、版本号

9、封装模式:一般为T:TSOP

10、功耗:F低耗,G普通

11、速度:7:7NS,8:8NS,H:10NS(CL23),L:10NS(CL3),10:10NS。

四、MT(MICRON美凯龙)

美凯龙是美国著名的计算机生产商,同时也是一家计算机设备制造商,其内存的

产品闻名全美国,被广泛的机器所采用。美凯龙内存的品质优异,但价格较韩国

的产品略高。

MT48 XX XX M XX AX TG-XX X

1 2 3 4 5 6 7 8 9 10

1、MT代表美凯龙MICRON

2、48代表SDRAM。

3、一般为LC:普通SDRAM

4、此数与M后位数相乘即为容量。

5、一般为M

6、位宽:4:4位,8:8位,16:16位,32:32位

7、AX代表write Recovery(twr),A2则代表twr=2clk

8、TG代表TSOP封装模式。

9、速度:7:7NS,75:7.5NS,8X:8NS(其中X为从A到E:读取的周期分别是:

333,323,322, 222,222,所以D和E较好),10:10NS

10、如有L则为低功耗,空白则为普通。

五、HITACHI(日立HITACHI)

日立是日本的著名的微电子生产厂,其内存虽然在市场上占有量不大,但品质还

是不错的!

HM 52 XX XX 5 X X TT- XX

1 2 3 4 5 6 7 8 9

1、HM代表日立。

2、52代表SDRAM,51则为EDO

3、容量

4、位宽:40:4位,80:8位,16:16位

5、一般为5

6、产品系列:A-F

7、功耗:L为低耗,空白则为普通

8、TT为TSOP封装模式

9、速度:75:7.5NS,80:8NS,A60:10NS(CL23),B60:10NS(CL3)

六、SIEMENS(西门子)

西门子是德国最大的产业公司,其产品包罗万向,西门子的电子产品也是欧洲最

大的品牌之一(另一是PHILIPS)。西门子的内存产品多为台湾的OEM厂商制造的

,产品品质还算不错。

HYB39S XX XX 0 X T X -X

1 2 3 4 5 6 7 8 9

1、HYB代表西门子

2、39S代表SDRAM

3、容量

4、位宽:40:4位,80:8位,16:16位

5、一般为0

6、产品系列

7、一般为T

8、L为低耗,空白为普通

9、速度:

6:6NS,7:7NS,7.5:7.5NS,8:8NS(CL2),8B:10NS(CL3),10:10NS

七、FUJITSU(富士通FUJITSU)

富士通是日本专业的计算机及外部设备制造商,他的内存产品主要是供应OEM商,

市场上仅有少量零售产品。

MB81 X XX XX X2 X-XXX X FN

1 2 3 4 5 6 7 8 9

1、MB81代表富士通的SDRAM

2、PC100标准的多为F,普通的内存为1

3、容量

4、位宽:4:位,8:8位,16:16位,32:32位

5、芯片组成:22:2BANK,42:4BANK

6、产品系列

7、速度:60:6NS,70:7NS,80:8NS,102:10NS(CL23),103:10NS(CL3

),100:10NS,84: 12NS,67:15NS

八、TOSHIBA(东芝)

东芝是日本著名的电器制造商,其在高端领域也有产品,例如计算机产品及通讯

卫星等等。TOSHIBA的内存产品在市场上见到的不多。

TC59S XX XX X FT X-XX

1 2 3 4 5 6 7 8

1、TC代表东芝

2、59S代表普通SDRAM

3、容量:64:64MBIT,128:128MBIT

4、位宽:04:4位,08:8位,16:16位,32:32位

5、产品系列:A-B

6、FT为TSOP封装模式

7、空白为普通,L为低功耗

8、速度;75:7.5NS,80:8NS,10:10NS(CL3)

九、MITSUBISHI(三菱)

三菱是日本的一家汽车制造公司,因其多元化发展,所以在IT业和家电业也有产

品,三菱的微集成电路技术不同一般,所以其在内存领域也占有一席之地,因为

速度、品质优异,而成为INTEL的PII/PIIICPU的缓存供应商。普通SDRAM方面,

因为较贵,所以市场上少见。

M2 V XX S X 0 X TP-XX X

1 2 3 4 5 6 7 8 9 10

1、M2代表三菱产品

2、I/O界面。一般为V

3、容量

4、一般为S,说明是SDRAM

5、位宽:2:4位,3:8位,4:16位

6、一般为0

7、产品系列

8、TP代表TSOP封装

9、速度:

8A:8NS,7:10NS(CL23),8:10NS(CL3),10:10NS。

10、空白为普通,L为低耗。