посмотреть генерируемый асм-код ?

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

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

посмотреть генерируемый асм-код ?

Сообщение Devil » 10.12.2008 14:37:51

Каким удобным образом посмотреть генерируемый асм-код ? Желательно из IDE Lazarus.
Devil
новенький
 
Сообщения: 40
Зарегистрирован: 10.12.2008 09:56:33

Re: посмотреть генерируемый асм-код ?

Сообщение shade » 10.12.2008 20:56:44

добавить в fpc.cfg опцию -al
и дополнительно можеж указать -Anasmelf (Nasm-синтаксис, Linux) или -Anasmwin32 (Nasm-синтаксис, Windows) или другой систаксис:

Код: Выделить всё
alex@desktop:~> fpc -h
Free Pascal Compiler version 2.2.2 [2008/10/27] for i386
Copyright (c) 1993-2008 by Florian Klaempfl
/usr/local/bin/ppc386 [options] <inputfile> [options]
Put + after a boolean switch option to enable it, - to disable it
  -a     The compiler doesn't delete the generated assembler file
      -al        List sourcecode lines in assembler file
      -an        List node info in assembler file
      -ap        Use pipes instead of creating temporary assembler files
      -ar        List register allocation/release info in assembler file
      -at        List temp allocation/release info in assembler file
  -A<x>  Output format:
      -Adefault  Use default assembler
      -Aas       Assemble using GNU AS
      -Anasmcoff COFF (Go32v2) file using Nasm
      -Anasmelf  ELF32 (Linux) file using Nasm
      -Anasmwin32 Win32 object file using Nasm
      -Anasmwdosx Win32/WDOSX object file using Nasm
      -Awasm     Obj file using Wasm (Watcom)
      -Anasmobj  Obj file using Nasm
      -Amasm     Obj file using Masm (Microsoft)
      -Atasm     Obj file using Tasm (Borland)
      -Aelf      ELF (Linux) using internal writer
      -Acoff     COFF (Go32v2) using internal writer
      -Apecoff   PE-COFF (Win32) using internal writer
.....


И будут генерироваться асемблерные листинги
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: посмотреть генерируемый асм-код ?

Сообщение Devil » 11.12.2008 10:14:51

О, спасибо!

Только синтаксис не понятен. Пробовал сменить синтаксис на NASM или TASM, но компилятор зачем-то требует nasm.exe/tasm.exe. Nasm скачал...
Вопрос. как заставить генерировать листинги в другом синтаксисе ?
Devil
новенький
 
Сообщения: 40
Зарегистрирован: 10.12.2008 09:56:33

Re: посмотреть генерируемый асм-код ?

Сообщение Vadim » 11.12.2008 10:20:34

Devil
fpc знает только свой собственный формат асм'а. Все остальные для него - тёмный лес.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: посмотреть генерируемый асм-код ?

Сообщение Devil » 11.12.2008 10:43:02

ну тогда может конвертер какой существует...
потомучто, извините, это не асм, "это дрянь какая-то"(с).

Добавлено спустя 10 минут:
ещё вопрос. Может, сталкивался кто.

написал ассемблерную функцию и стал расстраиваться. Выставлял и Mode Delphi и assembler и register... и везде появляются ассемблерные команды LEAVE и RET 4, например. Кто-нибудь объяснит, что за фигня и почему в Delphi этого нет ?
Devil
новенький
 
Сообщения: 40
Зарегистрирован: 10.12.2008 09:56:33

Re: посмотреть генерируемый асм-код ?

Сообщение Sergei I. Gorelkin » 11.12.2008 11:42:04

Если добавить ключ -s, то FPC остановится после генерации ассемблера и не будет требовать masm/nasm. Чтобы прочитать, этого в общем-то достаточно.
Насчет LEAVE/RET 4 - возможно они обусловлены отключенной оптимизацией. Если ключ -О2 или -O3 их не убирает - то нужно смотреть на исходник.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: посмотреть генерируемый асм-код ?

Сообщение Devil » 11.12.2008 12:07:24

Большое спасибо, так намного лучше!
Хотя, синтаксис TASM привычнее. Но NASM аккуратнее.

А по поводу Leave/Ret надо почитать.
Devil
новенький
 
Сообщения: 40
Зарегистрирован: 10.12.2008 09:56:33

Re: посмотреть генерируемый асм-код ?

Сообщение psyhitus » 08.11.2010 00:30:51

Доброго всем времени суток, потребовалось в своей работе использовать транслятор с Pascal на Tasm.
Разобрался как генерировать TASM код, но не нашел возможна трансляция без проверки подключенных модулей и вызываемых функций/процедур.
Поясню на примере:
Код: Выделить всё
program test1;
uses adba;
var
        i:integer;
        b:real;
        d:double;
begin
        i := 1;
        b := 3.3e-10;
        d := i / b;
                        hello_kitty();
        writeln(d);
        readln;
end.

т.е. при компиляции fpc выдает ошибки:
Код: Выделить всё
C:\FPC\2.4.0\bin\i386-win32>fpc.exe -Atasm -s -o3 test1.pas
Free Pascal Compiler version 2.4.0 [2009/12/18] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
Compiling test1.pas
test1.pas(14,14) Error: Identifier not found "hello_kitty"
test1.pas(22) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: ppc386.exe returned an error exitcode (normal if you did not specify a so
urce file to be compiled)

как-нибудь можно заставить fpc не проверять это?
psyhitus
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.11.2010 00:24:26

Re: посмотреть генерируемый асм-код ?

Сообщение psyhitus » 09.11.2010 04:36:01

проблему решил с использованием модификатора external; но
появилась другая. кто-нибудь писал компоновщик (*.s) файлов?)
psyhitus
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.11.2010 00:24:26


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

Рейтинг@Mail.ru