Linux发行版知识普及:三个版本的CPUID
第一个版本
' U$ [ |" s+ u: E( A0 y打造最好的电脑自学交流论坛
( F$ X* h- `3 X& S* v( |. ^5 W打造最好的电脑自学交流论坛x86-ubuntu-64位环境,at&t格式(gas汇编),使用linux系统调用: 打造最好的电脑自学交流论坛 n$ N& A; q9 `; D$ _9 i! E9 f' F. R
www.520diannao.com$ N3 h+ w3 u. Y
# r4 T* c# q6 h( B% F我爱电脑技术论坛
0 N4 U7 ~# E. }2 Z) n打造最好的电脑自学交流论坛#cpuid.s show extract the processor vendor ID
* S4 n" P" ?; |2 ?.section .data. S i7 _/ T6 b) Z1 N
output:
/ Q8 }7 l) A0 T- z5 q+ s% {电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站.ascii "the processor vendor ID is 'XXXXXXXXXXXX'\n"
& ?0 R, ]% y& S0 B& p电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站.section .text
; m2 {& k) r1 @# j.globl main
. p7 I/ y5 C% [2 h& v我爱电脑技术论坛main:
5 R4 Q0 c8 \- k9 b% `; x3 F, ~打造最好的电脑自学交流论坛movl $0, %eax0 P% Q, T N$ ?4 G3 G6 [5 }9 ]: U
cpuid打造最好的电脑自学交流论坛$ d3 T( K$ }! i$ `* J% q
movl $output, %edi打造最好的电脑自学交流论坛/ _( `# V! e3 M/ u1 ?
movl %ebx, 28(%edi)
: z1 [- \+ ?- D X1 x; y我爱电脑技术社区--打造最好的电脑技术自学交流平台movl %edx, 32(%edi)
' u8 A* w6 d7 i# R* ~电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站movl %ecx, 36(%edi)
8 a1 \6 V' i7 P" _ U我爱电脑技术论坛movl $4, %eax
! M ~# O! `$ ]3 F9 c' c- amovl $1, %ebx) j% z, @5 f0 M
movl $output, %ecxwww.520diannao.com; v2 H5 L$ q; U* l3 ?
movl $42, %edx打造最好的电脑自学交流论坛) i$ \" q9 B/ j
int $0x80打造最好的电脑自学交流论坛9 i) }4 {! W6 A4 m( s5 I$ i. G9 h
movl $1, %eax
1 Y9 q/ a8 V( b9 kmovl $0, %ebx
5 b* w* S0 l" W* k5 F( k4 |, [我爱电脑技术论坛int $0x80
7 r. ]9 h" U5 w( _4 {6 g" x! l打造最好的电脑自学交流论坛
8 I: j8 q( V) b9 H' D
) s* R$ z3 b! @www.520diannao.com我爱电脑技术社区--打造最好的电脑技术自学交流平台9 _1 K6 V. E- Y
第二个版本 我爱电脑技术论坛3 Z3 C( ?7 l. B; T1 `
7 }- c4 Q" J: [
x86-ubuntu-64位环境,at&t格式(gas汇编),使用C库函数,注意使用了64位寄存器,想改成32位只要把所有带r的改成带e的就可以了 www.520diannao.com8 J+ ^1 D3 w- m
5 Y4 x6 i6 Y/ }) I电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
5 B( R4 g6 ]! Z. F8 R2 @我爱电脑技术社区--打造最好的电脑技术自学交流平台打造最好的电脑自学交流论坛0 A7 ~7 ~: [! w8 x
# cpuidinlib.s show extract the processor vendor ID using library
& p) q& z8 E. ^" p. M2 f% r7 nwww.520diannao.com.section .data打造最好的电脑自学交流论坛& z" e7 I p/ _5 t4 [
output:! m. _& O. @/ |/ w4 H$ M
.asciz "the processor vendor ID is %s\n"
+ Q# [: ~. m" i1 Z5 _' m. R1 a3 C# Hwww.520diannao.com
$ L7 R! s. V9 r: q) Q6 l3 I- ?+ }, Swww.520diannao.com.section .bsswww.520diannao.com& i& L0 I* g/ B8 U% P+ b
.lcomm buffer, 12
& V5 }; z$ f0 L7 G w打造最好的电脑自学交流论坛www.520diannao.com% g! U& U* \- J" M# v8 s0 ^
.section .text我爱电脑技术论坛' _4 B2 O( k7 U5 e* w
.globl _start
. a9 ]' S( k Z* m打造最好的电脑自学交流论坛_start:
& n$ j$ B; _; U5 l+ s% w. \' a% y! @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站movq $0, %rax
- G) ]: v t% n+ X9 x5 V3 m打造最好的电脑自学交流论坛cpuid
5 y! U( Q4 Q" n8 q$ L* Z- h* Y我爱电脑技术论坛movq $buffer, %rdiwww.520diannao.com# c3 W& @+ n7 x! m" }
movl %ebx, (%rdi)我爱电脑技术社区--打造最好的电脑技术自学交流平台! Q c2 x+ t8 W# s# R1 U3 M3 e
movl %edx, 4(%rdi)www.520diannao.com$ g) y, p- J% I! }+ D! [
movl %ecx, 8(%rdi)www.520diannao.com p/ b8 f" h! n6 u
8 \; P/ R* Z* g打造最好的电脑自学交流论坛movq $output, %rdiwww.520diannao.com: j% u& k2 @; t1 Z# j) ~2 S9 C0 d
movq $buffer, %rsi电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 V" S" I. r3 O% Q$ g: t, l1 l
xorq %rax, %rax
* A- y+ P0 `% D/ y8 ~+ s+ q我爱电脑技术社区--打造最好的电脑技术自学交流平台call printfwww.520diannao.com' g8 m( a, F( ^1 \* ?8 }' s. J* P# G
movq $0, %rdi我爱电脑技术社区--打造最好的电脑技术自学交流平台4 ?; [3 j4 z- O4 z& P& b
xorq %rax, %raxwww.520diannao.com* h0 f& Q' N2 s! b+ c8 i3 m
call exit
6 \. Y( p- ^. c" J( w. N我爱电脑技术社区--打造最好的电脑技术自学交流平台不过上面有一个问题
) d# U7 L1 F& Y' h* Xprintf("%s", str);
5 J+ ?4 L. n; x% Z; g$ T+ f打造最好的电脑自学交流论坛 我爱电脑技术社区--打造最好的电脑技术自学交流平台* L _+ E: F4 `
打造最好的电脑自学交流论坛. N' P" J. a! |" A
! E+ f+ f7 Q$ S1 u5 r我爱电脑技术论坛这样的形式不常见,既然是字符串, str应该是以0结束的,但是注意上面并没有以0结束,那么printf是怎么判断字符串结束了呢? 在C下一样成功,不知道为什么,知道的告诉我下。
; o8 S0 X; X( c1 @' z4 q0 r我爱电脑技术论坛我爱电脑技术论坛. S, N' X, D3 N9 p) F7 H
9 [( T$ y5 [8 ?9 i D第三个 x86-win32,使用intel语法(masm32开发包), 调用windows API.这个估计都熟悉
" V. I4 `! ]% t: T6 r打造最好的电脑自学交流论坛
2 ^; L& g9 M% p我爱电脑技术社区--打造最好的电脑技术自学交流平台9 C$ `" i; \, @/ S& h* a. x' L
我爱电脑技术论坛1 z) v5 F& g. d0 @. I' s
;; cpuid电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' C1 R/ q) [/ P1 g4 n `
.686电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站2 o- P& n5 x: I3 j; [7 @7 k' L$ T
.model flat, stdcall
1 P* u0 w, |+ ]. @+ M9 }1 Uoption casemap: none
7 G, P& Z! b4 J! v3 ^0 E- \- A8 m6 b我爱电脑技术论坛include windows.inc电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站* e! g5 G# D6 G: k8 N. X
include user32.inc电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# ^7 o F- Z" \+ m+ R( p3 \% u7 Z
includelib user32.lib
( V4 K. O0 V8 f- E( C9 rinclude kernel32.incwww.520diannao.com" p1 A' j G+ U D
includelib kernel32.lib
6 m5 }2 X! L! [! [8 bwww.520diannao.comincludelib msvcrt.lib
5 @- f( g( X; a1 k. p* @www.520diannao.comsprintf PROTO C:DWORD, :DWORD, :VARARG
' p/ C+ u" Z' t* Z/ Owww.520diannao.com电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, A2 N6 q' G0 I* j, C5 A
.data电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ w% Q; B6 c- y/ I
msg db 'the processor vendor ID is %s', 0www.520diannao.com' S! L! l( I2 u8 c1 b# d
note db '注意', 0打造最好的电脑自学交流论坛" g. B5 n! F! ], K
.data?我爱电脑技术论坛, U0 O: L) g% ~4 T
result db 13 dup(?)电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站% I$ D: u6 e% ^( C3 t( R' V/ `
buff db 128 dup(?)# p5 Q) U, J0 {+ w% G9 y
.code我爱电脑技术社区--打造最好的电脑技术自学交流平台: m; X7 N* ^& u$ v. a1 X6 l* T; s
start:
' W) O% `- E- N我爱电脑技术社区--打造最好的电脑技术自学交流平台call go
; M i# a3 y7 `2 i4 I: Kinvoke ExitProcess,NULL
/ `% W# A" y) ~$ {% G9 Vwww.520diannao.comgo:
( f+ ?( n+ ?6 p; _- l% B0 H我爱电脑技术社区--打造最好的电脑技术自学交流平台mov eax, 0
% o' r) y! z! p. z, ?电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站cpuid
) X7 R2 j% G9 I5 V8 K# d4 r# gwww.520diannao.commov edi, offset result
* R* o- I0 h1 S0 C( ?. k打造最好的电脑自学交流论坛mov [edi], ebx
. u f" n2 `. V9 l. }+ O, [我爱电脑技术论坛mov 4[edi], edxwww.520diannao.com- [- C; O. Y: ]# S; l% I
mov 8[edi], ecx打造最好的电脑自学交流论坛+ K; @+ i8 z* M8 G* v% N" Z3 x
mov byte ptr 12[edi], 0我爱电脑技术社区--打造最好的电脑技术自学交流平台' q8 c" r3 S0 O) E
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 G, _. _6 N% v( d7 h4 c6 u
push dword ptr offset result
; L! \! L! _/ L! w- u/ c% @我爱电脑技术社区--打造最好的电脑技术自学交流平台push dword ptr offset msg
9 u4 A- n6 }6 X! k/ Z# V打造最好的电脑自学交流论坛push dword ptr offset buff我爱电脑技术社区--打造最好的电脑技术自学交流平台$ N- u1 T3 _6 p# ?& I* `: _
;call sprintf 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站8 M2 c" H* [& M2 y
mov eax, 77c0f931H打造最好的电脑自学交流论坛7 E: a+ U& h0 l6 t' e0 F0 M* X
call eax n8 J. ?0 \5 ~% m! L0 g
add esp, 12我爱电脑技术论坛' u0 b0 z1 }4 e# v7 U
$ }( [' a5 l; S4 b) G电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站invoke MessageBox, NULL, addr buff, addr note, MB_OK我爱电脑技术论坛! y9 v7 q% `. @! f/ E& d
ret
. t9 K! a& M. E4 d我爱电脑技术社区--打造最好的电脑技术自学交流平台end start