2013-03-30 88 views
1

我想從我的.asm文件執行一個shell腳本(完全如下面的代碼所述),但是不能在彙編中找到以下代碼行我使用masm611來組裝和編譯這些文件。從彙編語言(.asm,x86)執行shell腳本

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.FileName = "myscript.sh"; 
proc.Start(); 

回答

2

首先,你不說哪個架構;所以這是無法回答的。一個簡單的解決方案應該是在C中編寫代碼,然後編譯成彙編代碼 - 這是所有流行的C編譯器都具有的開關,AFAIK - 然後只是移植到您自己的代碼中,並與適當的庫鏈接。

聲明:我不在彙編中工作。

0

既然你的例子是在.NET中,你提到了MASM,我假設你在Windows上工作。在Windows上,您可以使用Win32 API啓動進程或C RTL。無論哪種方式,你必須鏈接到一個靜態(.lib)庫並調用一個函數。在Win32 API中,ShellExecute()是最簡單的一個(也有CreateProcess(),但調用順序很痛苦)。在RTL中,有_execl()及其親屬。閱讀從程序集中消耗靜態庫。

.NET代碼,就像您提到的Process.Start()的東西,根本不會轉換成x86程序集。

請問爲什麼必須從裝配完成? 「大會」和「shell腳本」很少一起。注意:在Windows上,shell腳本具有.bat或.cmd擴展名。另一方面,.sh是* nix或MacOS的特徵。