小编Zac*_*gle的帖子

LLVM上的Syscall/sysenter

如何编写发出特定于体系结构的系统调用指令所需的LLVM bitcode?

更具体地,clang支持嵌入式组件和明确支持发射系统调用(否则libcvdso不能被编译).翻译如何为此工作,我如何能够重复这种行为?

我理解LLVM本身可能无法以足够高级的方式理解各种体系结构使用的调用接口和寄存器调度,以在LLVM字节码中表示(例如,可以在其他地方填写).但是,显然可以添加此信息的阶段.

我如何做到这一点,从"带内联汇编的C源"之后的任何阶段开始?

一个令人满意的答案将包括如何调用五参数int 0x80系统调用的示例.我之所以选择五,因为它需要溢出到堆栈,我选择int 0x80因为它易于理解并且在最常见的平台上.

linux assembly gcc llvm clang

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

Markdown内部的把手,在HAML内部

我知道这是一个非常非标准的用例,但我正在链接HAML,Markdown和Handlebars(在SproutCore 2.0中),而且我距离'漂亮'代码只有一步之遥.混合HAML,Markdown和Javascript不太理想.如果我想在HAML的整个输出中添加一个后置过滤器,替换{{text}}<script>{{text}}</script>,最好的方法是什么?

我可以在之后修改后构建步骤haml,但是我想把它变成我可以回馈给SproutCore社区的东西.

我想替换

%body
  javascript:
    {{handlebars}}
Run Code Online (Sandbox Code Playgroud)

%body
  {{handlebars}}
Run Code Online (Sandbox Code Playgroud)

哪会给我

<body>
  <script>{{handlebars}}</script>
</body>
Run Code Online (Sandbox Code Playgroud)

但是,我也想在嵌入降价时使用它.例如,

%body
  markdown:
    # Hello, {{handlebars}}
Run Code Online (Sandbox Code Playgroud)

目前,获得这个的唯一方法是

%body
  markdown:
    # Hello, <script>{{handlebars}}</script>
Run Code Online (Sandbox Code Playgroud)

哪个会产品

<body>
  <h1>Hello, <script>{{handlebars}}</script></h1>
</body>
Run Code Online (Sandbox Code Playgroud)

markdown haml mustache

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

ZSH:子命令的完成别名,例如“compdef foo='git log'”

我有一堆工具可以将所有参数传递给内部调用,例如“git log”。一个简单的例子可能如下所示:

#!/usr/bin/env zsh
git log --since='1 year ago' "$@"
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过执行以下操作来获得完成别名:

compdef myscript=grep
Run Code Online (Sandbox Code Playgroud)

但是,尚不清楚如何对 等子命令执行此操作git log。有没有办法做到这一点?

git zsh completion

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

如何使用Grails控制器名称使Ember.js表现?

Grails功能非常强大,允许您使用单个语句(object as JSON)将Domain对象转换为JSON .不幸的是,由于一些原因,这还不足以与Ember.js交互.

我怎样才能让Grails与Ember.js很好地搭配?

grails ember.js ember-data

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

当我输入正确时,为什么 Z3 说这个方程是不可满足的?

给定一个简单的移位和异或运算,其中“输入”是符号:

input    = BitVec('input',32)
feedback = 0x8049d30
shiftreg = input ^ feedback
shiftreg = 0xffffffff & ((shiftreg << 8) | (shiftreg >> 24))
shiftreg = shiftreg ^ 0xcafebabe

s = Solver()
s.add(shiftreg == 0x804a008)
s.check()
# unsat
Run Code Online (Sandbox Code Playgroud)

我们被告知这个方程是不可解的。如果打印,s包含:

[4294967295 &
 ((input ^ 134520112) << 8 | (input ^ 134520112) >> 24) ^
 3405691582 ==
 134520840]
Run Code Online (Sandbox Code Playgroud)

但是,我可以轻松地创建一个示例来解决“输入”的这个方程。

want = 0x804a008
want ^= 0xcafebabe
want = 0xffffffff & ((want >> 8) | (want << 24))
want ^= 0x8049d30
print hex(want) …
Run Code Online (Sandbox Code Playgroud)

math xor solver smt z3

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

标签 统计

assembly ×1

clang ×1

completion ×1

ember-data ×1

ember.js ×1

gcc ×1

git ×1

grails ×1

haml ×1

linux ×1

llvm ×1

markdown ×1

math ×1

mustache ×1

smt ×1

solver ×1

xor ×1

z3 ×1

zsh ×1