标签: alignment

为什么Mac ABI需要x86-32的16字节堆栈对齐?

我可以理解旧PPC RISC系统的这个要求,甚至是x86-64,但是对于旧的,经过验证的x86?在这种情况下,堆栈只需要在4字节边界上对齐.是的,某些MMX/SSE指令需要16字节对齐,但如果这是被调用者的要求,则应确保对齐正确.为什么要为每个来电者增加这项额外要求?这实际上可能会导致性能下降,因为每个呼叫站点都必须管理此要求.我错过了什么吗?

更新:在对此进行一些调查并与一些内部同事进行一些咨询后,我对此有一些理论:

  1. PPC,x86和x64版操作系统之间的一致性
  2. 似乎GCC codegen现在始终执行子esp,xxx然后将数据"移动"到堆栈而不是简单地执行"推送"指令.在某些硬件上,这实际上可能更快.
  3. 虽然这确实使调用站点变得复杂,但是当使用默认的"cdecl"约定时,调用者清理堆栈时几乎没有额外的开销.

我对最后一项的问题是,对于依赖于被调用者清理堆栈的调用约定,上述要求实际上 "uglify"了codegen.例如,某些编译器决定为自己的内部使用实现更快的基于寄存器的调用样式(即任何不打算从其他语言或源调用的代码)?这种堆栈对齐可能会通过在寄存器中传递一些参数来抵消一些性能提升.

更新:到目前为止,唯一真正的答案是一致性,但对我来说,答案有点太容易了.我有超过20年的x86架构经验,如果一致性,而不是性能,或其他具体的东西,那么我真的是因为我恭敬地建议开发人员要求它有点天真.他们忽略了近三十年的工具和支持.特别是如果他们期望工具供应商能够快速轻松地为他们的平台调整他们的工具(可能不是......这 Apple ......),而不必跳过几个看似不必要的箍.

我会在另一天左右给出这个话题,然后关闭它......

有关

macos stack alignment abi calling-convention

31
推荐指数
3
解决办法
6714
查看次数

WPF:对齐Label的基线和TextBox

假设我在Label旁边有一个简单的TextBox:

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Margin="3">MyLabel</Label>
        <TextBox Margin="3" Width="100">MyText</TextBox>
    </StackPanel>
    ...
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

结果

如您所见,MyLabel和MyText的基线未对齐,看起来很难看.当然,我可以开始玩边缘直到它们匹配,但由于这是一个常见的要求,我确信WPF提供了一个更简单,更优雅的解决方案,我还没有找到...

wpf layout alignment baseline

31
推荐指数
3
解决办法
2万
查看次数

即使在包装时,如何将左对齐文本居中?

我需要在div中居中一个左对齐文本块,但我需要将文本块的视觉宽度放在居中而不是块本身.

在许多情况下,这可能是相同的,但想想一个div相当狭窄的情况(想想移动宽度)和文本太长而无法放在一条线上,所以它需要溢出.

在下面的示例中,我将文本块显示为浅蓝色来说明,但实际上它们将与父div(白色)颜色相同.在使用的任何文本中也没有换行符.

在此输入图像描述

1a中,文本只有一行,并且小于文本块的最大宽度,因此我可以将文本块设置为文本的宽度,并且没有问题.

但是,在2a中,文本比最大宽度长,因此包裹到下一行.这样做的结果是可见文本块不再出现居中.

如何仅使用HTML和CSS 将这两种情况显示为1b2b

编辑1:似乎每个人都在告诉我如何实现1a和2a中的情况,但我已经有了.我想实现1b和2b的情况.

编辑2:我使用的代码与David在其链接中提供的代码基本相同(http://jsfiddle.net/davidThomas/28aef/).对文本区域使用颜色只是为了说明这一点.如果将其更改为白色(http://jsfiddle.net/28aef/2/),您可以看到文本块不再看起来居中(即左右边距不相等)

html css alignment text-alignment

30
推荐指数
2
解决办法
4万
查看次数

在屏幕底部放置一个div,而不是页面

我试图在我的网页屏幕底部放一个灰色条,无论分辨率如何.但是,当我尝试时,当我进入不同的分辨率时,它似乎只是上升或下降.有没有什么办法解决这一问题?

此外,条形码使用divid标签由CSS构成.

/* HTML*/
<div id="info">Scroll for info</div>

/* CSS */
<style>
#info { 
    height: 40px; 
    position: relative; 
    margin-top: 25%; 
    background-color: #393838; 
    opacity: 
}
</style>
Run Code Online (Sandbox Code Playgroud)

编辑:我希望它在屏幕的底部,但是当我向下滚动时,它向上移动到我的屏幕顶部.

html css alignment progress-bar

30
推荐指数
1
解决办法
7万
查看次数

Textview环绕视图

我正在尝试使我的水平布局充分利用可用的空间.

在显示活动的信息中,我有一个"事实框",后面跟着一大盒文字.我希望信息框可以向右浮动,类似于下图.

这可能使用android TextView api吗?

示例图片

android textbox alignment textview android-layout

29
推荐指数
3
解决办法
1万
查看次数

C++的新操作是否保证地址返回的对齐?

大多数有经验的程序员都知道数据对齐对于程序的性能很重要.我看到一些程序员编写的程序分配比他们需要的更大的缓冲区大小,并使用对齐的指针作为开始.我想知道我应该在我的程序中这样做,我不知道是否有任何保证C++的新操作返回的地址对齐.所以我写了一个小程序来测试

for(size_t i = 0; i < 100; ++i) {
    char *p = new char[123];
    if(reinterpret_cast<size_t>(p) % 4) {
        cout << "*";
        system("pause");
    }
    cout << reinterpret_cast<void *>(p) << endl;
}
for(size_t i = 0; i < 100; ++i) {
    short *p = new short[123];
    if(reinterpret_cast<size_t>(p) % 4) {
        cout << "*";
        system("pause");
    }
    cout << reinterpret_cast<void *>(p) << endl;
}
for(size_t i = 0; i < 100; ++i) {
    float *p = new float[123];
    if(reinterpret_cast<size_t>(p) % 4) {
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ performance alignment new-operator

28
推荐指数
5
解决办法
2万
查看次数

垂直和水平对齐(中间和中间)与css

我正在练习CSS,我很困惑,我怎么能强迫我的div元素在我的页面中心(垂直和水平)(意味着跨浏览器兼容性的方式或方式)?

最好的祝福 !

css xhtml alignment

28
推荐指数
1
解决办法
12万
查看次数

如何在GridBagLayout单元格中左对齐或右对齐?

我看到它的GridBagLayout位置是细胞中心对齐的孩子.如何左右对齐?

UPDATE

构建代码(我知道我可以重用c)

    // button panel
    JPanel button_panel = new JPanel();
    button_panel.add(ok_button);
    button_panel.add(cancel_button);

    // placing controls to dialog
    GridBagConstraints c;

    GridBagLayout layout = new GridBagLayout();
    setLayout(layout);

    c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;

    add(inputSource_label, c);

    c = new GridBagConstraints();
    c.gridx = 1;
    c.gridy = 0;
    add(inputSource_combo, c);

    c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 1;
    add(output_label, c);

    c = new GridBagConstraints();
    c.gridx = 1;
    c.gridy = 1;
    add(output_combo, c);

    c = …
Run Code Online (Sandbox Code Playgroud)

java swing alignment gridbaglayout

28
推荐指数
1
解决办法
4万
查看次数

Android RelativeLayout将另一个视图右上角的一个视图的中心对齐

我有使用RelativeLayout的经验,但我从来没有遇到过一种方法来解决我提出的问题(除了硬编码边距值,我想避免.)

我想尝试在RelativeLayout中创建类似下图的内容:

在此输入图像描述

该框是它自己的视图,我想让包含橙色圆圈的视图居中在包含蓝色框的视图的右上角.

我尝试了android:alignTop="boxView",android:alignRight="boxView"但是把我的橙色圆圈完全放在我的盒子里.我希望它是这样圆圈位于盒子右上角的中心.

有人知道如何通过RelativeLayout获得结果吗?优选地,不必为了橙色点视图而将边缘硬编码远离屏幕的边缘.

android alignment android-relativelayout

28
推荐指数
1
解决办法
1万
查看次数

有没有一个很好的emacs模式来显示和编辑巨大的分隔符分隔文件?

我一直在搜索没有找到一个模式,使编辑巨大的制表符/逗号/冒号分隔文件很容易.我一直想要一种模式,确保列始终排列,就像组织模式表一样.我知道我可以轻松地将整个文件转换为组织模式表,然后在我完成后将其关闭,但是对于大文件来说这会变得非常慢,并且对于快速编辑很麻烦(还有发生的问题)如果一个字段包含一个垂直条).所以有人知道我可以使用的模式或内置函数/变量,以便我可以得到一个像这样的文件

col1\tcol2\tcol3
very long column1\tcol2\tcol3
Run Code Online (Sandbox Code Playgroud)

显示像

col1               col2  col3
very long column1  col2  col3
Run Code Online (Sandbox Code Playgroud)

?(或许有一些颜色衬里隔板)

csv emacs alignment

28
推荐指数
2
解决办法
1万
查看次数