Chinaunix首页 | 论坛 | 博客
  • 博客访问: 177769
  • 博文数量: 69
  • 博客积分: 2627
  • 博客等级: 少校
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 22:37
文章分类

全部博文(69)

文章存档

2017年(3)

2014年(1)

2013年(4)

2012年(6)

2011年(21)

2010年(15)

2009年(19)

我的朋友

分类: LINUX

2011-08-08 00:55:38

linux 0.01里的gdt是定义在head.s里,本文是想确认一下在C文件里是如何调用的.

gdt.s
----------
.text

.globl _gdt

_gdt:
    .quad 0x0000000000000000
    .quad 0x0000000100000002
    .quad 0x0000000300000004
    .quad 0x0000000500000006


gdt.h
--------
typedef struct _desc{
    long a,b;
} desc_table[4];

extern desc_table gdt;


gdt.c
------
#include
#include "gdt.h"

void main(){
    printf("gdt[1].a=%d  gdt[1].b=%d\n", gdt[1].a,gdt[1].b);
    printf("gdt[2].a=%d  gdt[2].b=%d\n", gdt[2].a,gdt[2].b);
    printf("gdt[3].a=%d  gdt[3].b=%d\n", gdt[3].a,gdt[3].b);
}

编译:(windows平台djgpp)
as -o gdt_s.o gdt.s
gcc -c gdt.c
gcc -o gdt gdt_s.o gdt.o

运行结果:
gdt[1].a=2  gdt[1].b=1
gdt[2].a=4  gdt[2].b=3
gdt[3].a=6  gdt[3].b=5

阅读(536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~