我找到了在quora上做的方法,但我无法理解。
You can achieve this using opcodes.....
const int main[] = { -443987883, 440, 113408, -1922629632, 4149, 899584, 84869120, 15544, 266023168, 1818576901, 1461743468, 1684828783, -1017312735};
Now follow below steps....
Save that in hello.c
then gcc -o hello hello.c
then ./hello
Hola..... Hello World!
操作码将根据其架构特定于特定硬件和控制器。如果我理解正确,那么对于不同的硬件和平台,操作码将是不同的。所以这不是一般的解决方案。但是我试着在IDEone&它给出了运行时错误。有没有通用的解决方案?
答案 0 :(得分:5)
在C中,main
函数是程序的入口点。在程序二进制文件中,函数编译到的机器代码将放在二进制文件的.text
部分以及符号表中main
函数的位置。
在上面的代码中,我们创建了一个具有相同main
符号名称的常量数组。由于数组是常量,因此它也将放在二进制文件的.text
部分中。由于.text
部分中的任何代码都是可执行的,因此无法阻止主数组中的操作码被执行。