我想从我的.asm文件执行shell脚本(完全是在下面的代码中提到),但可以,找不到替代以下行assembly.I正在使用masm611组装和编译的文件。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "myscript.sh";
proc.Start();
我想从我的.asm文件执行shell脚本(完全是在下面的代码中提到),但可以,找不到替代以下行assembly.I正在使用masm611组装和编译的文件。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "myscript.sh";
proc.Start();
首先,你不说哪个架构; 所以这是无法回答的。 一个简单的解决方案应该是在到刚刚代码这一点,那么编译成汇编代码 - 这是一个交换机的所有流行的C编译器有,据我所知 - 那么就移植到自己的代码,用适当的库链接。
免责声明:我不装配工作。
由于您的例子是在.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,在另一方面,是Unix或者MacOS的的特征。