您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

05 ss訂閱鏈接轉換為(誰有用C#開發的工具?)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-19 17:39:45【】7人已围观

简介op0xffffe40a:nop0xffffe40b:nop0xffffe40c:nop0xffffe40d:nop0xffffe40e:jmp0xffffe4030xffffe410:pop%ebp

op

0xffffe40a: nop

0xffffe40b: nop

0xffffe40c: nop

0xffffe40d: nop

0xffffe40e: jmp 0xffffe403

0xffffe410: pop %ebp

0xffffe411: pop %edx

0xffffe412: pop %ecx

0xffffe413: ret

End of assembler mp.

這段代碼正是arch/i386/kernel/vsyscall- sysenter.S文件中的代碼。其中,在sysenter之前的是入口代碼,在0xffffe410開始的是內核返回處理代碼(后面提到的 SYSENTER_RETURN即指向這里)。在入口代碼中,首先是保存當前的ecx,edx(由于sysexit指令需要使用這兩個寄存器)以及 ebp。然后調用sysenter指令,跳轉到內核Ring 0代碼,也就是sysenter_entry入口處。

內核中的處理和返回

sysenter_entry整個的實現可以參見arch/i386/kernel/entry.S。內核處理SYSENTER的代碼和處理INT的代碼不太一樣。通過sysenter指令進入Ring 0之后,由于當前的ESP并非指向正確的內核棧,而是當前CPU的TSS結構中的一個緩沖區(參見上文),所以首先要解決的是修復ESP,幸運的是,TSS結構中ESP0成員本身就保存有Ring 0狀態的ESP值,所以在這里將TSS結構中ESP0的值賦予ESP寄存器。將ESP恢復成指向正確的堆棧之后,由于SYSENTER不是通過調用門進入Ring 0,所以在堆棧中的上下文和使用INT指令的不一樣,INT指令進入Ring 0后棧中會保存如下的值。

低地址

返回用戶態的EIP

用戶態的CS

用戶態的EFLAGS

用戶態的ESP

用戶態的SS(和DS相同)

高地址

因此,為了簡化和重用代碼,內核會用pushl指令往棧中放入上述各值,值得注意的是,內核在棧中放入的相對應用戶態EIP的值,是一個代碼標簽 SYSENTER_RETURN,在vsyscall-sysenter.S可以看到,它就在sysenter指令的后面(在它們之間,有一段NOP,是內核返回出錯時的處理代碼)。接下來,處理系統調用的代碼就和中斷方式的處理代碼一模一樣了,內核保存所有的寄存器,然后系統調用表找到對應系統調用的入口,完成調用。最后,內核從棧中取出前面存入的用戶態的EIP和ESP,存入edx和ecx寄存器,調用SYSEXIT指令返回用戶態。返回用戶態之后,從棧中取出ESP,edx,ecx,最終返回glibc庫。

其它操作系統以及其它硬件平臺的支持

值得一提的是,從 Windows XP 開始,Windows 的系統調用方式也從軟中斷 int 0x2e 轉換到采用 sysenter 方式,由于完全不再支持 int 方式,因此 Windows XP 的對 CPU 的最低配置要求是 PentiumII 300MHz。在其它的操作系統例如 *BSD 系列,目前并沒有提供對 sysenter 指令的支持。

在 CPU 方面,AMD 的 CPU 支持一套與之對應的指令 SYSCALL/SYSRET。在純 32 位的 AMD CPU 上,還沒有支持 sysenter 指令,而在 AMD 推出的 AMD64 系列 CPU 上,處于某些模式的情況下,CPU 能夠支持 sysenter/sysexit 指令。在 Linux 內核針對 AMD64 架構的代碼中,采用的還是 SYSCALL/SYSRET 指令。至于這兩種指令最終誰將成為標準,目前還無法得出結論。

未來

我們將 Intel 的 sysenter/sysexit 指令,AMD 的 SYSCALL/SYSRET 指令統稱為"快速系統調用指令"。"快速系統調用指令"比起中斷指令來說,其消耗時間必然會少一些,但是隨著 CPU 設計的發展,將來應該不會再出現類似 Intel Pentium4 這樣懸殊的差距。而"快速系統調用指令"比起中斷方式的系統調用方式,還存在一定局限,例如無法在一個系統調用處理過程中再通過"快速系統調用指令"調用別的系統調用。因此,并不一定每個系統調用都需要通過"快速系統調用指令"來實現。比如,對于復雜的系統調用例如 fork,兩種系統調用方式的時間差和系統調用本身運行消耗的時間來比,可以忽略不計,此處采取"快速系統調用指令"方式沒有什么必要。而真正應該使用" 快速系統調用指令"方式的,是那些本身運行時間很短,對時間精確性要求高的系統調用,例如 getuid、gettimeofday 等等。因此,采取靈活的手段,針對不同的系統調用采取不同的方式,才能得到最優化的性能和實現最完美的功能。

[1] VxWorks Optimized for Intel Architecture, Hdei Nunoe, Wind River, Member of Technical Staff Leo Samson, Wind River, Technical Marketing Engineer David Hillyard, Intel Corporation, Mgr., Platform Architect

[2] Kernel Entry / Kernel Exit , Marcus Voelp & University Karlsruhe

[3] Dave Jones' blog, 買粉絲://diary.買粉絲demonkey.org.uk/index.php?month=12&year=2002

[4] Linux 內核源碼 v2.6.0 買粉絲://買粉絲.kernel.org/ [Linus Torvalds,2004]

[5] GNU C Library glibc 2.3.3 源碼 買粉絲://買粉絲.gnu.org/software/libc/libc.買粉絲

Linux Kernel Mailing List 中對系統調用方式的討論: [5] Linux Kernel Mailing List, "Intel P6 vs P7 system call performance" 買粉絲://買粉絲.ussg.iu.e/hypermail/linux/kernel/0212.1/index.買粉絲#1286 買粉絲://買粉絲.ussg.iu.e/hypermail/linux/kernel/0212.3/index.買粉絲#54

Linux 內核首次引入對 sysenter/sysexit 指令的支持: [6] Linux Kernel Mailing List, "Add "sysenter" support on x86, and a "vsyscall" page." 買粉絲://lwn.買粉絲/Articles/18414/

誰有用C#開發的工具?

1.Excle神器NPOI

NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。NPOI讓.NET平臺擁有了一個比較完善的讀寫Excel的工具。使用量非常廣泛,應該是開源的.NET Excel讀寫工具中曝光度最高的一個吧,沒有之一。

使用NPOI的優勢有:完全免費使用,包含了大部分EXCEL的特性(單元格樣式、數據格式、公式等等),支持處理的文件格式包括xls, xlsx, docx.采用面向接口的設計架構( 可以查看 NPOI.SS 的命名空間),同時支持文件的導入和導出,你不需要在服務器上安裝微軟的Office,可以避免版權問題。使用起來比Office PIA的API更加方便,更人性化。那么還等什么呢?下面就是我第一次使用NPOI做的一個日報表工具,里面的單元格合并都是在程序中動態完成的,過程很艱辛,但結果很美好,目前已經使用了2年,穩定無bug,非常給力啊。

官方網站:買粉絲://npoi.買粉絲deplex.買粉絲/

買粉絲s://github.買粉絲/tonyqus/npoi

官方教程:買粉絲://買粉絲.npoi.info/

2.NPOI擴展—NPOI.CSS

NPOI.CSS是一個可以在使用NPOI時用類CSS的方法設置單元格樣式的NPOI擴展,只支持.NET4及以上版本的項目。這個擴展是為了方便在使用的時候設置單元格及其相關格式樣式,可以使用類似Css的方式,非常給力。看看下面的代碼:

1

cell.CSS("買粉絲lor:red;font-weight:bold;font-size:11;font-name:宋體;border-type:thin;")

官方網站:買粉絲s://github.買粉絲/qihang買粉絲/npoi.css

3.yjinglee.office

yjinglee.office用于.Net平臺下的Excel操作,主要封裝NPOI對外提供更簡單實用的API,提供以下功能點:

1.讀取Excel數據轉換成對象集合

2.寫入集合到Excel,并提供可以Excel樣式定義

看看一段讀取Excel的代碼:

1

2

3

4

5

6

7

8

9

10

var Reports = new Collection();

for (var i = 0; i < 10; i++)

{

Reports.Add(new Report { Id = i*100, Name = Guid.NewGuid().ToString()});

}

var excel = new Excel(new DefaultStyle());//創建Excel實例,可以傳遞不同的樣式實例

excel.CreateSheet("Test");//創建一個Sheet,命名為Test

excel.WriteObject(Reports, 0, 0);//在Sheet0中的第0行寫入集合

excel.SetColumnWidth(0, 0, new [] { 5, 35});//在Sheet0的第0列開始依次設置列寬

excel.WriteFile(Path.C

很赞哦!(628)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:江西抚州资溪县

工作室:小组

Email:[email protected]