#rpm -qa |grep gdb
下载:
安装
#tar -zxvf
#./configure
#make
使用GDB
以汇编语言调试为例
汇编语言实现CPUID指令
CPUID
cpuid是Intel Pentinum以上级CPU内置的一个指令(486级以下的CPU不支持),他用于识别某一类型的CPU,
它能返回CPU级别,型号,CPU步进以及CPU字串信息,从此命令也可以得到CPU的缓存和TLB信息
CPUID返回数据类型是在EAX寄存器里定义的,而指令返回的数值则存储在EAX,EBX,ECX和EDX寄存器中。
返回的信息分两部分:基本信息与扩展信息。
在EAX输入0-3参数时,它返回CPU基本信息;
而在EAX输入0x8000000至ox800000x,他返回的是CPU扩展信息。扩展信息只包括在Pentinum4及以后的CPU上。
CPU级别 基本信息 扩展信息
486及以前的CPU 不可用 不可用
Pentium 0x1 不可用
Pentium Pro,Pentium 2 0x2 不可用
Pentium 3 0x3 不可用
Pentium 4 0x2 0x80000004
Xeon(至强) 0x2 0x80000004
代码
cpuid.s
#cpuid.s Sample program to extract the processor Vendor ID
.section .data
output:
.ascii "The processor Vendor ID is 'xxxxxxxxxxxx'\n"
.section .text
.globl _start
_start:
movl $0, %eax
cpuid
movl $output, %edi
movl %ebx, 28(%edi)
movl %edx, 32(%edi)
movl %ecx, 36(%edi)
movl $4, %eax
movl $1, %ebx
movl $output, %ecx
movl $42, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
使用GNU汇编器
#as -o cpuid.o cpuid.s
使用GNU链接器
#ld -o cpuid cpuid.o
运行程序
#./cpuid
输出
</