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) |