1

我想从我的 .asm 文件中执行一个 shell 脚本(正如下面代码中提到的那样),但是在汇编中找不到以下行的替代方法。我正在使用 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 中,theres_execl()及其亲属。阅读从程序集中使用静态库的内容。

.NET 代码,就像Process.Start()您提到的那样,根本不会转换为 x86 程序集。

请问为什么必须从组装中完成?“程序集”和“shell 脚本”很少一起出现。注意:在 Windows 上,shell 脚本具有 .bat 或 .cmd 扩展名。另一方面,.sh 是 *nix 或 MacOS 的特征。

于 2013-03-30T02:48:45.343 回答