Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

В чем разница между C и ассемблером? Является ли C тем же ассемблером, но в более удобной оболочке?

ПрограммированиеАссемблер
Дарья Гурчавская
  · 3,5 K
Лучший
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 6 окт 2022
Как правило, люди выбирают язык на основе следующих моментов.
Переносимость: Переносимость является наиболее важным фактором при выборе языка. Если исходный код не является переносимым, Вам придется потратить много времени.
Рефакторинг : язык должен быть простым для понимания, иначе на небольшие изменения уйдет большое количество времени.
Доступность: Компилятор и IDE ( Integrated Development Environment ) должны быть легко доступны на рынке, и самое главное, чтобы они были дешевыми.
Эффективность: язык обладает хорошей эффективностью, а количество ошибок должно быть меньше.
===============================================
Каждый язык имеет собственное значение, нельзя назвать какой-либо язык хорошим или плохим. 
Допустим мы использовали только несколько строк ассемблерного кода, помимо всего остального кода, 
который мы написали на C.  Cледующие пункты, которые описывают разницу между C и Ассемблером.
===============================================
1.Язык С обеспечивает переносимость и не зависит от конкретной платформы. Это самое большое преимущество C, и здесь кодер ничего не может изменить при использовании C.  Код, написанный на C, может быть легко повторно использован на другой платформе.  (Unix  VS  IBM System 390)
Ассемблер не обеспечивает переносимость и его  исходный код, специфичен для процессора, поэтому сборка ( редактор связей - Linker ) инструкций зависит от архитектуры процессора.
  1. Программное обеспечение, написанное на ассемблере, работает лучше, чем C. Современные компиляторы C генерируют более оптимизированный ассемблерный код. Компиляторы C обычно оптимизируют лучше, чем вы можете поддерживать своими силами.
  2. В общем, нельзя сказать, что ассемблерный код, сгенерированный компилятором, всегда лучше, потому что, когда человек пишет программное обеспечение на ассемблере, он думает о множестве сценариев, специфичных для требований и процессора, которые не обрабатываются компилятором высокого уровня С(С++).
  3. Я считал, что API, написанный на ассемблере,будет более быстрым. Это основная причина написания подпрограмм memset() и memcpy() на ассемблере. Я думал,что исполняемый файл, созданный на языке ассемблера, имеет меньший размер по сравнению с языком "C", «но это не всегда так»
==========================================
«Является ли C тем же ассемблером, но в более удобной оболочке?»  - Нет. 
Вообще говоря комманда Ассемблера много ближе к машинному коду чем сомманда "С". Но строго говоря это не так Ассемблер генерит микрокод поддержка, которого была в свое время проблемой ( решенной в конце концов ) на ЕС 1046.
C не является «языком низкого уровня». Машинный язык и язык ассемблера (и микрокод в архитектуре микрокода) являются языками низкого уровня. Все остальное, включая "C", является языком высокого уровня.
Хотя "C" (и некоторые другие языки) позволяет вам встраиваться в язык ассемблера, это не меняет того факта, что C является языком высокого уровня. "C"  с примесью ассемблера — это всего лишь смесь "C" (языка высокого уровня) и языка ассемблера (языка низкого уровня). Другими словами, "C" со встроенным языком ассемблера представляет собой смесь двух языков на двух разных уровнях. "C"  можно использовать для некоторого «низкоуровневого программирования», но C не является языком низкого уровня.
Астрономия, криптография  · 8 окт 2022
> В чем разница между C и ассемблером?  Язык C скрывает архитектуру процессора: разрядность, число и природа регистров, виды памяти и т.п. И если для процессоров прошлого века IBM 370, PDP-11, VAX-11 и др., можно было считать, что язык C достаточно близок к системе команд (с учётом идиом (x < < (8*sizeof(x)-s))|(x > > s) циклических сдвигов), то на современных... Читать далее