Каква е разликата между Асемблер и Компилатор

> Те не правят това сега

В днешно време те обикновено превеждат кода в асемблера на виртуалната машина и след това тази междинна форма в машинния код на определена платформа (GCC, LLVM).

> В днешно време е обичайно да се превежда кодът в асемблера на виртуалната машина и след това тази междинна форма в машинния код на определена платформа (GCC, LLVM).

MiiNiPaa: gcc просто използва реален асемблер и извиква газ, за ​​да го сглоби.

В противен случай ще трябва да правим × преводачи, вместо текущите × .

Превод от представяне в асемблер и след това сглобяването му, за да ускори разработването на преводач за нова платформа: можете да вземете готов асемблер и да не ограждате велосипед.

> Все още се използва междинно представяне

MiiNiPaa: използват се gimple и rtl, но те не се показват никъде по време на нормална работа и съществуват само в изпълняващия компилатор. Резултатът от работата на действителния c/c ++ компилатор от gcc (cc1/cc1plus) е асемблерен файл за целевата машина.

> В противен случай ще трябва да правим × преводачи вместо текущия × .

Имате една и съща стойност отляво и отдясно на „вместо“.

jcmvbkbc:> Имате една и съща стойност отляво и отдясно на „вместо“.

Благодаря. Знакът плюс вдясно е закован на един нокът и случайно се завъртя на 45 градуса.

Да, не можете да стигнете до междинното представяне, без изрично да посочите команди към компилатора. Току-що разбрах предишния пост като "GCC не използва междинно представяне".