从汇编语言执行shell脚本(.ASM,86)(Executing a shell script f

2019-08-18 07:35发布

我想从我的.asm文件执行shell脚本(完全是在下面的代码中提到),但可以,找不到替代以下行assembly.I正在使用masm611组装和编译的文件。

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

Answer 1:

首先,你不说哪个架构; 所以这是无法回答的。 一个简单的解决方案应该是在到刚刚代码这一点,那么编译成汇编代码 - 这是一个交换机的所有流行的C编译器有,据我所知 - 那么就移植到自己的代码,用适当的库链接。

免责声明:我不装配工作。



Answer 2:

由于您的例子是在.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的的特征。



文章来源: Executing a shell script from assembly language(.asm,x86)