小编phi*_*urn的帖子

64位程序是否比32位版本更大更快?

我想我专注于x86,但我通常对从32位到64位的移动感兴趣.

从逻辑上讲,我可以看到常量和指针在某些情况下会更大,因此程序可能会更大.为了提高效率而在字边界上分配内存的愿望意味着分配之间会有更多的空白.

我还听说x86上的32位模式必须在上下文切换时刷新其缓存,因为可能存在重叠的4G地址空间.

那么,64位的真正好处是什么?

作为补充问题,128位会更好吗?

编辑:

我刚刚编写了我的第一个32/64位程序.它生成16字节(32b版本)或32字节(64b版本)对象的链接列表/树,并对stderr进行大量打印 - 不是一个非常有用的程序,而不是典型的,但它是我的第一个.

大小:81128(32b)v 83672(64b) - 所以差别不大

速度:17s(32b)v 24s(64b) - 在32位OS(OS-X 10.5.8)上运行

更新:

我注意到正在开发一种新的混合x32 ABI(应用程序二进制接口),它是64b但使用32b指针.对于某些测试,它导致比32b或64b更小的代码和更快的执行.

https://sites.google.com/site/x32abi/

performance 64-bit 32-bit 128-bit

78
推荐指数
5
解决办法
10万
查看次数

如何设置Android动态壁纸图标(又名"缩略图")

我构建了我的第一个Android应用.

这是一款专为2.2设计的动态壁纸.

当我按住屏幕,选择Wallpapers然后选择时Live Wallpapers,我的动态壁纸看起来像一个默认图标,其中我的动态壁纸的名称被覆盖.

如何设置此图标?

我的清单文件有一个指定为的应用程序图标 @drawable/icon

更新

我想我需要在这个问题上添加一些信息,因为它很难描述我的问题(对不起).

  1. 我有所有的res/drawable-[hml]dpi/图标.我把它们全部命名了icon.png.
  2. 我的清单文件包含 <application android:label="@string/app_name" android:icon="@drawable/icon">
  3. 我也试过在res/drawable/被叫中创建一个48x48图标icon.png.
  4. 如果允许,我还尝试在其他清单标记中明确添加图标.例如.服务,活动,intent-filter(很明显,我不知道这个清单文件是如何工作的,所以我在尝试任何事情)
  5. Manage Applications,图标显示正确.
  6. 选择动态壁纸时,图标无法正确显示.
  7. mdpi图标为48x48,ldpi图标为36x36,hdpi图标为72x72

android live-wallpaper

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

如何使用GCC将源代码行与汇编输出内联?

我想让C源代码行与汇编输出内联,以查看正在生成的代码.

我尝试过GCC选项-S -Wa,-ahlms(甚至-Wa,--gstabs'因为我在某处读过它).

哦! 顺便说一句,我在Mac上,所以我没有objdump.

(对不起,这很简短,我得下车!)

输出 gcc pc-clisp.c -S -g -fverbose-asm -fnested-functions

.globl _getBool
_getBool:
LFB32:
LM21:
    pushl   %ebp    #
LCFI30:
    movl    %esp, %ebp      #,
LCFI31:
    subl    $8, %esp        #,
LCFI32:
LM22:
    movzbl  8(%ebp), %eax   # atom.pred, D.4112
    movzbl  %al, %eax       # D.4112, D.4113
    andl    $-16, %eax      #, D.4114
    sarl    $4, %eax        #, D.4115
    testl   %eax, %eax      # D.4115
    setne   %al     #, tmp64
    movzbl  %al, %eax       # tmp64, D.4111
    leave
    ret
LFE32:
Run Code Online (Sandbox Code Playgroud)

c macos assembly gcc

14
推荐指数
2
解决办法
6998
查看次数

什么是循环列表(在Lisp或Scheme中)?

我注意到Scheme和Lisp(我猜)支持循环列表,我在C/C++中使用循环列表来"简化"元素的插入和删除,但它们有什么用呢?

Scheme确保它们可以构建和处理,但是为了什么?

是否存在需要为圆形或尾部圆形的"杀手级"数据结构?

lisp scheme circular-list

13
推荐指数
1
解决办法
3853
查看次数

如何"削减"null?

Unix'file'命令有一个-0选项,用于在文件名后输出空字符.据说这对于'cut'来说很有用.

来自man file:

-0, --print0
         Output a null character ‘\0’ after the end of the filename. Nice
         to cut(1) the output. This does not affect the separator which is
         still printed.
Run Code Online (Sandbox Code Playgroud)

(注意,在我的Linux上,不会打印'-F'分隔符 - 这对我来说更有意义.)

如何使用'cut'从'file'的输出中提取文件名?

这就是我想要做的:

find . "*" -type f | file -n0iNf - | cut -d<null> -f1
Run Code Online (Sandbox Code Playgroud)

<null>NUL角色在哪里?

好吧,这就是我想要做的,我想要做的是从目录树中获取具有特定MIME类型的所有文件名.我使用grep(未显示).

我想处理所有合法的文件名,而不是卡在冒号的文件名上,例如,在他们的名字中.因此,NUL会很棒.

我猜非切割解决方案也很好,但我不想放弃一个简单的想法.

unix null cut file nul

11
推荐指数
1
解决办法
4158
查看次数

我可以撤消或删除atexit命令吗?

如果我放在atexit( fn );退出堆栈上,它将在程序退出时执行:从main()或从中返回exit().

我可以从堆栈中删除它吗?

你问我为什么要这样做?

我正在尝试使用简单的try-catch机制atexit,setjmplongjmp.如果可以的undo-atexit(fn);话,这将是完美的- 即使它只适用于最后注册的功能.

编辑:

在monoceres建议我自己的堆栈...

堆栈现在仅适用于一个异常捕获器.

void (*_catchFn[10])()  = {0,0,0,0,0,0,0,0,0,0};

void _catch(){
  if ( _catchFn[0] != 0 ){
    (_catchFn[0])();
  }
}

void _addCatch( void (*fn)() ){
  _catchFn[0]=fn;
}

void _remCatch( void (*fn)() ){
  _catchFn[0]=0;
}

void test(){
  jmp_buf env;

  void catch(){                  // we get here after an exit with a registered catch
    longjmp(env,1);              // return to the line marked except...
                               //   that …
Run Code Online (Sandbox Code Playgroud)

c exit atexit longjmp

10
推荐指数
2
解决办法
3905
查看次数

ARM是一个更安全的指令集吗?

我已经读过'正常'ARM指令是固定长度的 - 32位.并且没有ARM指令可以跳转到另一条指令的中间 - 这对于x86指令很容易.

(对于x86,谷歌的NaCl尝试通过对齐32字节边界上的指令来"修复"这个问题.)

这是否使ARM程序更安全或更耐某些攻击?

如果是这样,这是否扩展到Thumb和Java指令?

java security x86 arm

5
推荐指数
1
解决办法
527
查看次数

如何测试我的哈希函数在max-load方面是否合适?

我已经阅读了关于'Balls and Bins'问题的各种论文,似乎如果一个哈希函数正常工作(即它实际上是一个随机分布),那么如果我将n值哈希到一个哈希值,那么下面应该/必须为真带n槽(或箱)的桌子:

  1. 概率仓是空的,对于大n1/e.
  2. 预期的空箱数量是n/e.
  3. 箱子有k球的概率是<= 1/ek!(校正的).
  4. 箱子具有至少k次碰撞的概率是<= ((e/k)**k)/e(校正的).

这些看起来很容易检查.但是max-load通常会模糊地说明测试(具有高概率的最大碰撞次数).

大多数文本都声明任何bin中的最大碰撞数量O( ln(n) / ln(ln(n)) ).有人说是的3*ln(n) / ln(ln(n)).其他文件混合lnlog-通常没有定义它们,或者说国家log是数e为底,然后用ln在其他地方.

ln立足日志e或者2是这个max-load公式的权利和应为多大n是运行试验?

这个讲座似乎是最好的,但我不是数学家.

http://pages.cs.wisc.edu/~shuchi/courses/787-F07/scribe-notes/lecture07.pdf

BTW,with high probability似乎意味着1 - 1/n.

testing hash hashtable

5
推荐指数
1
解决办法
834
查看次数

如何在xsd中引用属性

我试图定义一个可以在后续元素定义中引用的属性.

<xs:attribute name="ridref" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)

后来我像这样使用它:

<xs:element name="coordRegRef">
  <xs:complexType>
    <!--xs:attribute name="ridref" type="xs:string"/ this works but I want to use ref -->
    <xs:attribute ref="ridref" use="required"/>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

XSD使用xmllint编译好

xmllint --schema pc-ar.xsd pc-ar.xml
Run Code Online (Sandbox Code Playgroud)

但是xmllint说

pc-ar.xml:41: element coordRegRef: Schemas validity error : Element '{http://pc-ar.xsd}coordRegRef', attribute 'ridref': The attribute 'ridref' is not allowed.
pc-ar.xml:41: element coordRegRef: Schemas validity error : Element '{http://pc-ar.xsd}coordRegRef': The attribute '{http://pc-ar.xsd}ridref' is required but missing.
Run Code Online (Sandbox Code Playgroud)

我解释为我的XML文件必须使用ridref的命名空间

<coordRegRef fix:ridref="111"/>
Run Code Online (Sandbox Code Playgroud)

(这确实有效,但不受欢迎)而不是

<coordRegRef ridref="111"/>
Run Code Online (Sandbox Code Playgroud)

为什么?

我的XSD

<?xml version="1.0"?>
<!-- validate: xmllint - -schema pc-ar.xsd …
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-namespaces xml-attribute xmllint

2
推荐指数
2
解决办法
3921
查看次数

你还能用旧的方式在C中做变量参数吗?

纯粹为了兴趣,我在重新学习C之后......我不知道... 15 - 20年.

我似乎记得变量参数是作为简单的宏实现的.

  • 谁能记住它们是什么?

编辑:为了澄清我的问题,我知道他们与va_list等名称相同,但你能记住实际的宏定义吗?

  • 他们今天还能工作吗?

c optional-parameters

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