ARMv8 stack alignment 问题

yswzing
yswzing 2015-10-20 字数 193

ARMv8 提供了一个配置位 (SCTLR.SA),可以强制 stack pointer 对齐到 16-byte,默认是打开的。

大家讨论一下:

1. 强制 SP 对齐到 16B 有什么好处?

2. 既然有上述好处,为什么还要提供一种手段来关闭这种强制?

CSArch 计算机体系结构
7 个回复
iLauren
iLauren 2015-10-20

1效率

2兼容

【 在 yswzing () 的大作中提到: 】

: ARMv8 提供了一个配置位 (SCTLR.SA),可以强制 stack pointer 对齐到 16-byte,默认是打开的。

: 大家讨论一下:

: 1. 强制 SP 对齐到 16B 有什么好处?

yswzing
yswzing 2015-10-20

如果是效率问题,似乎不用强制吧,对效率有需求的软件自己保证SP对齐不就行了。为什么设置一种强制机制?

似乎这种强制机制没有什么用处,如果需要效率,软件就自己保证16B对齐;如果需要兼容,就不用保证16B对齐。皆大欢喜?

【 在 iLauren 的大作中提到: 】

: 1效率

: 2兼容

kirbyzhou
下雪 你那边下雪了么? 2015-10-20

你觉得靠什么保证SP对齐?还不是跑起来以后看看会不会因此崩溃呗。

【 在 yswzing (yswzing) 的大作中提到: 】

: 如果是效率问题,似乎不用强制吧,对效率有需求的软件自己保证SP对齐不就行了。为什么设置一种强制机制?

: 似乎这种强制机制没有什么用处,如果需要效率,软件就自己保证16B对齐;如果需要兼容,就不用保证16B对齐。皆大欢喜?

yswzing
yswzing 2015-10-20

难道不是compiler或assembly writer保证对齐?

【 在 kirbyzhou 的大作中提到: 】

: 你觉得靠什么保证SP对齐?还不是跑起来以后看看会不会因此崩溃呗。

kirbyzhou
下雪 你那边下雪了么? 2015-10-20

总得确认吧。

【 在 yswzing (yswzing) 的大作中提到: 】

: 难道不是compiler或assembly writer保证对齐?

yswzing
yswzing 2015-10-20

AARCH64是一个全新ISA,以前的软件必须经过重新编译,有何兼容性问题?

【 在 iLauren 的大作中提到: 】

: 1效率

: 2兼容

csky007
csky007 2015-10-23

这么跟你说吧!有些程序(也有可能是bootloader/操作系统)里面有汇编代码,而汇编的代码不是64位,有可能是8/16/32位对其的,这样为了兼容,弄个选项

【 在 yswzing 的大作中提到: 】

: AARCH64是一个全新ISA,以前的软件必须经过重新编译,有何兼容性问题?