> -- Илья Ермаков писал(а):
> ...(разумеется, никаких накладных расходов это не добавляет; операции чисто компиляторные).
Действительно...
Скомпоновал вот это в DLL:
MODULE FDLL;
IMPORT SYSTEM;

PROCEDURE [code] Bit(a: INTEGER; b: INTEGER) :INTEGER
05BH, 021H, 0D8H;

PROCEDURE BitAnd1*(a: INTEGER; b: INTEGER) :INTEGER;
BEGIN RETURN Bit(a,b)  END BitAnd1;

PROCEDURE BitAnd2*(a: INTEGER; b: INTEGER) :INTEGER;
BEGIN RETURN ORD(BITS(a)*BITS(b))  END BitAnd2;

END FDLL.
DevLinker.LinkDll
FDLL2.dll := FDLL# ~

Disassembler выдал такое:
Exported fn(): BitAnd1 - Ord:0001h
:00401035 55                      push ebp
:00401036 8BEC                    mov ebp, esp
:00401038 57                      push edi
:00401039 56                      push esi
:0040103A FF750C                  push [ebp+0C]
:0040103D 8B4508                  mov eax, dword ptr [ebp+08]
:00401040 5B                      pop ebx
:00401041 21D8                    and eax, ebx
:00401043 8D65F8                  lea esp, dword ptr [ebp-08]
:00401046 5E                      pop esi
:00401047 5F                      pop edi
:00401048 5D                      pop ebp
:00401049 C20800                  ret 0008

Exported fn(): BitAnd2 - Ord:0002h
:0040104C 55                      push ebp
:0040104D 8BEC                    mov ebp, esp
:0040104F 57                      push edi
:00401050 56                      push esi
:00401051 8B4508                  mov eax, dword ptr [ebp+08]
:00401054 23450C                  and eax, dword ptr [ebp+0C]
:00401057 8D65F8                  lea esp, dword ptr [ebp-08]
:0040105A 5E                      pop esi
:0040105B 5F                      pop edi
:0040105C 5D                      pop ebp
:0040105D C20800                  ret 0008
Разницы практически никакой
Кстати процедура Bit в DLL не компонуется почему-то. Нужно в обычную упаковывать...