посмотреть генерируемый асм-код ?
Модератор: Модераторы
посмотреть генерируемый асм-код ?
Каким удобным образом посмотреть генерируемый асм-код ? Желательно из IDE Lazarus.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
добавить в fpc.cfg опцию -al
и дополнительно можеж указать -Anasmelf (Nasm-синтаксис, Linux) или -Anasmwin32 (Nasm-синтаксис, Windows) или другой систаксис:
И будут генерироваться асемблерные листинги
и дополнительно можеж указать -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
.....
И будут генерироваться асемблерные листинги
О, спасибо!
Только синтаксис не понятен. Пробовал сменить синтаксис на NASM или TASM, но компилятор зачем-то требует nasm.exe/tasm.exe. Nasm скачал...
Вопрос. как заставить генерировать листинги в другом синтаксисе ?
Только синтаксис не понятен. Пробовал сменить синтаксис на NASM или TASM, но компилятор зачем-то требует nasm.exe/tasm.exe. Nasm скачал...
Вопрос. как заставить генерировать листинги в другом синтаксисе ?
Devil
fpc знает только свой собственный формат асм'а. Все остальные для него - тёмный лес.
fpc знает только свой собственный формат асм'а. Все остальные для него - тёмный лес.
ну тогда может конвертер какой существует...
потомучто, извините, это не асм, "это дрянь какая-то"(с).
Добавлено спустя 10 минут:
ещё вопрос. Может, сталкивался кто.
написал ассемблерную функцию и стал расстраиваться. Выставлял и Mode Delphi и assembler и register... и везде появляются ассемблерные команды LEAVE и RET 4, например. Кто-нибудь объяснит, что за фигня и почему в Delphi этого нет ?
потомучто, извините, это не асм, "это дрянь какая-то"(с).
Добавлено спустя 10 минут:
ещё вопрос. Может, сталкивался кто.
написал ассемблерную функцию и стал расстраиваться. Выставлял и Mode Delphi и assembler и register... и везде появляются ассемблерные команды LEAVE и RET 4, например. Кто-нибудь объяснит, что за фигня и почему в Delphi этого нет ?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Если добавить ключ -s, то FPC остановится после генерации ассемблера и не будет требовать masm/nasm. Чтобы прочитать, этого в общем-то достаточно.
Насчет LEAVE/RET 4 - возможно они обусловлены отключенной оптимизацией. Если ключ -О2 или -O3 их не убирает - то нужно смотреть на исходник.
Насчет LEAVE/RET 4 - возможно они обусловлены отключенной оптимизацией. Если ключ -О2 или -O3 их не убирает - то нужно смотреть на исходник.
Большое спасибо, так намного лучше!
Хотя, синтаксис TASM привычнее. Но NASM аккуратнее.
А по поводу Leave/Ret надо почитать.
Хотя, синтаксис TASM привычнее. Но NASM аккуратнее.
А по поводу Leave/Ret надо почитать.
Доброго всем времени суток, потребовалось в своей работе использовать транслятор с Pascal на Tasm.
Разобрался как генерировать TASM код, но не нашел возможна трансляция без проверки подключенных модулей и вызываемых функций/процедур.
Поясню на примере:
т.е. при компиляции fpc выдает ошибки:
как-нибудь можно заставить fpc не проверять это?
Разобрался как генерировать 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 не проверять это?
проблему решил с использованием модификатора external; но
появилась другая. кто-нибудь писал компоновщик (*.s) файлов?)
появилась другая. кто-нибудь писал компоновщик (*.s) файлов?)
