GDB调试--以汇编语言为例

#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

输出

</

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值