**如下:
#define descriptor(base,lim,attr)\
.word lim&0xffff;\
.word base&0xffff;\
.byte (base>>16)&0xff;\
.word ((lim>>8)&0xf00)|(attr&0x0f0ff);\
.byte ((base>>24)&0xff)
#define gate(selector,offset,pcount,attr)\
.2byte (offset&0xffff);\
.2byte (selector);\
.2byte (pcount&0x1f)|((attr<<8)&0xff00);\
.2byte ((offset>>16)&0xffff)
da_32=0x4000 //32位模式
da_limit_4k=0x8000 //顆粒度為4096
da_drw=0x92 //資料段可讀可寫
da_cr=0x9a //可讀可執行
da_c = 0x98
setupseg = 0x9020
setupaddr = setupseg<<4
da_386cgate = 0x8c
da_386igate = 0x8e
da_pl0 = 0x00
.text
.globl start/*程式從start處開始執行*/
.code32
start:
movl $0x20,%eax
mov %ax,%ds //因為ds是資料段暫存器,所以要載入乙個資料段,否則會發生異常(可以試試0x08描述符)
mov %ax,%es
mov %ax,%ss
mov $0xffff,%esp
/*載入gdtr即將全域性描述符表gdt的首位址和gdt的界限賦給gdtr暫存器*/
lgdt gdtptr
//lidt idtptr
movl $0x20,%eax
mov %ax,%ds
mov %ax,%es
mov %ax,%ss
mov $0xffff,%esp
ljmp $0x8,$label_seg_code32
label_seg_code32:
.align 32
.code32
movw $0x10,%ax
movw %ax,%gs
movl $((80*12+79)*2),%edi/*第12行,79列*/
movb $0x0c,%ah/*高四位表示黑底,低四位表示紅字*/
movb $'s',%al/*顯示的字元*/
movw %ax,%gs:(%edi)
loop1:/*無限迴圈*/
jmp loop1
第30行要特別主要,因為ds是資料段暫存器,所以要載入乙個資料段,否則會發生異常(可以試試0x08描述符),所以我們要在setup中將descriptor_systm_data :改為乙個資料段:descriptor_systm_data :descriptor(0x0,0xffffffff,da_drw)。
oracle 重新載入庫
今天oracle突然連線不上了,startup 命令啟動的時候報錯 如下,大概的意思是 init.ora 有問題了找不到了。sql startup 查了半天,最後終於找到辦法。解決辦法如下 在到oracle admin orcl pfile 裡面有乙個 init.ora.的檔案,這個是乙個啟動的配置...
Supervisor重新載入配置
一 新增好配置檔案後 二 更新新的配置到supervisord vb view plain copy supervisorctl update 三 重新啟動配置中的所有程式 vb view plain copy supervisorctl reload 四 啟動某個程序 program name 你...
Supervisor重新載入配置
1 更新新的配置到supervisord supervisorctl update 2.重新啟動配置中的所有程式 supervisorctl reload 3.啟動某個程序 program name 你配置中寫的程式名稱 supervisorctl start program name 4.停止某一...