информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Портрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 С наступающим 
 Серьезная уязвимость в Apache Log4j 
 Крупный взлом GoDaddy 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Для непосвященных - объекты это структуры. 27.10.05 15:19  Число просмотров: 1087
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Структуры это структуры. Объекты это объекты. Связь только
> в том, что и то и то занимает память.

Разница между объектами и структурами лишь в том, что первый член структуры объекта - указатель на таблицу виртуальных методов, а обычные методы объекта вообще компилируются, как самые обыкновенные функции без всякой информации о привязке к конкретному объекту. Всякие там префиксы типа public, private и т.д. работают лишь на этапе компиляции (прошу не тыкать пальцем в сторону .NET и говорить что там все по другому).

> Вот как раз об эмуляции инкапсуляции, полиморфизма и
> наследования.

Это не эмуляция, а полноценная низкоуровневая поддержка (реализация). Эмуляция - это как раз использование макросов для создания подобия объектов.

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

Да, это именно эмуляция, а то, что "выше" - реализация.

> http://en.wikipedia.org/wiki/Assembly_language
> Assembly language or simply assembly is a
> human-readable notation for the machine language that a
> specific computer architecture uses. Machine language, a
> pattern of bits encoding machine operations, is made
> readable by replacing the raw values with symbols called
> mnemonics.


Не вижу противоречий с тем, что я написал выше.
Ключевое слово - human-readable
По твоим словам, так ассемблер должен соответствовать машинным кодам с точностью до префиксов адресации и операндов машинных кодов. Это абсурд! Вот несколько примеров:
1. Даже в старых версиях masm'а под DOS во многих случаях не обязательно указывать размерность операнда, т.к. компилятор и сам может это определить и скомпилировать верную последовательность машинных кодов.
2. Очень многие компиляторы ассемблера понимают директивы компиляции EVEN и ALIGN для выравнивания кода или данных на указанную границу, при этом для кода компилируется последовательность "пустых" машинных кодов типа NOP или пустого ADD, а для данных 0x0. Эти директивы тоже не должны восприниматься компиляторами ассемблера? Я уже не говорю о директивах сегментации...
3. "Поддержка" коментариев в исходнике. (без комментариев)
4. Условные директивы компиляции тоже не относятся к машинным кодам.
Список можно продолжить, но для начала хватит.

К слову о "human-readable": в masm'е есть что-то типа встроенного макроса под названием invoke, позволяющего программисту вызывать функцию по указанному в заголовке программы соглашению без написания кучи push и call - invoke все это делает сам при компиляции. И это уже не эмуляция, а полноценная реализация - полезная возможность для программиста.

> А про "реализацию инструментария" это вообще что-то с
> чем-то. Компилятор ЛЮБОГО языка программирования является
> таким инструментарием, тем не менее все эти языки не
> являются ассемблерами.

Ну и? Microsoft C++ и Borland С++ перестали быть "Си" от того, что каждый производитель привнес что-то своё? Сишный ассемблер перестанет называться ассемблером, если ты начнешь использовать в нем сишные типы данных?

> Когда в C появились объекты его честно назвали сначала
> Objective-C, а потом и C++, когда в Caml появились объекты
> его честно назвали другим именем OCaml, когда в Pascal
> появились объекты его честно назвали другим именем Object
> Pascal, а потом и Delphi. Это все разные языки и только
> ассемблеру по фига, что он уже не имеет ничего общего с тем
> названием которое носит?

Программы называют не столько по их содержимому, сколько руководствуясь маркетинговой политикой.
Смысл называть компилятор ассемблера Borland Object TASM или Microsoft Object MASM32???
<miscellaneous> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach