我想從我的.asm文件執行一個shell腳本(完全如下面的代碼所述),但是不能在彙編中找到以下代碼行我使用masm611來組裝和編譯這些文件。從彙編語言(.asm,x86)執行shell腳本
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "myscript.sh";
proc.Start();
我想從我的.asm文件執行一個shell腳本(完全如下面的代碼所述),但是不能在彙編中找到以下代碼行我使用masm611來組裝和編譯這些文件。從彙編語言(.asm,x86)執行shell腳本
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "myscript.sh";
proc.Start();
首先,你不說哪個架構;所以這是無法回答的。一個簡單的解決方案應該是在C中編寫代碼,然後編譯成彙編代碼 - 這是所有流行的C編譯器都具有的開關,AFAIK - 然後只是移植到您自己的代碼中,並與適當的庫鏈接。
聲明:我不在彙編中工作。
既然你的例子是在.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的特徵。