mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Merge remote-tracking branch 'origin/GP-5183_ghintern_x86_x64_cspecs--SQUASHED'
This commit is contained in:
commit
e14fede14f
3 changed files with 72 additions and 37 deletions
|
@ -129,42 +129,62 @@
|
|||
</default_proto>
|
||||
<prototype name="MSABI" extrapop="8" stackshift="8">
|
||||
<input pointermax="8">
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM0_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM1_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM2_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM3_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RCX"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RDX"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="R8"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="R9"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="8">
|
||||
<addr offset="40" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM0_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RAX"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<!-- Use same grouping setup as x86-64-win.cspec. If the nth general-purpose register is
|
||||
consumed, consume the nth floating point register, and vice-versa -->
|
||||
<group>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM0_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RCX"/>
|
||||
</pentry>
|
||||
</group>
|
||||
<group>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM1_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RDX"/>
|
||||
</pentry>
|
||||
</group>
|
||||
<group>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM2_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="R8"/>
|
||||
</pentry>
|
||||
</group>
|
||||
<group>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM3_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="R9"/>
|
||||
</pentry>
|
||||
</group>
|
||||
<pentry minsize="1" maxsize="500" align="8">
|
||||
<addr offset="40" space="stack"/>
|
||||
</pentry>
|
||||
<!-- only structs of size 8,16,32,64 bits can be packed to register -->
|
||||
<rule>
|
||||
<datatype name="struct" sizes="3,5,6,7"/>
|
||||
<convert_to_ptr/>
|
||||
</rule>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
<register name="XMM0_Qa"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RAX"/>
|
||||
</pentry>
|
||||
<!-- only structs of size 8,16,32,64 bits can be returned via register -->
|
||||
<rule>
|
||||
<datatype name="struct" sizes="3,5,6,7"/>
|
||||
<hidden_return/>
|
||||
</rule>
|
||||
</output>
|
||||
<unaffected>
|
||||
<varnode space="ram" offset="0" size="8"/>
|
||||
<register name="RBX"/>
|
||||
|
|
|
@ -78,7 +78,12 @@
|
|||
</group>
|
||||
<pentry minsize="1" maxsize="500" align="8">
|
||||
<addr offset="40" space="stack"/>
|
||||
</pentry>
|
||||
</pentry>
|
||||
<!-- only structs of size 8,16,32,64 bits can be packed to register -->
|
||||
<rule>
|
||||
<datatype name="struct" sizes="3,5,6,7"/>
|
||||
<convert_to_ptr/>
|
||||
</rule>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="4" maxsize="8" metatype="float">
|
||||
|
@ -87,6 +92,11 @@
|
|||
<pentry minsize="1" maxsize="8">
|
||||
<register name="RAX"/>
|
||||
</pentry>
|
||||
<!-- only structs of size 8,16,32,64 bits can be returned via register -->
|
||||
<rule>
|
||||
<datatype name="struct" sizes="3,5,6,7"/>
|
||||
<hidden_return/>
|
||||
</rule>
|
||||
</output>
|
||||
<unaffected>
|
||||
<varnode space="ram" offset="0" size="8"/>
|
||||
|
|
|
@ -48,6 +48,11 @@
|
|||
<pentry minsize="5" maxsize="8">
|
||||
<addr space="join" piece1="EDX" piece2="EAX"/>
|
||||
</pentry>
|
||||
<!-- Any struct type is returned by pointer, regardless of size -->
|
||||
<rule>
|
||||
<datatype name="struct"/>
|
||||
<hidden_return/>
|
||||
</rule>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="ESP"/>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue