|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||
Код, который генерируется в результате компиляции26.01.2017, 10:35. Показов 4086. Ответов 16
Метки нет (Все метки)
В общем много где читал что С++ компилируется в машинный код (ассемблер)
А это как известно различные команды типа jmp Но при открытии в редакторе например библиотеки DLL которые написаны на С++ внутри бывают не читаемые крокодилы Эти крокодилы кем то превращаются в машинный код в момент запуска программы? Какие программы вообще понимают этих крокодилов? т.е не человеко-понятные символы, черные пятна в виде символов и т.д и почему не генерируется просто ассемблер а вместо этого эти самые крокодилы? Добавлено через 20 минут Среди этих кракозябр можно найти инструкции ассемблера но все же это не выглядит как нормальный машинный код т.е такой например
0
|
||||||
| 26.01.2017, 10:35 | |
|
Ответы с готовыми решениями:
16
Изменить макрос, который по нажатию клавиши генерируется штрих-код... Парсить сайт, который генерируется на JS Как запретить трафик, который генерируется самим маршрутизатором? |
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
||
| 26.01.2017, 11:06 | ||
|
1
|
||
|
17 / 17 / 4
Регистрация: 10.05.2015
Сообщений: 60
|
|
| 26.01.2017, 11:08 | |
|
(Если этот вопрос не троллинг)
Исполняемый файл имеет сложную структуру, секции данных и кода, заголовки, итд. При этом секция кода содержит не символы, а именно коды машинных команд, которые в символьном редакторе могут отображаться как крокозябры. Можно посмотреть на этот счёт много литературы. Начать можно с Wiki. Можно что то отсюда взять (citforum.ru/programming/windows/machine_code/3.shtml) можно рихтера почитать. Или учебники какие. Студентов вроде учат с этими структурами работать.
2
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 26.01.2017, 11:29 [ТС] | ||||
|
Selot,
То есть сам ассемблер потом конвертируется в 010101010 процессором? Судя по википедии процессор понимает ассемблер. Правильно ли я понимаю: ассемблер хоть и низкоуровневый но все же поддается чтению и пониманию, а процессор знает как его превратить в нолики и единички. В итоге проц получает свои команды а человек хоть какую то читаемость. Так? ![]() Добавлено через 4 минуты
0
|
||||
|
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
||
| 26.01.2017, 11:52 | ||
|
sys_beginner, ассемблерные команды мнемонические. К примеру, команда mov процем воспринимается как набор нулей и единиц, где, грубо говоря, первый байт из этого набора - адрес команды, который вшит в проц, второй байт - регистр/адрес назначения, тертий байт - операнд.
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 26.01.2017, 11:58 [ТС] | ||||
|
UѓweNS»—еЈЃЖ7уTьМє"јS(дEYdл“&€Х(|Ё)ЗLЪХ i.K"Ѕ›pJMP"r7+‡u
0
|
||||
|
17 / 17 / 4
Регистрация: 10.05.2015
Сообщений: 60
|
|
| 26.01.2017, 12:00 | |
|
> Так машинные команды вроде это просто числа. С чего бы символьному редактору отображать числа как кракозябры?
Это байт с значением 0x30 отобразится как пробел в текстовом редакторе, а байт c значением 0x41 - как A. (в кодировке ASCII). а байты с значениями 0x1, .... отобразятся более интересно (как крокозябры). Можно посмотреть таблицу ASCII (https://ru.wikipedia.org/wiki/ASCII). А если учесть что в ходу сейчас "более продвинутые" кодировки (для отображения национальных символов). То тут можно много чего поизучать
1
|
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
||
| 26.01.2017, 12:12 | ||
|
[0xA1] - кракозябра "¡" на что редактор ассемблера покажет mov eax;
1
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||
| 26.01.2017, 12:39 | ||
Сообщение было отмечено Undisputed как решение
РешениеРазница между С++ и языком ассемблера заключается в том, что между машинными инструкциями и командами языка ассемблер существует довольно хорошее соответствие. То есть, ассемблерной команде, понятной человеку, можно сопоставить машинную команду, понятную процессору, и наоборот. Обратный процесс, то есть отображение машинный код -> ассемблерный код, называется дизассемблированием.
2
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 26.01.2017, 12:43 [ТС] | |
|
Raali,
Кажется понял. Я смотрел файл в кодировке UTF-8. А если смотреть через hex редактор то будет нормальное представление likehood, Отлично, спасибо! Код С++ насколько я понимаю превращается в ассемблер, затем ассемблерный компилятор на основе того что сгенерирует С++, создает машинный код, который подходит для архитектуры текущего процессора, верно?
0
|
|
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||
| 26.01.2017, 12:47 | ||
|
2
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 26.01.2017, 12:49 [ТС] | ||
|
А когда делаются вставки _asm, то они так же компилируются в 0101010? Машинные коды насколько я понимаю для каждого процессора свои, выходит компилятор анализирует какой процессор используется и генерирует соответствующий ему машинный код?
0
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
|||
| 26.01.2017, 12:54 | |||
|
1
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 26.01.2017, 12:56 [ТС] | ||
|
Как компилятор тогда узнал какой у меня проц?
0
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||
| 26.01.2017, 13:01 | ||
|
Однако, компилятор может сгенерировать более оптимальный код для конкретного типа процессоров, используя дополнительный набор команд, который этот процессор поддерживает. Но тогда программа не будет запускаться на других процессорах.
1
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 26.01.2017, 13:07 [ТС] | |
|
likehood,
То есть общий набор команд одинаковый у всех современных процессоров, но в то же время каждый проц может иметь дополнительные команды которые есть только у него? Добавлено через 2 минуты likehood, Большое спасибо вы очень помогли
0
|
|
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
|
| 26.01.2017, 13:07 | |
|
1
|
|
| 26.01.2017, 13:07 | |
|
Помогаю со студенческими работами здесь
17
Белое окно в результате компиляции кода openGL
Считывание из файла: в результате вместо единицы выводится ее ASCII код
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|