我可以在windows中直接运行编译代码吗?
Can I directly run compiled code in windows?
在this站点,写了一个简单的C代码,得到了它的汇编代码:(x86-64 gcc 10.2)
#include<stdio.h>
// Type your code here, or load an example.
int main() {
int a=5, b=5;
int c = a+b;
return 0;
}
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 5
mov DWORD PTR [rbp-8], 5
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
mov DWORD PTR [rbp-12], eax
mov eax, 0
pop rbp
ret
如果我复制上面的汇编代码并将其粘贴到记事本中,我能否以某种方式在 windows 中 运行 它以获得与我 运行 上述 C 相同的预期输出代码?如果可以,我应该怎么做。
您需要 assemble 将它放入目标文件中,然后 link 使用加载器(如 CRT)或 运行 原样作为 .com
文件(在 Windows 下不受支持,这是 DOS 的东西)。
您不能使用记事本等文本编辑器编写二进制文件,因为文本编辑器通常 strip-out 字节不代表可打印字符。
您将不得不使用十六进制编辑器,或其他一些专用于二进制文件的编辑器。其次,除非您编写的是 非常基本的 可执行文件格式 (like the .COM file format for DOS),否则您要做的不仅仅是为您的预期入口点编写机器代码程序。 EXE 和 ELF 可执行文件由 header、重定位、文本、数据、资源等组成,而不仅仅是机器代码。
在this站点,写了一个简单的C代码,得到了它的汇编代码:(x86-64 gcc 10.2)
#include<stdio.h>
// Type your code here, or load an example.
int main() {
int a=5, b=5;
int c = a+b;
return 0;
}
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 5
mov DWORD PTR [rbp-8], 5
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
mov DWORD PTR [rbp-12], eax
mov eax, 0
pop rbp
ret
如果我复制上面的汇编代码并将其粘贴到记事本中,我能否以某种方式在 windows 中 运行 它以获得与我 运行 上述 C 相同的预期输出代码?如果可以,我应该怎么做。
您需要 assemble 将它放入目标文件中,然后 link 使用加载器(如 CRT)或 运行 原样作为 .com
文件(在 Windows 下不受支持,这是 DOS 的东西)。
您不能使用记事本等文本编辑器编写二进制文件,因为文本编辑器通常 strip-out 字节不代表可打印字符。
您将不得不使用十六进制编辑器,或其他一些专用于二进制文件的编辑器。其次,除非您编写的是 非常基本的 可执行文件格式 (like the .COM file format for DOS),否则您要做的不仅仅是为您的预期入口点编写机器代码程序。 EXE 和 ELF 可执行文件由 header、重定位、文本、数据、资源等组成,而不仅仅是机器代码。