.asm ファイルからシェル スクリプトを実行したいのですが (以下のコードに記載されているとおり)、アセンブリ内の次の行に代わるものが見つかりません。ファイルのアセンブルとコンパイルに masm611 を使用しています。
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()
とその親戚がいます。アセンブリからの静的ライブラリの使用について読んでください。
Process.Start()
あなたが言及したもののような.NETコードは、 x86アセンブリにまったく変換されません。
なぜこれをアセンブリから行う必要があるのか 尋ねてもよろしいですか?「アセンブリ」と「シェル スクリプト」が一緒になることはめったにありません。注: Windows では、シェル スクリプトの拡張子は .bat または .cmd です。一方、.sh は *nix または MacOS の特徴です。