1

.asm ファイルからシェル スクリプトを実行したいのですが (以下のコードに記載されているとおり)、アセンブリ内の次の行に代わるものが見つかりません。ファイルのアセンブルとコンパイルに masm611 を使用しています。

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

2 に答える 2

2

まず、どのアーキテクチャかは言いません。したがって、これは答えられません。簡単な解決策は、これを C でコーディングし、アセンブリ コードにコンパイルすることです。これは、一般的なすべての C コンパイラが持っているスイッチであり、AFAIK です。次に、独自のコードに移植し、適切なライブラリとリンクします。

免責事項: 私は組み立ての仕事をしていません。

于 2013-03-30T02:37:45.070 に答える
0

あなたの例は.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 の特徴です。

于 2013-03-30T02:48:45.343 に答える