VirtualBox

Changeset 81149 in vbox for trunk


Ignore:
Timestamp:
Oct 8, 2019 12:40:30 PM (5 years ago)
Author:
vboxsync
Message:

VBox-CodingGuidelines.cpp: Preserve the calling conversion docs from REM. bugref:9576

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/VBox-CodingGuidelines.cpp

    r80569 r81149  
    268268 *
    269269 * </ul>
     270 *
     271 * @subsubsection sec_vbox_guideline_compulsory_sub64_comp  Comparing the GCC and MSC calling conventions
     272 *
     273 * GCC expects the following (cut & past from page 20 in the ABI draft 0.96):
     274 *
     275 * @verbatim
     276    %rax     temporary register; with variable arguments passes information about the
     277             number of SSE registers used; 1st return register.
     278             [Not preserved]
     279    %rbx     callee-saved register; optionally used as base pointer.
     280             [Preserved]
     281    %rcx     used to pass 4th integer argument to functions.
     282             [Not preserved]
     283    %rdx     used to pass 3rd argument to functions; 2nd return register
     284             [Not preserved]
     285    %rsp     stack pointer
     286             [Preserved]
     287    %rbp     callee-saved register; optionally used as frame pointer
     288             [Preserved]
     289    %rsi     used to pass 2nd argument to functions
     290             [Not preserved]
     291    %rdi     used to pass 1st argument to functions
     292             [Not preserved]
     293    %r8      used to pass 5th argument to functions
     294             [Not preserved]
     295    %r9      used to pass 6th argument to functions
     296             [Not preserved]
     297    %r10     temporary register, used for passing a function's static chain
     298             pointer [Not preserved]
     299    %r11     temporary register
     300             [Not preserved]
     301    %r12-r15 callee-saved registers
     302             [Preserved]
     303    %xmm0-%xmm1  used to pass and return floating point arguments
     304             [Not preserved]
     305    %xmm2-%xmm7  used to pass floating point arguments
     306             [Not preserved]
     307    %xmm8-%xmm15 temporary registers
     308             [Not preserved]
     309    %mmx0-%mmx7  temporary registers
     310             [Not preserved]
     311    %st0     temporary register; used to return long double arguments
     312             [Not preserved]
     313    %st1     temporary registers; used to return long double arguments
     314             [Not preserved]
     315    %st2-%st7 temporary registers
     316             [Not preserved]
     317    %fs      Reserved for system use (as thread specific data register)
     318             [Not preserved]
     319   @endverbatim
     320 *
     321 * Direction flag is preserved as cleared.
     322 * The stack must be aligned on a 16-byte boundary before the 'call/jmp' instruction.
     323 *
     324 * MSC expects the following:
     325 * @verbatim
     326    rax      return value, not preserved.
     327    rbx      preserved.
     328    rcx      1st argument, integer, not preserved.
     329    rdx      2nd argument, integer, not preserved.
     330    rbp      preserved.
     331    rsp      preserved.
     332    rsi      preserved.
     333    rdi      preserved.
     334    r8       3rd argument, integer, not preserved.
     335    r9       4th argument, integer, not preserved.
     336    r10      scratch register, not preserved.
     337    r11      scratch register, not preserved.
     338    r12-r15  preserved.
     339    xmm0     1st argument, fp, return value, not preserved.
     340    xmm1     2st argument, fp, not preserved.
     341    xmm2     3st argument, fp, not preserved.
     342    xmm3     4st argument, fp, not preserved.
     343    xmm4-xmm5    scratch, not preserved.
     344    xmm6-xmm15   preserved.
     345   @endverbatim
     346 *
     347 * Dunno what the direction flag is...
     348 * The stack must be aligned on a 16-byte boundary before the 'call/jmp' instruction.
     349 *
    270350 *
    271351 * @subsection sec_vbox_guideline_compulsory_cppmain   C++ guidelines for Main
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette