И 50к+ строк асемблера
Любой С-код проходит стадию ассемблера.
С добрым утром. Уже несколько десятков лет, как не проходит - за ненадобностью.
Что, прям в машинные коды делает?
Проходит. Только незаметно.
Проходит. Только незаметно.
> Что, прям в машинные коды делает?
Когда дело доходит до кодогенерации под целевой процессор - да, прямо в машинные коды.
> Проходит. Только незаметно.
Нет. Это было на заре развития, когда компилятор C генерировал ассемблерный листинг и скармливал его ассемблеру для кодогенерации. Это время давно прошло.
Когда дело доходит до кодогенерации под целевой процессор - да, прямо в машинные коды.
> Проходит. Только незаметно.
Нет. Это было на заре развития, когда компилятор C генерировал ассемблерный листинг и скармливал его ассемблеру для кодогенерации. Это время давно прошло.
Я конечно может хуйню сморожу, но разве сам машинный код это не есть ассемблер? Напиши любую хуйню на сях, да хоть простой хелло ворлд, скомпилируй, на выходе мы получим исполняемый файл, в зависимости от процессора, операционной системы он будет разного формата, тем не менее открой его через хекс редактор и мы увидем опкоды ассемблера.
Нет, машинный (бинарный) код != ассемблер. Опкоды это машинный код, да, но не ассемблер.
Вообще "ассемблер" это жаргонизм, если это слово используют, подразумевая "язык ассемблера".
Язык ассемблера это низкоуровневый язык программирования, в котором используются символьные имена инструкций, операндов, констант, макросы и многое другое, чего просто не существует на уровне машинного кода.
А непосредственно (макро-)ассемблер это программа, которая транслирует программу на своём языке (языке ассемблера) в объектный код. В комплекте с ассемблером обычно поставляется компоновщик, который позволяет объединять сгенерированные ассемлером файлы объектного кода в библиотеки. А так же редактор связей (линкер), который из объектного кода и, возможно, библиотек создаёт исполняемый файл.
Вообще "ассемблер" это жаргонизм, если это слово используют, подразумевая "язык ассемблера".
Язык ассемблера это низкоуровневый язык программирования, в котором используются символьные имена инструкций, операндов, констант, макросы и многое другое, чего просто не существует на уровне машинного кода.
А непосредственно (макро-)ассемблер это программа, которая транслирует программу на своём языке (языке ассемблера) в объектный код. В комплекте с ассемблером обычно поставляется компоновщик, который позволяет объединять сгенерированные ассемлером файлы объектного кода в библиотеки. А так же редактор связей (линкер), который из объектного кода и, возможно, библиотек создаёт исполняемый файл.
Машинный код - это ноли и единички, ассемблер - это уже более высокоуровневый язык программирования.
"компилятор C генерировал ассемблерный листинг и скармливал его ассемблеру для кодогенерации" - имеется в виду, что раньше ты писал код на С (что-то типа
int x = 0; x = x+1;),
он переваривал его в ассемблер (что-то типа
org 100h
mov dx,msg
mov ah,9
int 21h
mov ah,4Ch
int 21h
msg db 'Hello, World!',0Dh,0Ah,'$'),
который потом превращался в машинный код, который я записать не могу, но выглядит он как-то так:
00100101
10100100
01110101
...
Сейчас же С просто сразу все превращает в 0 и 1.
"компилятор C генерировал ассемблерный листинг и скармливал его ассемблеру для кодогенерации" - имеется в виду, что раньше ты писал код на С (что-то типа
int x = 0; x = x+1;),
он переваривал его в ассемблер (что-то типа
org 100h
mov dx,msg
mov ah,9
int 21h
mov ah,4Ch
int 21h
msg db 'Hello, World!',0Dh,0Ah,'$'),
который потом превращался в машинный код, который я записать не могу, но выглядит он как-то так:
00100101
10100100
01110101
...
Сейчас же С просто сразу все превращает в 0 и 1.
Для тебя есть квест: поправить страницу в Википедии https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80
А именно часть "Компили́ровать — проводить трансляцию машинной программы с предметно-ориентированного языка на машинно-ориентированный язык"
А именно часть "Компили́ровать — проводить трансляцию машинной программы с предметно-ориентированного языка на машинно-ориентированный язык"
Сам, всё сам.
Чтобы написать коммент, необходимо залогиниться