虽然我同意 templatetypedef 的评论,即这应该分成更小的问题,但我会尽力在此处为您的每个问题提供一些指示。
我可以直接在我的机器上运行这个编译的程序,而不需要 windows 操作系统吗?
从技术上讲,是的,但这将涉及修改正常的启动过程。这与您的第三个问题有关。Windows 本身是一种应用程序加载器,它是一种旨在启动其他应用程序(并做其他有用的事情)的应用程序。目前,当您的计算机启动时,它的第一条指令可能是JUMP
告诉计算机“跳转到”您的操作系统的内存位置并开始其初始化的指令。从此,操作系统相对独立。
.exe 是带有内置汇编指令的编译文件吗?
.exe
文件只是一种可执行文件。其他包括ELF
和Mach-O
以及其他一系列。文件.exe
就像任何其他文件一样,除了它的“标题”告诉机器以下数据是机器可执行指令的形式(1 和 0)。不要将汇编语言与机器指令混淆。mov %eax, %ebx
机器不会读取类似的汇编指令。首先它通过一个assmebler
并转换为 1 和 0。
如果汇编语言程序是字节码,为什么当我用 PIC 刻录机录制 PIC 时,我会向它写入 hexacode?
如上。Bytecode
是一个有很多含义的词。十六进制只是表示二进制的另一种(较短)方式。在一天结束时,一切都归结为二进制。
x64 架构是具有新指令的新架构,但仍然具有 x86 指令?对或错?
真的。英特尔尽最大努力保持完全的向后兼容性。这不一定适用于操作系统。
如何读取编译器生成的低级代码?
低级别我假设您的意思是汇编代码,而不是 1 和 0。最常见的方法是将-S
标志与gcc
. 这将输出一个.s
程序集文件而不是一个.o
对象或.exe(etc)
可执行文件。
如果您想了解更多关于组装的信息,这是英特尔处理器(('x86')和)的上帝参考。请注意,这是非常沉重的。您最好在 Google 上查找 Windows 或 OS X 组装教程。如果您想入门,NASM是一个免费的多平台汇编器,不过它的语法与其他汇编器略有不同。在你进行任何这些之前,我建议你学习计算机系统的基础知识——处理器是如何工作的,等等。也许首先学习一种更简单的汇编语言,比如 DLX 或 MIPS。IA-32
x86-64