Ассемблер

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ассемблер

Сообщение beria » 11.01.2017 16:38:22

Если не сложно подскажите как в лазарусе можно подсмотреть ассемлерный код для выбранных программных строк. Помню по времена Борланд и турбо паскалей, начиная с 5.0, можно было получить листинг типа
;Номер строки программы: строка программы
mov ax,cx ; комментарий
и так далее

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

зы: мануалы читал и не нашел....
Аватара пользователя
beria
постоялец
 
Сообщения: 103
Зарегистрирован: 29.09.2016 08:57:13

Re: Ассемблер

Сообщение vitaly_l » 11.01.2017 16:49:40

Компилируем с -al,
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 2985
Зарегистрирован: 31.01.2012 16:41:41

Re: Ассемблер

Сообщение runewalsh » 11.01.2017 16:50:30

Брейкпоинт + Ctrl-Alt-D, ещё можно какой-то там опцией компилятора включить генерацию ассемблерных листингов.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 316
Зарегистрирован: 27.04.2010 00:15:25

Re: Ассемблер

Сообщение vitaly_l » 11.01.2017 16:52:06

Или ещё, вот так, "другой" ассемблер: -Amasm -al,
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 2985
Зарегистрирован: 31.01.2012 16:41:41

Re: Ассемблер

Сообщение beria » 11.01.2017 20:27:47

Всем спасибо.. заработало... Встроенный листинг вообще не информативен, но внешнего листинга добился, правда не понятно почему в файле c расширение *.s и в каталоге с библиотеками....
Куча негатива. С умиление вспоминаю времена тасма.
Может я идиот, но
movl $0,-16(%ebp)
вместо явного и прозрачного
movl $0,i
как было ранее. Я не обязан помнить что десятком экранов выше все было объявлено как # Var i located at ebp-16, size=OS_S32

С директивой asm все хуже.
Элементарный вариант
Код: Выделить всё
    procedure qqq;
    var
      I: integer;
    begin
      I := 0;
      asm
               MOVL    I, %EAX
      end;
    end;}   


Ругается на Fatal: Выбpанный тип ассемблеpа не поддеpживается. И никакие настройки лазазуса и явное указание типа синтаксиса не помогают... :twisted:

ps: кстати, кому интересно, как я и думал, в фрипасе человеческое Inc(Counter, Len) и извращенническое Counter += Len генерируют одинаковый код.
Аватара пользователя
beria
постоялец
 
Сообщения: 103
Зарегистрирован: 29.09.2016 08:57:13

Re: Ассемблер

Сообщение скалогрыз » 11.01.2017 20:51:01

beria писал(а):зы: мануалы читал и не нашел....

Если не секрет, то какие мануалы ты читал?
скалогрыз
долгожитель
 
Сообщения: 1630
Зарегистрирован: 03.09.2008 02:36:48

Re: Ассемблер

Сообщение runewalsh » 11.01.2017 21:17:15

>Куча негатива.
Тебя мягко подводят к мысли не использовать ассемблер...
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 316
Зарегистрирован: 27.04.2010 00:15:25

Re: Ассемблер

Сообщение vitaly_l » 11.01.2017 22:01:19

beria писал(а):Inc(Counter, Len) и извращенническое Counter += Len генерируют одинаковый код.

Одинаково хороший или одинаково плохой, код генерирует?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 2985
Зарегистрирован: 31.01.2012 16:41:41

Re: Ассемблер

Сообщение beria » 11.01.2017 23:04:38

скалогрыз писал(а):Если не секрет, то какие мануалы ты читал?

F1 называется Там про командную строку

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


А придется. Из-за не очень прямой и крайне ресурсоемкой реализации перекодировок в LConvEncoding. Если бы напрямую функции работали со строками типа PChar, кои для потока удобнее и быстрее всего - то проблем бы не было..

vitaly_l писал(а):Одинаково хороший или одинаково плохой, код генерирует?

Хороший. Без всяких лишних джампов. Тут упрекнуть компилятор не могу...
Последний раз редактировалось beria 11.01.2017 23:07:49, всего редактировалось 1 раз.
Аватара пользователя
beria
постоялец
 
Сообщения: 103
Зарегистрирован: 29.09.2016 08:57:13

Re: Ассемблер

Сообщение Azazaz » 11.01.2017 23:06:30

Генерируется через add инструкцию, что как бэ не очень. Хотя в Intel мануалах по оптимизации указывают использовать именно такой подход ибо различные процессоры после выполнения inc инструкции могут разнообразным образом устанавливать флаги состояний (или даже не устанавливать что сильно чревато). Обе инструкции имеют одинаковую скорость исполнения, но inc позволяет сэкономить на размере бинарника.
Azazaz
новенький
 
Сообщения: 38
Зарегистрирован: 21.04.2015 20:00:03

Re: Ассемблер

Сообщение Лекс Айрин » 12.01.2017 09:35:00

Azazaz писал(а):Обе инструкции имеют одинаковую скорость исполнения, но inc позволяет сэкономить на размере бинарника.


И сильно позволяет? А то может там разница съедается при преобразовании в экзешник.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: vk_barnaul, Yandex [Bot] и гости: 4

Рейтинг@Mail.ru