小编Cim*_*ali的帖子

将指令的目标地址保持在寄存器中,直到指令退出

我想在XeonE5 Sandy Bridge上使用基于精确事件的采样(PEBS)来记录特定事件的所有地址(例如缓存未命中).

但是,Core TM i7处理器和Intel®XeonTM5500处理器性能分析指南(第24页)包含以下警告:

由于PEBS机制在指令完成时捕获寄存器的值,因此无法重建以下类型的加载指令(Intel asm约定)的解除引用的地址.
MOV RAX, [RAX+const]
这种指令主要与指针追逐相关联.
mystruc = mystruc->next;
这是捕获存储器指令地址的这种方法的重大缺点.

根据objdump,我在程序中有许多该表单的加载指令.有什么办法可以避免吗?

由于这是一个特定于英特尔的问题,解决方案不必以任何方式移植,它只需要工作.我的代码是用C语言编写的,我理想地寻找编译器级解决方案(gcc或icc),但欢迎任何建议.


一些例子:

mov    0x18(%rdi),%rdi

mov    (%rcx,%rax,8),%rax
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,该指令退役之后(因此当我看到的寄存器值来找出我装到/从)的地址(分别的值%rdi + 18%rcx + 8 * %rax这些实施例中)通过的结果重写mov.

c assembly intel performancecounter cpu-registers

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

动态地循环遍历Python中函数的函数列表

我想看看是否可以在函数中运行函数列表.我能找到的最接近的东西是循环整个模块.我只想使用预先选择的功能列表.

这是我原来的问题:

  1. 给定一个字符串,检查每个字母以查看是否满足5个测试中的任何一个.
  2. 如果至少1个字母通过检查,则返回True.
  3. 如果字符串中的所有字母都未通过检查,则返回False.
  4. 对于字符串中的每个字母,我们将检查这些函数:isalnum(),isalpha(),isdigit(),islower(),isupper()
  5. 每个测试的结果应该打印到不同的行.

样本输入

    qA2
Run Code Online (Sandbox Code Playgroud)

样本输出(必须打印到单独的行,如果至少一个字母通过则为True,否则为每个测试的所有字母都失败):

    True
    True
    True
    True
    True
Run Code Online (Sandbox Code Playgroud)

我写了一个测试.当然我可以写出5组不同的代码,但这看起来很难看.然后我开始想知道我是否可以循环完成他们要求的所有测试.

仅一个测试的代码:

    raw = 'asdfaa3fa'
    counter = 0
    for i in xrange(len(raw)):
        if raw[i].isdigit() == True: ## This line is where I'd loop in diff func's
            counter = 1
            print True
            break
    if counter == 0:
        print False
Run Code Online (Sandbox Code Playgroud)

我尝试使用所有测试运行循环失败:

    raw = 'asdfaa3fa'
    lst = [raw[i].isalnum(),raw[i].isalpha(),raw[i].isdigit(),raw[i].islower(),raw[i].isupper()]
    counter = 0
    for f in range(0,5):
        for i in xrange(len(raw)):
            if lst[f] == True: ## loop through f, which …
Run Code Online (Sandbox Code Playgroud)

python loops list

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

就地,mpi_reduce与OpenMPI崩溃

每当我尝试mpi_reduce使用mpi_in_place发送缓冲区进行调用时,它都会崩溃.谷歌的一个拖网显示这对Mac OS OMPI 1.3.3来说是一个问题 - 但我在CentOS上使用OMPI 1.6.3(使用gfortran 4.4.6).

以下程序崩溃:

PROGRAM reduce

  USE mpi

  IMPLICIT NONE

  REAL, DIMENSION(2, 3) :: buffer, gbuffer

  INTEGER :: ierr, me_world
  INTEGER :: buf_shape(2), counts

  CALL mpi_init(ierr)
  CALL mpi_comm_rank(mpi_comm_world, me_world, ierr)

  buffer = 1.
  IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer

  buf_shape = SHAPE(buffer)
  counts = buf_shape(1)*buf_shape(2)

  CALL mpi_reduce(MPI_IN_PLACE, buffer, counts, mpi_real, mpi_sum, 0, mpi_comm_world, ierr)
  IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer

  CALL mpi_finalize(ierr)

END PROGRAM reduce
Run Code Online (Sandbox Code Playgroud)

MPI错误是:

MPI_ERR_ARG: …
Run Code Online (Sandbox Code Playgroud)

fortran mpi

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

Ace编辑器和vim键绑定:using:w命令

我正在将Ace Editor集成到一个Web应用程序中,并使用像这样的vim键绑定:

 var editor = ace.edit('editor');
 editor.setDisplayIndentGuides(false);
 editor.setHighlightActiveLine(false);
 editor.setShowFoldWidgets(false);
 editor.setShowInvisibles(false);
 editor.setShowPrintMargin(false);
 editor.setKeyboardHandler('ace/keyboard/vim');
Run Code Online (Sandbox Code Playgroud)

我也将此命令映射到Ctrl-S/Command-S,因为我想测试行为

editor.commands.addCommand({
  name: 'saveFile',
  bindKey: {
    win: 'Ctrl-S', mac: 'Command-S',
    sender: 'editor|cli'
  },
  exec: function (env, args, request) {
    console.log('saving...', env, args, request);
  }
});
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但问题是当使用ESCape键在Vim中进入"普通"模式,并使用:w来保存文件时,上面定义的命令的exec函数不会像调用Ctrl-S/Command那样被调用-S ......

并且keybinding-vim.js文件抛出一个错误,关于CodeMirror.commands.save没有被定义...

我查看了API文档和演示,但一直无法找到解决此问题的"正确"方法.

帮助赞赏.谢谢

javascript ace-editor

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

Python无法安装PyGObject

我尝试通过pip安装pygobject

pip install --user PyGObject
Run Code Online (Sandbox Code Playgroud)

但我不工作:

Collecting PyGObject
  Using cached pygobject-2.28.3.tar.bz2
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "C:\Users\A\AppData\Local\Temp\pip-build-phby_jwb\PyGObject\
setup.py", line 272
        raise SystemExit, 'ERROR: Nothing to do, gio could not be found and is
 essential.'
                        ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\A\AppData\Local\Temp\pip-build-phby_jwb\PyGObject
Run Code Online (Sandbox Code Playgroud)

我的python版本v3.5.0:374f501f4567,现在我在Windows 7上工作

python windows pip pygobject python-3.x

7
推荐指数
3
解决办法
9906
查看次数

vim的发音是什么?

有标准发音吗?

有些人告诉我阅读VIM,但是有人告诉我阅读/ vim /.

正确的方式是VIM或/ vim /?

vim

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

如何确保我的气流 DAG 一天运行一次?

我想将 DAG 设置为一次运行一天。我怎样才能做到这一点?

我试过“取决于过去=真”,但它只能确保每个任务随后运行。我想要的是,如果我从 X 天开始回填,那么 X 天的所有任务都会在 X+1 天的 DAG 开始之前运行,依此类推。

task directed-acyclic-graphs airflow

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

diff 和 show 的不同 git pager 选项

我喜欢我的标签显示为 4 个空格,为此我有首选项core.pager = 'less -x4'.

我知道此时我在吹毛求疵,但即使在差异模式下,我也希望前导标签为 4 个空格,这显然是最常用的 - 但是由于前导+, -,它仅显示为 3或。由于对齐的行,这有点烦人,如果有些没有前导选项卡,与其他人相比,它们会移动 1 列。

我可以更正差异的显示,less -x1,5以获得 4 个空格的选项卡,在列 1 模 4 上对齐。但是,此选项会导致前导选项卡在非差异模式下显示为 1 列,这反过来又非常令人不安。

因此,对于两个具体示例,我如何设置 git 选项以便我使用:

  • less -x1,5对于差异(或真正的补丁显示)命令,例如git diffgit show HEAD
  • less -x4 对于不显示差异的命令,例如 git show HEAD~1:package.json

我确信必须有一个不同的渲染器来处理基本diffcat操作,但我无法找到这些特定的选项(尽管它们可能存在,但关于 git 主题有很多噪音)。我也不想写一大堆别名,这有点太脏了。那么这甚至可能吗?

git git-diff git-config git-show

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

WAP站点与移动网站的传统HTML

如果你有一些社交网络应用程序,并且你希望你的用户使用移动设备与他们进行交互,你会使用WAP或普通网站的瘦身版本吗?

我的思路是,由于所有可用的移动网络浏览器(Iphone,Opera Mini),WAP已经死亡或至少开始流血致死.这是一个很好的假设吗?

此外,在选择您想要开发的移动访问类型时,您应该考虑哪种受众考虑因素?

我不确定我的目标设备.我很确定我的用户会更"现代",所以我们可以假设Windows Mobile,iPhone和Blackberry设备.

html mobile wap mobile-phones

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

python 十六进制数字格式中的数字分组

假设我有一堆十六进制数字,我在 python 中打印,例如,用于调试目的的地址,并且我希望能够直观地比较它们。对此的一个很大帮助是对数字进行分组,类似于我们对小数使用千位分隔符的方式。

\n\n

这也是为什么当你十六进制转储某些数字时,数字按 4 分组,而不是深不可测的长十六进制字符字符串。

\n\n

不可读: 47167689711616
\n勉强可读: 2ae61563e000
\n半可读: 47,167,689,711,616
\n最可读: 2ae6,1563,e000

\n\n

我并不关心分隔符是什么,是否按 2、3 或 4 位数字分组。但是,分组选项似乎不起作用:

\n\n
>>> \'{:x}\'.format(47167689711616)\n\'2ae61563e000\'\n>>> \'{:,x}\'.format(47167689711616)\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\nValueError: Cannot specify \',\' with \'x\'.\n
Run Code Online (Sandbox Code Playgroud)\n\n

I\xe2\x80\x99m 使用的机器(并且 I\xe2\x80\x99m 不是 admin)仅具有python 3.4

\n

python hex number-formatting python-3.4

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