view portasm/README.txt @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents ab2d78e48ca2
children cab0031c6691
line wrap: on
line source

portasm - a toolkit for writing portable generic assembler sources 
------------------------------------------------------------------

Copyright (C) 2011 Daniel Adler <dadler@uni-goettingen.de>.
Licensed under BSD two-clause license.


Requirements
------------
- C Preprocessor


Supported Architectures and Tool-chains:
----------------------------------------

- x86: gas, apple as, masm
- x64: gas, apple as, masm
- ppc: gas, apple as
- arm: gas, apple as


Usage:
------

Implement assembler sources in *.S files which use C preprocessor.
#include portasm-<ARCH>.S at front

In order to generate MASM files for X86 and X64, run 
  'gen-masm.sh <name> [<outsuffix>]' script which reads <name>.S and outputs <name><outsuffix>.masm file.


Common Macros:
--------------

BEGIN_ASM
END_ASM
BEGIN_PROC(name)
END_PROC(name)
GLOBAL(name)
HEX(value)