没有合适的资源?快使用搜索试试~ 我知道了~
c/c++ procedure call standard for the arm architecture V2.10
需积分: 15 17 下载量 108 浏览量
2016-04-19
20:56:09
上传
评论 1
收藏 283KB PDF 举报
温馨提示
试读
33页
2015年ARM发布的c/c++ procedure call standard for the arm architecture V2.10
资源推荐
资源详情
资源评论
Procedure Call Standard for the ARM Architecture
ARM IHI 0042F
Copyright © 2003-2009, 2012, 2014-2015 ARM Limited. All rights reserved. Page 1 of 33
Procedure Call Standard for the
ARM
®
Architecture
Document number: ARM IHI 0042F, current through ABI release 2.10
Date of Issue: 24
th
November 2015
Abstract
This document describes the Procedure Call Standard use by the Application Binary Interface (ABI) for the
ARM architecture.
Keywords
Procedure call function call, calling conventions, data layout
How to find the latest release of this specification or report a defect in it
Please check the ARM Information Center (http://infocenter.arm.com/) for a later release if your copy is more than one year old
(navigate to the ARM Software development tools section, ABI for the ARM Architecture subsection).
Please report defects in this specification to arm dot eabi at arm dot com.
Licence
THE TERMS OF YOUR ROYALTY FREE LIMITED LICENCE TO USE THIS ABI SPECIFICATION ARE GIVEN IN SECTION
1.4, Your licence to use this specification (ARM contract reference
LEC-ELA-00081 V2.0). PLEASE READ THEM
CAREFULLY
.
BY DOWNLOADING OR OTHERWISE USING THIS SPECIFICATION, YOU AGREE TO BE BOUND BY ALL OF ITS
TERMS. IF YOU DO NOT AGREE TO THIS, DO NOT DOWNLOAD OR USE THIS SPECIFICATION.
THIS
ABI SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES (SEE SECTION 1.4 FOR DETAILS).
Proprietary notice
ARM, Thumb, RealView, ARM7TDMI and ARM9TDMI are registered trademarks of ARM Limited. The ARM logo
is a trademark of ARM Limited. ARM9, ARM926EJ-S, ARM946E-S, ARM1136J-S, ARM1156T2F-S, ARM1176JZ-
S, Cortex, and Neon are trademarks of ARM Limited. All other products or services mentioned herein may be
trademarks of their respective owners.
Procedure Call Standard for the ARM Architecture
ARM IHI 0042F
Copyright © 2003-2009, 2012, 2014-2015 ARM Limited. All rights reserved. Page 2 of 33
Contents
1 ABOUT THIS DOCUMENT 4
1.1 Change Control 4
1.1.1 Current Status and Anticipated Changes 4
1.1.2 Change History 4
1.2 References 5
1.3 Terms and Abbreviations 5
1.4 Your Licence to Use This Specification 6
1.5 Acknowledgements 7
2 SCOPE 8
3 INTRODUCTION 9
3.1 Design Goals 9
3.2 Conformance 9
4 DATA TYPES AND ALIGNMENT 10
4.1 Fundamental Data Types 10
4.1.1 Half-precision Floating Point 10
4.1.2 Containerized Vectors 11
4.2 Endianness and Byte Ordering 11
4.3 Composite Types 12
4.3.1 Aggregates 12
4.3.2 Unions 12
4.3.3 Arrays 12
4.3.4 Bit-fields 13
4.3.5 Homogeneous Aggregates 13
5 THE BASE PROCEDURE CALL STANDARD 14
5.1 Machine Registers 14
5.1.1 Core registers 14
5.1.1.1 Handling values larger than 32 bits 15
5.1.2 Co-processor Registers 15
5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension) 16
5.2 Processes, Memory and the Stack 16
5.2.1 The Stack 16
5.2.1.1 Universal stack constraints 17
5.2.1.2 Stack constraints at a public interface 17
Procedure Call Standard for the ARM Architecture
ARM IHI 0042F
Copyright © 2003-2009, 2012, 2014-2015 ARM Limited. All rights reserved. Page 3 of 33
5.3 Subroutine Calls 17
5.3.1.1 Use of IP by the linker 18
5.4 Result Return 18
5.5 Parameter Passing 18
5.6 Interworking 21
6 THE STANDARD VARIANTS 22
6.1 VFP and Advanced SIMD Register Arguments 22
6.1.1 Mapping between registers and memory format 22
6.1.2 Procedure Calling 22
6.1.2.1 VFP co-processor register candidates 22
6.1.2.2 Result return 22
6.1.2.3 Parameter passing 23
6.2 Alternative Format Half-precision Floating Point values 23
6.3 Read-Write Position Independence (RWPI) 23
6.4 Variant Compatibility 23
6.4.1 VFP and Base Standard Compatibility 24
6.4.2 RWPI and Base Standard Compatibility 24
6.4.3 VFP and RWPI Standard Compatibility 24
6.4.4 Half-precision Format Compatibility 24
7 ARM C AND C++ LANGUAGE MAPPINGS 25
7.1 Data Types 25
7.1.1 Arithmetic Types 25
7.1.2 Pointer Types 26
7.1.3 Enumerated Types 26
7.1.4 Additional Types 27
7.1.5 Volatile Data Types 27
7.1.6 Structure, Union and Class Layout 28
7.1.7 Bit-fields 28
7.1.7.1 Bit-fields no larger than their container 28
7.1.7.2 Bit-field extraction expressions 29
7.1.7.3 Over-sized bit-fields 29
7.1.7.4 Combining bit-field and non-bit-field members 30
7.1.7.5 Volatile bit-fieldspreserving number and width of container accesses 30
7.2 Argument Passing Conventions 30
APPENDIX A SUPPORT FOR ADVANCED SIMD EXTENSIONS 32
A.1 Introduction 32
A.2 Advanced SIMD data types 32
A.2.1 C++ Mangling 33
Procedure Call Standard for the ARM Architecture
ARM IHI 0042F
Copyright © 2003-2009, 2012, 2014-2015 ARM Limited. All rights reserved. Page 4 of 33
1 ABOUT THIS DOCUMENT
1.1 Change Control
1.1.1 Current Status and Anticipated Changes
This document has been released publicly. Anticipated changes to this document include:
Typographical corrections.
Clarifications.
Compatible extensions.
1.1.2 Change History
Issue Date By Change
1.0
30
th
October 2003 LS First public release.
2.0
24
th
March 2005 LS Second public release.
2.01
5
th
July 2005 LS Added clarifying remark following Table 5 – word-sized enumeration
contains are
int
if possible (§7.1.3).
2.02
4
th
August 2005 RE Clarify that a callee may modify stack space used for incoming
parameters.
2.03
7
th
October 2005 LS Added notes concerning VFPv3 D16-D31 (§5.1.2.1); retracted
requirement that plain bit-fields be unsigned by default (§7.1.7)
2.04
4
th
May 2006 RE Clarified when linking may insert veneers that corrupt r12 and the
condition codes (§5.3.1.1).
2.05
19
th
January 2007 RE Update for the Advanced SIMD Extension.
2.06
2
nd
October 2007 RE Add support for half-precision floating point.
A
25
th
October 2007 LS Document renumbered (formerly GENC-003534 v2.06).
B
2
nd
April 2008 RE Simplify duplicated text relating to VFP calling and clarify that
homogeneous aggregates of containerized vectors are limited to four
members in calling convention (§6.1.2.1).
C
10
th
October 2008 RE Clarify that __va_list is in namespace std. Specify containers for
oversized enums. State truth values for _Bool/bool. Clarify some
wording with respect to homogeneous aggregates and argument
marshalling of VFP CPRCs
D
16
th
October 2009 LS Re-wrote §7.1.3 to better reflect the intentions for enumerated types
in ABI-complying interfaces.
E 2.09
30
th
November 2012 AC Clarify that memory passed for a function result may be modified at
any point during the function call (§5.4). Changed the illustrative
source name of the half-precision float type from __f16 to __fp16 to
match [
ACLE] (§7.1.1). Re-wrote Appendix A to clarify requirements
on Advanced SIMD types.
F r2.10
TBS 2015 CR §A.2, corrected the element counts of poly16x4_t and poly16x8_t.
Added [u]int64x1_t, [u]int64x2_t, poly64x2_t. Allow half-precision
floating point types as function parameter and return types, by
specifying how half-precision floating point types are passed and
returned in registers (§5.4,§5.5,§6.1.1,§6.1.2.1). Added parameter
Procedure Call Standard for the ARM Architecture
ARM IHI 0042F
Copyright © 2003-2009, 2012, 2014-2015 ARM Limited. All rights reserved. Page 5 of 33
passing rules for over-aligned types (§4.3,§5.5).
1.2 References
This document refers to, or is referred to by, the following documents.
Ref URL or other reference Title
AAPCS
This document
Procedure Call Standard for the ARM Architecture
AAELF
ELF for the ARM Architecture
BSABI
ABI for the ARM Architecture (Base Standard)
CPPABI
C++ ABI for the ARM Architecture
ARM ARM ARM DDI 0100E, ISBN 0 201 737191
(Also from http://infocenter.arm.com/help/index.jsp
as the ARMv5 Architecture Reference Manual)
The ARM Architecture Reference Manual, 2
nd
edition, edited by David Seal, published by
Addison-Wesley.
ARM DDI 0406
(Subject to licence terms; please apply to ARM)
ARM Architecture Reference Manual ARM v7-A
and ARM v7-R edition
ACLE ARM IHI 0053A
(from http://infocenter.arm.com/help/index.jsp as
the ARM C Language Extensions)
ARM C Language Extensions
GC++ABI http://mentorembedded.github.com/cxx-
abi/abi.html
Generic C++ ABI
1.3 Terms and Abbreviations
This document uses the following terms and abbreviations.
Term Meaning
ABI Application Binary Interface:
1. The specifications to which an executable must conform in order to execute in a
specific execution environment. For example, the Linux ABI for the ARM Architecture.
2. A particular aspect of the specifications to which independently produced relocatable
files must conform in order to be statically linkable and executable. For example, the
C++ ABI for the ARM Architecture, the Run-time ABI for the ARM Architecture, the C
Library ABI for the ARM Architecture.
ARM-based … based on the ARM architecture …
EABI
An ABI suited to the needs of embedded (sometimes called free standing) applications.
PCS Procedure Call Standard.
AAPCS Procedure Call Standard for the ARM Architecture (this standard).
APCS ARM Procedure Call Standard (obsolete).
TPCS Thumb Procedure Call Standard (obsolete).
ATPCS ARM-Thumb Procedure Call Standard (precursor to this standard).
剩余32页未读,继续阅读
资源评论
ljw22676739
- 粉丝: 6
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功