view dyncall/README.txt @ 606:85b7a117b807

- more statics in test code (this is partly needed on an experimental freebsd sparc64 build where the elf cleanup code crashes for some reason ... it's probably that experimental build, but a good change to do regardless)
author Tassilo Philipp
date Wed, 21 Sep 2022 15:20:58 +0200
parents 3e629dc19168
children
line wrap: on
line source

Library Design

Overview:
1. Call Kernel
2. Utilities (memory and static sized vectors)
3. Call State Machine
4. Application Programming Interface
5. extension: high-level formatted C API (ellipsis style)


1. Call Kernel 

Assembly Implementation:

  gcc front-end: dyncall_call.S
    uses the C preprocessor
    will include the apropriate assembly source

  architecture/tool specific sources:
    dyncall_call_<ARCH>_<ASMTOOL>.[s|asm]


2. Utilities (memory and static sized vectors)

2.1 Memory Management

C Interface: dyncall_alloc.h


2.2 Static-sized Vector

C Interface: dyncall_vector.h

C Implementation: dyncall_vector.c


3. Call State Machine

C Implementation:
  Top-level: dynall_callvm.c
  Sub-levels: 
    dyncall_callvm_<ARCH>.c


4. Application Programming Interface

C Header:
  Top-level: dyncall.h
  Sub-level headers: 
    dyncall_macros.h 
    dyncall_config.h 
    dyncall_types.h 
C Implementation: dyncall_api.c


5. Extension: High-level C API (ellipsis style)

C Header:
  Top-level: dyncall_callf.h
  Sub-level headers:
    dyncall_value.h
    dyncall_signature.h
C Implementation: dyncall_callf.c