Ассемблер что это: Что такое Ассемблер и почему это круто — Журнал «Код»

Ассемблер Введение

Главная / Ассемблер / Для чайников /

Для начала разберёмся с терминологией.

Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде. Популярно это описано в книге Как стать программистом.

Язык программирования низкого уровня (низкоуровневый язык программирования) – это язык программирования, максимально приближённый к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращённое название команды (мнемоника). Например, команда ADD – это сокращение от слова ADDITION (сложение).

Поэтому использование языка низкого уровня существенно упрощает написание и чтение программ (по сравнению с программированием в машинных кодах). Язык низкого уровня привязан к конкретному процессору. Например, если вы написали программу на языке низкого уровня для процессора PIC, то можете быть уверены, что она не будет работать с процессором AVR.

Язык программирования высокого уровня – это язык программирования, максимально приближённый к человеческому языку (обычно к английскому, но есть языки программирования на национальных языках, например, язык 1С основан на русском языке). Язык высокого уровня практически не привязан ни к конкретному процессору, ни к операционной системе (если не используются специфические директивы).

Язык ассемблера – это низкоуровневый язык программирования, на котором вы пишите свои программы. Для каждого процессора существует свой язык ассемблера.

Ассемблер – это специальная программа, которая преобразует (компилирует) исходные тексты вашей программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением EXE или COM). Если быть точным, то для создания исполняемого файла требуются дополнительные программы, а не только ассемблер. Но об этом позже…

В большинстве случаев говорят «ассемблер», а подразумевают «язык ассемблера». Теперь вы знаете, что это разные вещи и так говорить не совсем правильно. Хотя все программисты вас поймут.

ВАЖНО!
В отличие от языков высокого уровня, таких, как Паскаль, Бейсик и т.п., для КАЖДОГО АССЕМБЛЕРА существует СВОЙ ЯЗЫК АССЕМБЛЕРА. Это правило в корне отличает язык ассемблера от языков высокого уровня. Исходные тексты программы (или просто «исходники»), написанной на языке высокого уровня, вы в большинстве случаев можете откомпилировать разными компиляторами для разных процессоров и разных операционных систем.

С ассемблерными исходниками это сделать будет намного сложнее. Конечно, эта разница почти не ощутима для разных ассемблеров, которые предназначены для одинаковых процессоров. Но в том то и дело, что для КАЖДОГО ПРОЦЕССОРА существует СВОЙ АССЕМБЛЕР и СВОЙ ЯЗЫК АССЕМБЛЕРА. В этом смысле программировать на языках высокого уровня гораздо проще. Однако за все удовольствия надо платить. В случае с языками высокого уровня мы можем столкнуться с такими вещами как больший размер исполняемого файла, худшее быстродействие и т.п.

В этой книге мы будем говорить только о программировании для компьютеров с процессорами Intel (или совместимыми). Для того чтобы на практике проверить приведённые в книге примеры, вам потребуются следующие программы (или хотя бы некоторые из них):

  1. Emu8086. Хорошая программа, особенно для новичков. Включает в себя редактор исходного кода и некоторые другие полезные вещи. Работает в Windows, хотя программы пишутся под DOS. К сожалению, программа стоит денег (но оно того стоит))). Подробности см. на сайте http://www.emu8086.com.
  2. TASM – Турбо Ассемблер от фирмы Borland. Можно создавать программы как для DOS так и для Windows. Тоже стоит денег и в данный момент уже не поддерживается (да и фирмы Borland уже не существует). А вообще вещь хорошая.
  3. MASM – Ассемблер от компании Microsoft (расшифровывается как МАКРО ассемблер, а не Microsoft Assembler, как думают многие непосвящённые). Пожалуй, самый популярный ассемблер для процессоров Intel. Поддерживается до сих пор. Условно бесплатная программа. То есть, если вы будете покупать её отдельно, то она будет стоить денег. Но она доступна бесплатно подписчикам MSDN и входит в пакет программ Visual Studio от Microsoft.
  4. WASM – ассемблер от компании Watcom. Как и все другие, обладает преимуществами и недостатками.
  5. Debug — обладает скромными возможностями, но имеет большой плюс — входит в стандартный набор Windows. Поищите ее в папке WINDOWS\COMMAND или WINDOWS\SYSTEM32. Если не найдете, тогда в других папках каталога WINDOWS.
  6. Желательно также иметь какой-нибудь шестнадцатеричный редактор. Не помешает и досовский файловый менеджер, например Волков Коммандер (VC) или Нортон Коммандер (NC). С их помощью можно также посмотреть шестнадцатеричные коды файла, но редактировать нельзя. Бесплатных шестнадцатеричных редакторов в Интернете довольно много. Вот один из них: McAfee FileInsight v2.1. Этот же редактор можно использовать для работы с исходными текстами программ. Однако мне больше нравится делать это с помощью следующего редактора:
  7. Текстовый редактор. Необходим для написания исходных текстов ваших программ. Могу порекомендовать бесплатный редактор PSPad, который поддерживает множество языков программирования, в том числе и язык Ассемблера.

Все представленные в этой книге программы (и примеры программ) проверены на работоспособность.

И именно эти программы используются для реализации примеров программ, приведённых в данной книге.

И еще – исходный код, написанный, например для Emu8086, будет немного отличаться от кода, написанного, например, для TASM. Эти отличия будут оговорены.

Большая часть программ, приведённых в книге, написана для MASM. Во-первых, потому что этот ассемблер наиболее популярен и до сих пор поддерживается. Во-вторых, потому что он поставляется с MSDN и с пакетом программ Visual Studio от Microsoft. Ну и в третьих, потому что я являюсь счастливым обладателем лицензионной копии MASM.

Если же у вас уже есть какой-либо ассемблер, не вошедший в перечисленный выше список, то вам придётся самостоятельно разобраться с его синтаксисом и почитать руководство пользователя, чтобы научиться правильно с ним работать. Но общие рекомендации, приведённые в данной книге, будут справедливы для любых (ну или почти для любых) ассемблеров.


Ассемблер это что? Компилятор/интерпритатор/нечто уникальное?

 
wHammer ©   (2007-02-08 09:24) [0]

Помогите разобраться пожалуйста? Информация на различных информационных сайтах весьма противоречива.

С наилучшими…
Александр.


 
Алхимик ©   (2007-02-08 09:28) [1]

http://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80


 
wHammer ©   (2007-02-08 09:35) [2]


> Алхимик ©   (08.02.07 09:28) [1]

Это все понятно. Но я могу тоже привести http://www.softcraft.ru/translat/lect/t01-02. shtml и отттуда:

Транслятор — обслуживающая программа, преобразующая исходную программу, предоставленную на входном языке программирования, в рабочую программу, представленную на объектном языке.

Приведенное определение относится ко всем разновидностям транслирующих программ. Однако у каждой из таких программ могут иметься свои особенности по организации процесса трансляции. В настоящее время трансляторы разделяются на три основные группы: ассемблеры, компиляторы и интерпретаторы.

Интересно личное мнение форумчан по этому поводу?


 
palva ©   (2007-02-08 09:35) [3]

Компилятор.


 
@!!ex ©   (2007-02-08 09:42) [4]

Язык программирования? 🙂


 
TUser ©   (2007-02-08 09:43) [5]

> Интересно личное мнение форумчан по этому поводу?

Ну, что ж. Скажу тебе свое личное мнение — мне пофиг. Хоть горшком назови, только в печь не ставь.


 
wHammer ©   (2007-02-08 09:44) [6]


> Ну, что ж. Скажу тебе свое личное мнение — мне пофиг. Хоть
> горшком назови, только в печь не ставь.

Понятно, а мне вот нет.


 
Сергей М. ©   (2007-02-08 10:02) [7]


> wHammer ©   (08.02.07 09:44) [6]

Ассемблер — это, прежде всего, язык программирования.

Любую среду программирования, использующую этот язык для создания программ, часто тоже называют «ассемблером», такие среды используют механизм компилирующего типа, т.к. результатом ассемблирования является код, ориентированный на исполнение той или иной исполняющей системой, например, процессором.


 
Сергей М. ©   (2007-02-08 10:06) [8]


> wHammer

В нек.случаях ассемблерные программы интерпретируются, например, для пошаговой отладки программного кода в условиях отсутствия целевой исполняющей системы (режим эмуляции целевой системы команд)


 
wHammer ©   (2007-02-08 10:14) [9]


> Сергей М. ©   (08.02.07 10:02) [7]

Язык ассемблера. Язык программирования низкого уровня.
Язык получил свое название от слова ассемблер (lang-en|assembler — сборщик) — названия транслятора (компилятора) c языка ассемблера. Язык ассемблера, в некоторых случаях, для краткости, называют «ассемблером» (а что-то связанное с ним — «ассемблерный»), но в общем случае это неправильно. Также, сам ассемблер (программу) никогда не называют -компилятором языка ассемблера или компилятором ассемблера (разве что в редких случаях).


 
wHammer ©   (2007-02-08 10:16) [10]

…отсюда http://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80%D0%B0


 
TUser ©   (2007-02-08 10:20) [11]

А какая разница, как классифицировать этот объект. О чем речь идет — и там всем понятно.


 
wHammer ©   (2007-02-08 10:27) [12]


> TUser ©   (08.02.07 10:20) [11]

Да нет, не все, т. к. интересует процесс преобразования ассемблер-программы в машинные коды. Как мне кажется, этот процесс — практичеки типичный процесс компиляции, ну за некоторыми исключениями. Но есть иное мнение, например:

Ассемблер (транслятор языка ассемблера), своего рода компилятор – берётся программа, написанная на языке ассемблера (исходный текст) и переводится в машинный код. Однако есть некоторые различия. Когда компилятор делает перевод с одного языка на другой, предполагается получить программу на целевом языке, который будет управлять программой теми же самыми методами и давать те же самые результаты. Подобно выбору между языками программирования различного строения, но выполняющих одну и ту же работу, компилятор имеет свободу выбора – одновременно предполагая, что выбор будет оптимальным. Различные компиляторы, переводящие программы с языка на язык могут давать весьма различные результаты, даже при том, что программы будут делать одно и тоже. В этом плане танслятор языка ассемблера немного отличается, так как инструкции языка ассемблера точно соответствуют машинным кодам, на которые они переведены. В большинстве случаев мы точно знаем какие байты будут переведены языком ассемблера. В данном случае работа транслятора подобна работе интепритатора. Это наиболее очевидно при рассмотрении следующей директивы:
       db 90h
котороя указывает транслятору на необходимость поместить один байт с информацией (90h) в текущую позицию в шестнадцетиричном коде. В данном случае работа транслятора ассемблера больше похожа на работу интерпритатора, а машинный код произведённый транслятором – просто перевод с языка исходной программы.
Когда кто-то пишет программу на языке ассемблера, он обычно думает, что программа, которую он пишет, написана на машинном коде – ассемблере, только выполняется эта задача по созданию программы, на более простом к восприятию машинном языке, обеспечивающем более лёгкое запоминание имён инструкций (называемых мнемоникой). Ещё этот машинный язык разрешает маркировать различные места в памяти, а затем вычислять соответствующие адреса и смещения автоматически. При написании некоторой простой последовательности инструкций на языке ассемблера:
       mov ax, 4C00h
       int 21h
никто обычно не думает о том, как интерпретируются эти директивы, каким получается машинный код.
Но фактически имеются две программы, слитые вместе (компилятор и интерпритатор). Это наделяет ассемблер новым качеством: инструмент, который, оказывается и компилятором и интерпритатором одновременно.
Рассмотрим две простые команды языка ассемблера. Они прибавляют EAX к самому себе, повторяя этот процесс пять раз. Первая команда (mov) использует ECX, чтобы считать количество повторений:
       mov   ecx,5
square: add   eax,eax
       loop   square  
Транслятор переводит три инструкции в машинный код и приводит их в действие, которое добавляет EAX к самому себе. Это повторяется пять раз, пока процессор выполняет машинный код. Каждый проход уменьшает ECX на единицу и, в случае если ECX – все еще не ноль, переходит обратно к метке (square).
Так как ассемблер является и компилятором и интерпритатором одновременно, то ни один из этих терминов не даёт полного представления о работе транслятора языка ассемблера.

Оригиал:

Assembler as a compiler and assembler as an interpreter
The implementations of programming languages are divided into two main classes: compilers and interpreters. The interpreter is a program which takes a program written in some language and executes it. And the compiler is simply a program that translates program written in one language into another one — the most commonly the target language is the machine language, so the result can be then executed by the machine.
From this point of view, the assembler appears to be a kind of compiler — it takes the program written in assembly language (the source code) and translates it into machine language. However there are some differences. When compiler does the translation from one language to another, it is expected to make the program in the target language that will run (when executed by some interpreter or processor) the same way and give the same results. But in exact details like choosing between many possible language constructs that would do the same, the compiler has freedom of choice — while it is expected to make possibly the best choice, the various compilers translating between the same two languages may give quite different results, even though the programs will do the same. The assembler is a bit different in this aspect, as there is a kind of exact correspondence between the instructions of assembly language and the instructions of machine language they are translated to. In fact in most cases you know what bytes exactly will be generated by the assembly language construct. This is what in fact makes assembler behave a bit like interpreter. This is the most obvious in the case of directives like:
       db      90h
which tells the assembler to put the one byte with value 90h at the current position in the output code. This is more like if the assembler was an interpreter, and the machine language generated by assembler was simply an output of the interpreted program. Even the instructions, which in fact represent the machine language instructions they are translated to, can be considered to be actually the directives that tell assembler to generate the opcode of given instruction and place it at current position in output.
Also one can put no instruction mnemonics at all into the source code, and use only DB directives to create, for instance, just some text. In such case the output is not a program at all, as it doesn»t contain any machine language instructions. This makes assembler appear to be really an interpreter.
But when someone writes the program in assembly language, he usually thinks about the program he writes in machine language — assembler just makes the task of creating program in machine language easier, providing easy to memorize names for instructions (called mnemonics for that very reason), allowing to label various places in memory and other values with names and then calculating the appropriate addresses and displacements automatically. When writing some simple sequence of instructions in assembly language:
       mov     ax,4C00h
       int     21h
one usually doesn»t think about them as interpreted directives that generate the machine language instructions. One does think as if they actually were the instructions which they generate, one thinks in terms of the program he writes with the assembly language, not the program he writes in assembly language. But there are actually those two programs merged together, two different layers of thinking in one source code. This makes assembler a new quality: a tool that appears to be both compiler and interpreter at the same time.


 
wHammer ©   (2007-02-08 10:30) [13]


Объяснение не очень, но ключевая фраза здесь:

Так как ассемблер является и компилятором и интерпритатором одновременно, то ни один из этих терминов не даёт полного представления о работе транслятора языка ассемблера.


 
@!!ex ©   (2007-02-08 10:40) [14]

Бред. Или у енмя уж совсем не правильное определение «интрепритатора» забито.


 
evvcom ©   (2007-02-08 10:41) [15]

> [12] wHammer ©   (08. 02.07 10:27)
> В данном случае работа транслятора ассемблера больше похожа
> на работу интерпритатора

Чушь какая-то. В моем понимании:
1. Компилятор — программа, преобразующая исходный код в объектный.
2. Транслятор — то же, что и компилятор, за исключением того, что выполняется однозначное преобразование: одна инструкция — одна машинная команда.
3. Интерпретатор — программа, которая преобразует исходный текст или некий оптимизированный, но все же еще виртуальный, во время выполнения в некие инструкции и далее их выполняет.

Транслятор с языка ассемблера не выполняет исходный код (текст), написанный программистом, потому называть его интерпретатором просто в корне неверно.


 
Desdechado ©   (2007-02-08 11:00) [16]

Сложности с толкованием связаны, имхо, с тем, что ранние компиляторы выполняли трансляцию не сразу в машинные коды, а в промежуточный ассемблерный код, который уже дополнительно транслировался в машинный. Эта двухфазность (не считая компоновки) и вызывает «три основные группы: ассемблеры, компиляторы и интерпретаторы».
Такая двухфазность хорошо документирована на советских многотерминальных машинных комплексах, которые я застал в нашем ХНУРЭ.


 
Сергей М. ©   (2007-02-08 11:19) [17]


> evvcom ©   (08.02.07 10:41) [15]

1. Совершенно верно. Следует лишь уточнить, что результирующий «объектный код» нельзя рассматривать без жесткой привязки к целевой исполняющей системе, каковой м.б. как «железо» (процессор), так и «софт» (виртуальная машина, например, java-машина)

2. Не согласен. Трансляторы выполняют преобразование языковых конструкций входного языка программирования в логически эквивалентные им языковые конструкции выходного языка программирования. Среды же транслирующего типа, как правило, сочетают в себе функции транслятора и компилятора — программа, к примеру, на Фортране в ходе обработки средой транслируется сначала в промежуточное языковое представление (низкоуровневое, традиционно ассемблерное), а уж затем (опционально) компилирует промежуточный рез-т в объектный код.

3. Ассемблерные среды интерпретирующего типа имеют право на существование и довольно широко распространены, скажем, для интерактивной трассировки/отладки на эмулирующих виртуальных машинах кода для целевых машин с иной системой команд.


 
Плохиш ©   (2007-02-08 11:23) [18]

Классная ветка, не думал, что философов уже тоже заставляют изучать программирования, са ещё и на ассемблере :-))


 
wHammer ©   (2007-02-08 11:46) [19]


> Desdechado ©   (08.02.07 11:00) [16]
> Сложности с толкованием связаны, имхо, с тем, что ранние
> компиляторы выполняли трансляцию не сразу в машинные коды,
>  а в промежуточный ассемблерный код, который уже дополнительно
> транслировался в машинный. Эта двухфазность (не считая компоновки)
> и вызывает «три основные группы: ассемблеры, компиляторы
> и интерпретаторы».
> Такая двухфазность хорошо документирована на советских многотерминальных
> машинных комплексах, которые я застал в нашем ХНУРЭ.

Вот это, как мне кажется основное. Спасибо. Теперь более менее понятно откуда ноги растут.


> Плохиш ©   (08.02.07 11:23) [18]
> Классная ветка, не думал, что философов уже тоже заставляют
> изучать программирования, са ещё и на ассемблере :-))

Это почемуже сразу такое предвзятое обо мне мнение? :))


 
evvcom ©   (2007-02-08 12:58) [20]

> [17] Сергей М. ©   (08.02.07 11:19)
> 2. Не согласен.

Ну пусть будет так. Не возражаю. Мое понимание в общем основывалось на некотором опыте знакомства в былые времена с ассемблером и только. С Фортраном же я близко не знакомился. В принципе твое пояснение лишь немного расширило мое представление о трансляторах. Согласен, что я слишком узко его изобразил в [15] 🙂


 
Сергей М. ©   (2007-02-08 13:06) [21]


> evvcom ©   (08.02.07 12:58) [20]

Строго говоря, сравнивать или противопоставлять «Трансляторы/Компиляторы» vs «Интерпретаторы» не уместно.


 
evvcom ©   (2007-02-08 13:15) [22]

> [21] Сергей М. ©   (08.02.07 13:06)

Угу, согласен. Я и не пытался. Кстати,

> [17] Сергей М. ©   (08.02.07 11:19)
> 3. Ассемблерные среды интерпретирующего типа

я бы все ж назвал просто эмуляторами. Понятное дело, что все они интерпретирующего типа, причем совсем неважно, что берется за источник: текст на языке ассемблера или «исполняемый» код.


 
Чапаев ©   (2007-02-08 14:29) [23]

> Бред. Или у енмя уж совсем не правильное определение «интрепритатора»
> забито.
У етбя слова с ошибками. Откуда правильному определению взяться? %-)

> [17] Сергей М. ©   (08.02.07 11:19)
Компилятор и интерпретатор — два вида трансляторов, которые так или иначе исходный текст программы транслируют в машинный код.


 
evvcom ©   (2007-02-08 14:30) [24]

> [23] Чапаев ©   (08.02.07 14:29)
> Компилятор и интерпретатор — два вида трансляторов, которые
> так или иначе исходный текст программы транслируют в машинный
> код.

Это интерпретатор транслирует в машинный код? LOL 🙂


 
Сергей М.  ©   (2007-02-08 14:46) [25]


> Чапаев ©   (08.02.07 14:29) [23]

Интерпретатор ничего не «транслирует», он интерпретирует вх.языковые конструкции «шаг за шагом», вызывая при этом на выполнение уже имеющиеся участки нативного кода, реализующего логику текущей интерпретируемой языковой конструкции.


 
Чапаев ©   (2007-02-08 16:04) [26]

> Это интерпретатор транслирует в машинный код?
Если программа исполняется, то она так или иначе транслируется в машинный код, нес па?


 
Сергей М. ©   (2007-02-08 16:09) [27]


> Чапаев ©   (08.02.07 16:04) [26]
>


> Если программа исполняется

Кем исполняется ? Процессором ? Виртуальной машиной ?
Определись уже . ..


 
evvcom ©   (2007-02-08 16:12) [28]

> [26] Чапаев ©   (08.02.07 16:04)

Программа эта исполняется в интерпретаторе, т.е. в тех функциях/процедурах, которые к программисту-пользователю не имеют никакого отношения, а значит и к машинному коду. Вот если бы ты сказал «к коду виртуальной машины» про интерпретатор, я б еще согласился, но с выражением «машинный код» AFAIK связывают именно инструкции для процессора.

> нес па?

это на каком? Французский я не знаю совсем.


 
Чапаев ©   (2007-02-08 16:17) [29]

> Кем исполняется ? Процессором ? Виртуальной машиной ?
А процессор — не «виртуальная машина для машинного кода»? 😉


 
Чапаев ©   (2007-02-08 16:19) [30]

> [29] Чапаев ©   (08. 02.07 16:17)
+ туда же проц, который нативно исполняет жабовский байт-код. Не помню только, сумели его сделать или плюнули


 
Сергей М. ©   (2007-02-08 16:40) [31]


> Чапаев ©   (08.02.07 16:17) [29]


> процессор — не «виртуальная машина для машинного кода»?

С каких пор «железный» процессор стал «виртуальной машиной» ?


> проц, который нативно исполняет жабовский байт-код

Пример такого «железного» процессора ты, разумеется, не приведешь, ибо «не помнишь»)


 
Чапаев ©   (2007-02-08 16:57) [32]

> Пример такого «железного» процессора ты, разумеется, не
> приведешь, ибо «не помнишь»)
Могу, конечно, поискать в стопке журналов статью об этом. .. Но, как я уже сказал, я даже не знаю, довели ли разработку до конца.


 
Чапаев ©   (2007-02-08 17:05) [33]

> [32] Чапаев ©   (08.02.07 16:57)
Гм… Статью нашёл в «Компьютерном обозрении» №10 за 1998 год.

Вот ещё статьи нагуглил: http://www.osp.ru/nets/1997/01/142118, http://www.osp.ru/os/1999/01/179635.


 
Stexen ©   (2007-02-08 18:39) [34]


> Помогите разобраться пожалуйста? Информация на различных
> информационных сайтах весьма противоречива.

Компилятор — это программа
Интерпритатор — программа
Ассемблер — язык программирования низкого уровня — стандарта вообще говоря нет, для каждого процессора обычно свой… Хотя, вообще говоря, последнее утверждение вполне противоречиво, все опять таки же будет зависеть от компилятора, но с другой стороны для создания компилятора для языка ассемблера под конкретный процессор должен быть стандарт, т. о. для каждого процессора могут быть свои стандарты, соответсвенно Язык ассемблера некий абстрактный класс, имеющий множество классов детей — являющимися реализациями языка под конкретный тип процессора. А вообще wasm.ru есть!
Может ничего нового не сказал(лень все перечитывать) так что извените за флуд если что…


 
oldman ©   (2007-02-08 18:43) [35]

Анекдот из прошлого:

Купили мы как-то новую версию ассемблера.
Скопировали ее на диск.
Папку-то надо как-то назвать…
Так и назвали — ASS (блин, мозгов не хватило назвать TASM)
Пришел зав.отделом.
Долго пялился в монитер с медленно расширяющимися глазами.
Потом аккуратно подвел курсор к данной папке и нажал Ентер.
А ТАМ АССЕМБЛЕР!!! :))))))))))))


 
GrayFace ©   (2007-02-08 19:10) [36]

Уж точно не интерпретатор.

wHammer ©   (08.02.07 10:27) [12]
Бред какой-то. Вначале автор четко пишет, что интерпретатор исполняет программу, потом говорит о какой-то однозначности соответствия, чотя ежу понятно, Ассемблер ничего не исполняет, значит не удволитворяет его же определению.

evvcom ©   (08.02.07 10:41) [15]
3. Интерпретатор — программа, которая преобразует исходный текст или некий оптимизированный, но все же еще виртуальный, во время выполнения в некие инструкции и далее их выполняет.

Преобразовывать он ничего не должен. Если преобразует, то это уже Just in Time компилятором попахивает.

Чапаев ©   (08.02.07 16:04) [26]
Если программа исполняется, то она так или иначе транслируется в машинный код, нес па?

Не она. Исполняется код интерпретатора, программа ни к чему не приобразуется.


 
GrayFace ©   (2007-02-08 19:11) [37]

P. S. ИМХО


 
oldman ©   (2007-02-08 19:14) [38]


> GrayFace ©   (08.02.07 19:10) [36]
> Чапаев ©   (08.02.07 16:04) [26]
> Если программа исполняется, то она так или иначе транслируется
> в машинный код, нес па?
> Не она. Исполняется код интерпретатора, программа ни к чему
> не приобразуется.

Слова спиши…
Буду потомкам показывать в назидание…


 
oldman ©   (2007-02-08 19:18) [39]


> GrayFace ©   (08.02.07 19:10) [36]

Без обид:

По анкете — 20 лет.
Пора бы уж где-нибудь почитать, чем компилятор отличается от интерпретатора и как они работают с исходным текстом программы…
Чтобы больше вышеизложенного тобой не писать в форум программистов.


 
GrayFace ©   (2007-02-08 22:25) [40]

oldman ©   (08.02.07 19:18) [39]
По анкете — 20 лет.

19.

oldman ©   (08.02.07 19:18) [39]
Пора бы уж где-нибудь почитать, чем компилятор отличается от интерпретатора и как они работают с исходным текстом программы…

http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80
Видимо, Вы плохо читали мой пост.


Ассемблер — Какая польза от Ассемблера? — Работа на Ассемблере…

Ассемблер

Ассемблер — это тип компьютерной программы, которая интерпретирует программы, написанные на языке ассемблера, в машинный язык, код и инструкции, которые могут быть выполнены компьютером. Это позволяет разработчикам программного обеспечения и приложений получать доступ, работать и управлять аппаратной архитектурой и компонентами компьютера. Иногда его называют компилятором языка ассемблера. Также предоставляет услуги переводчика.

Ассемблер в первую очередь служит связующим звеном между символьно закодированными инструкциями, написанными на языке ассемблера, и компьютерным процессором, памятью и другими вычислительными компонентами. Ассемблер работает, собирая и преобразовывая исходный код языка ассемблера в объектный код или объектный файл, который представляет собой поток нулей и единиц машинного кода, которые непосредственно исполняются процессором.

Они классифицируются на основе того, сколько раз им нужно прочитать исходный код перед его переводом; существуют как однопроходные, так и многопроходные ассемблеры. Кроме того, некоторые высокопроизводительные ассемблеры обеспечивают расширенную функциональность, позволяя использовать операторы управления, службы абстракции данных и обеспечивая поддержку структур объектно-ориентированного программирования.

В компьютерном программировании язык ассемблера (или язык ассемблера ), иногда сокращенно asm , — это любой язык программирования низкого уровня, в котором существует очень сильное соответствие между инструкциями на языке и машинным кодом архитектуры. инструкции. Поскольку ассемблер зависит от инструкций машинного кода, каждый язык ассемблера предназначен только для одной конкретной компьютерной архитектуры. Язык ассемблера также может называться символьным машинным кодом.

Какая польза от ассемблера?

Ассемблер используется для перевода программы, написанной на языке ассемблера, в машинный код. Исходная программа является входом ассемблера, который содержит инструкции на языке ассемблера. Выход, сгенерированный ассемблером, представляет собой объектный код или машинный код, понятный компьютеру.

Как работает ассемблер?

Ассемблер — это программа, преобразующая язык ассемблера в машинный код. Он берет основные команды и операции из ассемблерного кода и преобразует их в двоичный код, который может быть распознан процессором определенного типа. Ассемблер похож на компилятор в том, что он создает исполняемый код.

Каковы особенности ассемблера?
  • Унифицированный язык ассемблера (UAL) для кода ARM и Thumb.
  • Векторные инструкции с плавающей запятой (VFP) в коде ARM и Thumb.
  • Директивы в исходном коде сборки.
  • Обработка пользовательских макросов.
Зачем мне изучать ассемблер?

Язык ассемблера дает вам полный контроль над ресурсами системы. Подобно сборочной линии, вы пишете код для помещения отдельных значений в регистры, напрямую работаете с адресами памяти для извлечения значений или указателей.

Насколько сложен язык ассемблера?

Однако изучение ассемблера не намного сложнее, чем изучение вашего первого языка программирования. Ассемблер трудно читать и понимать. Также довольно легко писать программы на C, Prolog и APL, которые невозможно прочитать. С опытом вы обнаружите, что ассемблер так же легко читается, как и другие языки.

Является ли язык ассемблера языком программирования?

Язык ассемблера — это тип языка программирования низкого уровня, предназначенный для прямого взаимодействия с аппаратным обеспечением компьютера. В отличие от машинного языка, состоящего из двоичных и шестнадцатеричных символов, языки ассемблера предназначены для чтения людьми.

Что такое директивы ассемблера?

Директивы — это инструкции, используемые ассемблером для автоматизации процесса сборки и улучшения читаемости программы. Примерами распространенных директив ассемблера являются ORG (происхождение), EQU (equate) и DS. B (определить место для байта). Директивы используются в основном на этапе предварительной обработки процесса сборки.

Используют ли хакеры язык ассемблера?

Язык ассемблера помогает хакеру манипулировать системами прямо на архитектурном уровне. Это также наиболее подходящий язык программирования для создания вредоносных программ, таких как вирусы и трояны. Сборка также является предпочтительным выбором, если вы хотите перепроектировать часть программного обеспечения, которое уже было скомпилировано.

Какое программное обеспечение используется для программирования на ассемблере?

К ним относятся MASM (макроассемблер от Microsoft), TASM (турбоассемблер от Borland), NASM (сетевой ассемблер для Windows и Linux) и ассемблер GNU, распространяемый фондом свободного программного обеспечения.

Образец должностной инструкции сборщика | Работающий

В обязанности сборщика входит:

  • Чтение и понимание инструкций и соблюдение установленных процедур
  • Сбор всех материалов и оборудования, необходимых для начала процесса
  • Выполнение точных измерений для обеспечения идеальной подгонки компонентов

Краткое описание работы

Мы ищем квалифицированного сборщика для соединения деталей в более сложные компоненты. Вы убедитесь, что все детали подходят правильно и подходят для конечного продукта. Вы будете использовать свои руки или машины, чтобы выполнять работу с большей точностью.

Вы должны обладать хорошими техническими знаниями и большой ловкостью рук. Чрезвычайно важно умение читать инструкции, представленные в руководствах, чертежах, схемах и т. д., и точно следовать им.

Цель состоит в том, чтобы производить сложные продукты путем объединения более мелких компонентов.

Обязанности

  • Читать и понимать инструкции и следовать установленным процедурам
  • Собрать все материалы и оборудование, необходимые для начала процесса
  • Проведение точных измерений для обеспечения идеальной подгонки компонентов
  • Выберите или измените компоненты в соответствии с размерами и спецификациями
  • Выровнять материал и собрать детали для создания более сложных блоков
  • Проверить вывод, чтобы убедиться в высочайшем качестве
  • Поддержание оборудования в хорошем состоянии
  • Вести учет объемов производства и времени
  • Отчет о проблемах, неисправностях или неисправных деталях

Требования и навыки

  • Опыт работы сборщиком
  • Технические знания и умение читать чертежи, чертежи и т. д.
  • Умение пользоваться инструментами (например, зажимами) и машинами (например, прессами)
  • Хорошее понимание принципов контроля качества
  • Хорошие коммуникативные навыки (устные и письменные)
  • Отличная зрительно-моторная координация и физическое состояние
  • Диплом средней школы; Высшее образование техникума будет оценено

Часто задаваемые вопросы

Что делает ассемблер?

Сборщики строят и обслуживают сервисное оборудование. Кроме того, они устраняют неполадки на производстве в целях контроля качества и следят за тем, чтобы все расходные материалы оставались доступными, чтобы они могли эффективно выполнять работу.

Каковы обязанности и ответственность сборщика?

Сборщики несут ответственность за производство компонентов путем сборки деталей и узлов. Они читают чертежи, схемы или инструкции по сборке, чтобы определить, что необходимо на их рабочих местах, прежде чем приступить к работе.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *