BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо Ассемблер 3.0/tasm/#1-2
Автор ""
Размер 469003 Байт
Страница 44 из 51
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

     конкретной процедуры, включите имя языка в определение процедуры.
     Вы можете задать язык процедуры,  включив описывающее язык ключе-
     вое слово  в описание процедуры.  Например,  определение в режиме
     MASM процедуры PASCAL может иметь вид:

          .
          .
          .
          pascalproc PROC PASCAL FAR
                    ; тело процедуры

     Турбо Ассемблер 3.0/tasm/#1-2                             = 181 =

          pascalproc ENDP
          .
          .
          .

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

          Турбо Ассемблер  автоматически вставляет в процедуру началь-
     ный код перед первой инструкцией процедуры или перед первой  мет-
     кой ("метка: цель").

          В коде завершения делается следующее:

          - в стеке сохраняется текущий регистр BP;

          - BP настраивается на текущий указатель стека;

          - настраивается  указатель стека для выделения локальных пе-
            ременных;

          - в  стеке  сохраняются  регистры,  заданные  спецификатором
            USES.

            По каждой инструкции RET процедуры Турбо Ассемблер автома-
     тически вставляет в процедуру код завершения (в случае нескольких
     инструкций RET  код  завершения будет вставляться несколько раз).
     Турбо Ассемблер также вставляет код завершения перед переходом на
     любой объектно-ориентированный метод (см. Главу 4).

          Завершающий код  изменяет действие кода инициализации на об-
     ратное. Это делается следующий образом:

          - из стека извлекаются регистры, заданные оператором USES;

          - настраивается указатель стека,  чтобы отбросить  локальные
            аргументы;

          - из стека извлекается сохраненный регистр BP;

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

          Последний шаг кода завершения (отбрасывание аргументов)  вы-
     полняется только  для тех языков,  которые требуют удаления аргу-
     ментов процедуры (например,  Бейсик, Фортран, Паскаль). По согла-
     шениям, принятым в других языках (Си, С++, Пролог), аргументы ос-
     таются в стеке, и удалять их должна вызывающая программа.


     Турбо Ассемблер 3.0/tasm/#1-2                             = 182 =

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

          Для процедур NOLANGUAGE Турбо Ассемблер  не  генерирует  код
     начала и  завершения.  Если в таких процедурах ожидается передача
     аргументов в стеке, вы должны сами включать код начала и заверше-
     ния.

          В общем  случае язык процедуры влияет на процедуру следующим
     образом:



     Турбо Ассемблер 3.0/tasm/#1-2                             = 183 =

                       Как язык влияет на процедуру          Рис. 10.1
     ЪДДДДДДДДДВДДДДДДВДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДВДДДДДДВДДДДДДї
     і Язык    і Нет  іБейсикі Фортрані Паскальі   Си  і С++  іПрологі
     ГДДДДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДЕДДДДДДЕДДДДДДґ
     і Порядок і L-R  і L-R  і  L-R   і  L-R   і  R-L  і R-L  і R-L  і
     і аргу-   і      і      і        і        і       і      і      і
     і ментов  і      і      і        і        і       і      і      і
     і (слева  і      і      і        і        і       і      і      і
     і -напра- і      і      і        і        і       і      і      і
     і во,     і      і      і        і        і       і      і      і
     і справа- і      і      і        і        і       і      і      і
     і налево) і      і      і        і        і       і      і      і





ГДДДДДДДДДЕДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДЕДДДДДДЕДДДДДДґ іКто очи- іпроце-іпроце-іпроцеду-іпроцеду-івызыва-івызы- івызы- і іщает стекідура ідура іра ідура іющая івающаяівающаяі і(вызыва- і і і і іпрог- іпрог- іпрог- і іющая і і і і ірамма ірамма ірамма і іпрограммаі і і і і і і і іили про- і і і і і і і і іцедура) і і і і і і і і АДДДДДДДДДБДДДДДДБДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДБДДДДДДБДДДДДДЩ L-R - слева-направо, R-L - справа-налево. Для включения в файл листинга кода начала и завершения вы можете использовать параметр командной строки /la. Это позволит вам увидеть разницу между языками. Примечание: Более подробную информацию можно найти в Главе 13. Задание модификатора языка ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Модификаторы языка указывают сообщают Турбо Ассемблеру, что в процедуры нужно включать специальный код начала и завершения, организующий интерфейс с Windows и менеджером оверлеев VROOM. Чтобы эти модификаторы использовать, укажите их перед языком про- цедуры в директиве модели или в заголовке процедуры. Допустимыми модификаторами являются модификаторы NORMAL, WINDOWS, ODDNEAR и ODDFAR. Кроме того, вы можете задать используемый по умолчанию моди- фикатор языка в качестве параметра директивы MODEL. Если исполь- зуемый по умолчанию модификатор языка присутствует, то все проце- дуры, в которых не задается модификатор языка, будут использовать соглашения, заданные по умолчанию. Примечание: Подробнее об этом рассказывается в Главе 7. Чтобы задать модификатор языка для конкретной процедуры, включите модификатор языка в конкретную процедуру. Например: Турбо Ассемблер 3.0/tasm/#1-2 = 184 = . . . sample PROC WINDOWS PASCAL FAR ENDP . . . Если вы не задаете модификатор языка, Турбо Ассемблер ис- пользует модификатор языка, заданный в операторе MODEL. Если ди- ректива MODEL отсутствует, или если задан модификатор NORMAL, то Турбо Ассемблер будет использовать стандартный код начала и за- вершения. Если вы выбрали модификатор языка WINDOWS, Турбо Ассемблер генерирует код начала и завершения, позволяющий вам выбирать про- цедуру из Windows. Турбо Ассемблер генерирует специальный код на- чала и завершения только для процедура FAR WINDOWS. Из Windows вы не можете вызвать процедуры NEAR, поэтому специальный код начала и завершения для них не требуется. Процедуры, вызываемые Windows, обычно используют соглашения по вызову, принятые в Паскале (PASCAL). Например: . . . Winoproc PROC WINDOWS PASCAL FAR ARG __hwnd:WORD, __mess:WORD, __wparam:WORD, __lparam:DWORD ; тело процедуры ENDP . . . Примечание: Подробности о процедурах Windows можно уз- нать в документации по Windows. Модификаторы языка ODDNEAR и ODDFAR используются для менед- жера оверлеев VROOM. VROOM имеет два режима операций: oddnear и oddfar. Чтобы увидеть код начала и завершения, который порождают эти модификаторы, вы можете использовать параметр командной стро- ки /la. Определения аргументов и локальных переменных ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Турбо Ассемблер передает аргументы процедурам языка высокого уровня в кадре стека, занося аргументы в стек перед вызовом про- цедуры. Когда в процедуре языка требуются аргументы, она считыва- ет их из стека. Когда процедура возвращает управление, она либо удаляет аргументы из стека (соглашения по вызову Паскаля), либо предполагает, что аргументы удаляются из стека вызывающей прог- Турбо Ассемблер 3.0/tasm/#1-2 = 185 = раммы (соглашения по вызову языка Си). В описании процедуры передаваемые в процедуру через кадр


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.