Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2011, 10:43   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Машинный код pascal

Доброго времени суток.Возник вопрос есть ли у Паскаль какая то возможность просмотреть машинный код?Заранее благодарен.
Nicko_mt вне форума Ответить с цитированием
Старый 22.05.2011, 11:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

В самом Турбо Паскале нет. Но есть примочка к нему - Turbo Debuger. Он то как раз дизассемблирует.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2011, 18:32   #3
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Просто я искал процедуру сложения в inline виде.Достаточно специфичное дело.Гуглил я много но это даже не ассемблер а машинный код поскольку инлайном только он и вкрапливается в программный код.Если кто то сталкивался с примером сложения двух чисел в инлайновом виде отпишитесь пожалуйста.
Nicko_mt вне форума Ответить с цитированием
Старый 22.05.2011, 23:20   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Достаточно специфичное дело

да ладно, что там такого специфичного?

> но это даже не ассемблер а машинный код поскольку инлайном только он и вкрапливается в программный код

дашовыговорите

> Если кто то сталкивался с примером сложения двух чисел в инлайновом виде отпишитесь пожалуйста

inline деректива поддерживается начиная с Delphi 2005. Про free pascal не знаю, но тоже с какого-то монента поддерживается. Вот исходник программы:

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function sum(a, b: integer): integer; inline;
begin
  result := a + b;
end;

var
  a, b, c: integer;
begin
  a := 3;
  b := 6;
  c := sum(a, b);
  writeln(c);
end.
а вот, что делает из него компилятор (жирное выделение — сложение).

Код:
a := 3;
  0040A179 B803000000       mov eax,$00000003
b := 6;
  0040A17E BA06000000       mov edx,$00000006
c := sum(a, b);
  0040A183 8D1C02           lea ebx,[edx+eax]
writeln(c);
  0040A186 A14CBC4000       mov eax,[$0040bc4c]
  0040A18B 8BD3             mov edx,ebx
  0040A18D E89297FFFF       call @Write0Long
  0040A192 E8B997FFFF       call @WriteLn
  0040A197 E8788FFFFF       call @_IOTest
всё банально.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi и машинный код. Создание файлов в Delphi 7. organic Помощь студентам 6 21.04.2010 13:16
7-битный код PASCAL ioda1986 Помощь студентам 1 23.02.2010 17:45
Перевести код с Pascal в C++ gigaman Общие вопросы C/C++ 1 26.03.2008 12:18