相关疑难解决方法(0)

C和汇编程序实际编译的是什么?

所以我发现C(++)程序实际上并没有编译成简单的"二进制"(我可能在这里遇到了一些问题,在这种情况下我很抱歉:D)但是对于一系列事物(符号表) ,os相关的东西,...)但......

  • 汇编程序"编译"到纯二进制文件?这意味着除了预定义的字符串等资源之外没有额外的东

  • 如果C编译成除了普通二进制文件以外的其他内容,那么小型汇编程序引导程序如何只是将指令从HDD复制到内存并执行它们?我的意思是,如果操作系统内核(可能用C语言编写)编译成不同于普通二进制文件的东西 - 引导加载程序如何处理它?

编辑:我知道汇编程序没有"编译",因为它只有你的机器的指令集 - 我没有找到汇编程序"汇编"的好词.如果你有一个,请留在这里作为评论,我会改变它.

c c++ compiler-construction assembly linker

47
推荐指数
4
解决办法
2万
查看次数

编译器是否总是生成汇编代码?

来自C++中的思考 - 第1卷:

在第二遍中,代码生成器遍历解析树并为树的节点生成汇编语言代码机器代码.

至少在GCC中,如果我们给出生成汇编代码的选项,编译器会通过创建包含汇编代码的文件来服从.但是,当我们只是在gcc没有任何选项的情况下运行命令时,它是否在内部不生成汇编代码?

如果是,那么为什么需要首先生成汇编代码然后将其转换为机器语言?

compiler-construction assembly gcc

6
推荐指数
1
解决办法
2604
查看次数

将C++首先转换为汇编

我有困惑.我是C++开发人员,并多次听说我的源代码将首先转换为程序集,然后程序集将转换为机器代码.但是在汇编语言的一个视频教程中,教师清楚地说,C/C++代码直接转换为机器代码.(当然会有链接和加载).

我见过像这样的链接, C++代码是否编译成汇编代码?

我仍然无法澄清我的怀疑.

如果以防万一,C++没有首先转换为汇编,那么反汇编器如何从二进制生成汇编代码.

c++ compiler-construction assembly standards

1
推荐指数
1
解决办法
2028
查看次数

gcc、g++中生成ASM代码需要什么

为了缩小我的问题范围,让我描述一下我的假设和我所做的实验......

我的假设:用汇编语言编写的代码将比 C/C++ 对应的代码运行得快得多,并且可执行文件的大小也比 C/C++ 代码生成的代码小得多。

实验:我将以下程序写入bin2dec.c

#include <stdio.h>

int main()
{
    long int binary, decimal, reminder, exp;
    int i, j;

    for(i=0; i<10000; i++)
    {
        for(j=0; j<1000; j++)
        {
            binary = 11000101;

            exp = 1;
            decimal = 0;

            while(binary != 0)
            {
                reminder = binary % 10;
                binary = binary / 10;
                decimal = decimal + reminder * exp;
                exp *= 2;
            }   
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后为其生成ASM代码gcc -S bin2dec.c -o bin2dec.s

之后我编译了两个文件,如下所示

gcc bin2dec.c -o bin2dec_c …
Run Code Online (Sandbox Code Playgroud)

c++ assembly gcc g++

1
推荐指数
1
解决办法
1881
查看次数

标签 统计

assembly ×4

c++ ×3

compiler-construction ×3

gcc ×2

c ×1

g++ ×1

linker ×1

standards ×1