小编kva*_*nck的帖子

这种用于生成随机数的算法是什么?

我已经反向设计了跟随算法来生成随机数;

int __cdecl sub_40BB60()
{
  char v0; // si@1
  int v1; // edx@1
  int v2; // ecx@1
  unsigned int v3; // eax@1
  int v4; // edi@1
  int v5; // esi@1
  int result; // eax@1

  v0 = random_state;
  v1 = dword_685440[((_BYTE)random_state - 3) & 0xF];
  v2 = dword_685440[random_state] ^ v1 ^ ((v1 ^ 2 * dword_685440[random_state]) << 15);
  v3 = ((unsigned int)dword_685440[((_BYTE)random_state - 7) & 0xF] >> 11) ^ dword_685440[((_BYTE)random_state - 7) & 0xF];
  v4 = v3 ^ dword_685440[random_state] ^ v1 …
Run Code Online (Sandbox Code Playgroud)

random algorithm reverse-engineering

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

枚举内存范围内的页面

我在 Visual Studio 2012 下的 Windows 上使用 C++。

我有一个开始和结束内存地址,需要在两个地址之间生成一个页面基地址/句柄列表。我考虑过手动探测页面的可能性,但认为必须有更好的方法来枚举它们。

这样的方式存在吗?

免责声明;最后的页句柄必须是基地址,这样当窗口页的大小添加到它们时,结果地址不会重叠到下一页。首选解决方案不是特定于平台的,并且与 32 位(带/不带 WOW64)兼容。

c++ memory probe

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

Haskell parsec运算符尝试问题

我正在使用GHC在Windows上进行编译.这是我的参考资料http://hpaste.org/86539

问题是以下表达式不解析: 3+2 < 1+-4 <= -3 << 1.它应解析为:

在此输入图像描述

..然而,-当它显然是最高的运营商时,我会感到意外.我怀疑这是因为我使用了try第55行,但没有它<,<<并且重复一个符号的运算符无法正确解析.

我正在寻求建议或提示.

haskell parsec

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

Haskell/Trifecta:解析完全可选的分号而不会污染AST

我已经重写了这个问题,因为它最初是用更简洁的代码示例发布的:

考虑一种完全可选分号的语言,几乎完全是糖,即:

  • ;; foo; bar;;;; 已验证
  • foo bar foobar 已验证
  • if (+1); foo与if (+1) foo语义不同,因此;不能被视为空格

这是一个示例解析器:

{-# LANGUAGE OverloadedStrings #-}

import Text.Trifecta
import Text.Trifecta.Delta
import Text.PrettyPrint.ANSI.Leijen (putDoc, (<>), linebreak)
import Control.Monad.Trans.State.Strict
import Control.Applicative

type TestParser a = StateT Int Parser a

data AST a = Foo a | Bar a deriving (Show)

pFoo :: TestParser (AST (Delta, Int))
pFoo = curry Foo <$ string "foo" <*> position <* modify (+1) <*> get

pBar :: TestParser …
Run Code Online (Sandbox Code Playgroud)

parsing haskell trifecta

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

C++:使用clang以迭代器作为值编译地图的巨大错误

我正在尝试使用迭代器作为一个值,std::map以便我可以通过id它有效地查找对象,或者通过它有效地迭代它depth.

请考虑以下代码:

#include <string>
#include <algorithm>
#include <array>
#include <iostream>
#include <random>
#include <map>
#include <unordered_map>

struct object {
    static int next_id;
    int id;
    int depth;
    std::map<int, object>::iterator id_it;
    std::multimap<int, std::map<int, object>::iterator>::iterator depth_it;
    static std::map<int, object> by_id;
    static std::multimap<int, std::map<int, object>::iterator> by_depth;
    object() = delete;
    object(object const &) = delete;
    object(object &&) = delete;
    object & operator=(object const &) = delete;
    object && operator=(object &&) = delete;
    ~object() = default;
    object(int id) : id(id), …
Run Code Online (Sandbox Code Playgroud)

c++ iterator map c++11

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

C++:使用decltype从头文件中复制类型是否可以?

当事情发生变化时,我希望减少我必须对代码进行的维护.

在某个头文件中,我有一些长而且有点像这样的冗长:

extern std::map<event_t, std::multimap<real_t, event>> event_schedule;
Run Code Online (Sandbox Code Playgroud)

然后,在cpp文件中,我认为实际声明它会更容易;

decltype(event_schedule) event_schedule;
Run Code Online (Sandbox Code Playgroud)

有什么理由不去吗?

c++ decltype c++11

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

我可以使用 rsp 作为通用寄存器吗?

有人告诉我,如果我用作rsp通用寄存器,操作系统可能会将寄存器转储到它在中断时指向的位置,从而导致出现问题的行为。

这是真的吗?如果不是,那么如果我不需要堆栈,我可以将其rsp用作通用寄存器吗?

编辑:在用户空间中运行。

assembly x86-64 cpu-registers stack-pointer

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

NASM范围宏与累加器

我想调用一次宏N次,每次使用累加器,即;

%macro foo 1
range 1, 8, {some_partially_applied_macro %1}
%endmacro
Run Code Online (Sandbox Code Playgroud)

相当于

%macro foo 1
some_partially_applied_macro %1, 1
some_partially_applied_macro %1, 2
some_partially_applied_macro %1, 3
...
some_partially_applied_macro %1, 8
%endmacro
Run Code Online (Sandbox Code Playgroud)

我尝试写下面的内容(及其几种变体):

%macro range 3
%assign i %1
%rep %2
%[%3 i]
%assign i i+1
%endrep
%endmacro
Run Code Online (Sandbox Code Playgroud)

我没有成功.

需要注意的一点是,第三个参数可能需要部分应用.

assembly nasm

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

使用 lisp 进行元编程/代码生成?

我正在用几乎纯汇编程序编写一个解释器。目前,我混合使用 NASM 宏和 m4(当它们不够强大时)来生成大量代码。

我记得看到 lisp 被用作元编程引擎来生成和构建汇编程序。我记不清具体在哪里了。

有人可以给出使用 lisp 作为汇编器元编程工具的项目示例,或者解释应使用哪些引擎或库来实现此目的吗?

lisp assembly metaprogramming

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

当有嵌套组件时,ng-content 从父作用域中嵌入

使用 Angular 2/4,我有一个复杂的页面模板。

假设我有 3 个相互嵌套的组件:page.component, 里面header.component和里面header.title.component有适当设置的自定义选择器。

page.component html模板:

<layout-header></layout-header>
...
Run Code Online (Sandbox Code Playgroud)

header.component html模板:

<section class="dynamic-content" *ngIf="!collapsed" #dynamicContent>
  <layout-header-title></layout-header-title>
  ...
</section>
Run Code Online (Sandbox Code Playgroud)

header.title.component html模板:

<ng-content selector="card-layout-title"></ng-content>
Run Code Online (Sandbox Code Playgroud)

然后,在我的实际页面模板上:

<layout-page>
  <card-layout-title>Title goes here</card-layout-title>
</layout-page>
Run Code Online (Sandbox Code Playgroud)

在ng-content selector="card-layout-title"只有当直接父是在标签内的组件选择,即从工作header.title.component,我无法选择2的水平式的嵌套组件找到内容transclude成card-layout-title。

我该怎么做(最好不要在每个级别添加和传递模板引用,因为每个级别有 5-10 个嵌套组件)?

javascript transclusion angular

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