[ad_1]
I’m learning assembly, but I’ve been learning on Linux, and it’s been very interwoven with C/C++ since I understand C/C++.
However, now, I want to write a program in assembly on my Windows computer that makes a call to a function that runs a shell command, and hopefully without including any libraries since I want this executable to be as small as possible. (A simple C++ executable I made which included cstdlib
is 32 KB while I typed barely any code at all.)
I want to essentially write this program but in assembly:
#include <cstdlib>
int main()
{
system("echo ABCDEFG> msg.txt");
system("type msg.txt");
return 0;
}
So far, I have installed NASM and MinGW and I’m trying to use them, but nothing works and I assume it’s because Windows has its own stuff from Microsoft that obviously aren’t in Linux, but none of the online resources I’ve come across have successfully compiled with what I was trying to do. It also doesn’t seem to understand the statement extern system
, so I think that this might be a C/C++ library thing (from cstdlib
).
Also, in some cases I encountered an error where it said the “character constant is too long”. I assume it’s referring to the string; in the real program, the string to echo is much longer than what’s in the example above.
I also had an issue apparently with the .obj file that was generated.
So, basically, all I need is how to turn the above program into assembly for Windows, and how to get NASM and MinGW to turn it into an executable without giving me errors.
[ad_2]