?? segment.h
字號:
//// 讀取fs 段中指定地址處的字節。// 參數:addr - 指定的內存地址。// %0 - (返回的字節_v);%1 - (內存地址addr)。// 返回:返回內存fs:[addr]處的字節。extern inline unsigned charget_fs_byte (const char *addr){ unsigned register char _v;__asm__ ("movb %%fs:%1,%0": "=r" (_v):"m" (*addr)); return _v;}//// 讀取fs 段中指定地址處的字。// 參數:addr - 指定的內存地址。// %0 - (返回的字_v);%1 - (內存地址addr)。// 返回:返回內存fs:[addr]處的字。extern inline unsigned shortget_fs_word (const unsigned short *addr){ unsigned short _v;__asm__ ("movw %%fs:%1,%0": "=r" (_v):"m" (*addr)); return _v;}//// 讀取fs 段中指定地址處的長字(4 字節)。// 參數:addr - 指定的內存地址。// %0 - (返回的長字_v);%1 - (內存地址addr)。// 返回:返回內存fs:[addr]處的長字。extern inline unsigned longget_fs_long (const unsigned long *addr){ unsigned long _v;__asm__ ("movl %%fs:%1,%0": "=r" (_v):"m" (*addr)); return _v;}//// 將一字節存放在fs 段中指定內存地址處。// 參數:val - 字節值;addr - 內存地址。// %0 - 寄存器(字節值val);%1 - (內存地址addr)。extern inline voidput_fs_byte (char val, char *addr){ __asm__ ("movb %0,%%fs:%1"::"r" (val), "m" (*addr));}//// 將一字存放在fs 段中指定內存地址處。// 參數:val - 字值;addr - 內存地址。// %0 - 寄存器(字值val);%1 - (內存地址addr)。extern inline voidput_fs_word (short val, short *addr){ __asm__ ("movw %0,%%fs:%1"::"r" (val), "m" (*addr));}//// 將一長字存放在fs 段中指定內存地址處。// 參數:val - 長字值;addr - 內存地址。// %0 - 寄存器(長字值val);%1 - (內存地址addr)。extern inline voidput_fs_long (unsigned long val, unsigned long *addr){ __asm__ ("movl %0,%%fs:%1"::"r" (val), "m" (*addr));}/** Someone who knows GNU asm better than I should double check the followig.* It seems to work, but I don't know if I'm doing something subtly wrong.* --- TYT, 11/24/91* [ nothing wrong here, Linus ]*//** 比我更懂GNU 匯編的人應該仔細檢查下面的代碼。這些代碼能使用,但我不知道是否* 含有一些小錯誤。* --- TYT,1991 年11 月24 日* [ 這些代碼沒有錯誤,Linus ]*///// 取fs 段寄存器值(選擇符)。// 返回:fs 段寄存器值。extern inline unsigned longget_fs (){ unsigned short _v;__asm__ ("mov %%fs,%%ax": "=a" (_v):); return _v;}//// 取ds 段寄存器值。// 返回:ds 段寄存器值。extern inline unsigned longget_ds (){ unsigned short _v;__asm__ ("mov %%ds,%%ax": "=a" (_v):); return _v;}//// 設置fs 段寄存器。// 參數:val - 段值(選擇符)。extern inline voidset_fs (unsigned long val){ __asm__ ("mov %0,%%fs"::"a" ((unsigned short) val));}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -