小编Ego*_*gon的帖子

Delphi汇编程序常量'eof'

eof在asm块上下文中似乎存在未记录的常量.这是使用Delphi 7测试的.

program TestEof;
{$APPTYPE CONSOLE}
var
  example : Integer;
begin
  asm
    mov example, eof
  end;
  writeln(example);
  readln;
end.
Run Code Online (Sandbox Code Playgroud)

打印出来14.

这是不变的eof,它的价值$0E还是14来自哪里?


编辑:这是编译结果

...
call @InitExe
// mov example, eof
mov [example], $0000000e
// writeln(example)
mov eax, [$004040a4]
mov edx, [example]
call @Write0Long
call @WriteLn
call @_IOTest
// readln;
...
Run Code Online (Sandbox Code Playgroud)

delphi assembly delphi-7

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

如何获得2 ^ k的数字的lg2

获得数字的基数2对数的最佳解决方案是什么,我知道它是2的幂(2^k).(当然,我知道只有价值2^kk本身).

我想做的一种方法是减去1然后做一个bitcount:

lg2(n) = bitcount( n - 1 ) = k, iff k is an integer
0b10000 - 1 = 0b01111, bitcount(0b01111) = 4
Run Code Online (Sandbox Code Playgroud)

但有没有更快的方法(没有缓存)?还有一些不涉及bitcount的事情会很快知道吗?

其中一个应用是:

suppose you have bitmask
0b0110111000

and value
0b0101010101

and you are interested of
(value & bitmask) >> number of zeros in front of bitmask
(0b0101010101 & 0b0110111000) >> 3 = 0b100010

this can be done with

using bitcount
value & bitmask >> bitcount((bitmask - 1) xor bitmask) - …
Run Code Online (Sandbox Code Playgroud)

performance bit-manipulation logarithm bitcount micro-optimization

9
推荐指数
3
解决办法
593
查看次数

Haskell编译时函数计算

我想在编译时预先计算函数的值.

示例(实际功能更复杂,没有尝试编译):

base = 10
mymodulus n = n `mod` base -- or substitute with a function that takes
                            -- too much to compute at runtime
printmodules 0 = [mymodulus 0]
printmodules z = (mymodulus z):(printmodules (z-1))

main = printmodules 64
Run Code Online (Sandbox Code Playgroud)

知道mymodulus n将只叫n < 64,我想预先计算mymodulusn0..64在编译时.原因是它mymodulus非常昂贵并且会被多次重复使用.

compiler-construction static haskell code-generation metaprogramming

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

Latex两个标题并列的逐字逐句

如何在浮动内部使用自动字幕并排获得两个逐字环境?

\usepackage{float,fancyvrb}
...
\DefineVerbatimEnvironment{filecontents}{Verbatim}%
    {fontsize=\small,
        fontfamily=tt,
        gobble=4,
        frame=single,
        framesep=5mm,
        baselinestretch=0.8,
        labelposition=topline,
        samepage=true}

\newfloat{fileformat}{thp}{lof}[chapter]
\floatname{fileformat}{File Format}

\begin{fileformat}
    \begin{filecontents}
    A  B  C
    \end{filecontents}
    \caption{example.abc}
\end{fileformat}

\begin{fileformat}
    \begin{filecontents}
    C  B  A
    \end{filecontents}
    \caption{example.cba}
\end{fileformat}
Run Code Online (Sandbox Code Playgroud)

所以基本上我只需要将这些示例并排(并保持字幕的自动识别).我已经尝试了一段时间了.

layout latex tex verbatim

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

tk, tcl exec stderr, stdout 分开

我有一个 tcl 脚本。

问题是我必须调用一个可以向 stderr 写入内容的脚本(这不是严重失败)。

我想在 tk/tcl 中分别捕获 stderr 和 stdout。

if { [catch {exec "./script.sh" << $data } result] } {
   puts "$::errorInfo"
}
Run Code Online (Sandbox Code Playgroud)

此代码将返回我的结果,但它也包含 stderr。

我也想将结果传递给变量。

提前致谢...

scripting tk-toolkit tcl

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

Delphi标签和asm怪异?

我在Delphi 7中编写了一个asm函数,但它将我的代码转换为其他代码:

function f(x: Cardinal): Cardinal; register;
label err;
asm
  not eax
  mov edx,eax
  shr edx, 1
  and eax, edx
  bsf ecx, eax
  jz  err
  mov eax, 1
  shl eax, cl
  mov edx, eax
  add edx, edx
  or  eax, edx
  ret
  err:
  xor eax, eax
end;

// compiled version
f:
  push ebx       // !!!
  not eax
  mov edx,eax
  shr edx, 1
  and eax, edx
  bsf ecx, eax
  jz  +$0e
  mov eax, 1
  shl eax, cl
  mov edx, eax
  add edx, …
Run Code Online (Sandbox Code Playgroud)

delphi x86 assembly delphi-7 basm

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

在javascript中创建"新函数"别名的最短方法

创建"新函数"别名的最短路径(字符)是什么.

基本上这是代码高尔夫和缩小代码超出理由.所以,当你经常写:

a=function(a,b,c){return a+b+c;}
Run Code Online (Sandbox Code Playgroud)

你可以编写类似的东西(也让我们用抽象的return关键字和全局变量R):

a=$("a,b,c","R=a+b+c")
a=$(a,b,c){R=a+b+c}
Run Code Online (Sandbox Code Playgroud)

(不确定第二个是否可行.)

对于第一个例子,我提出的最好的是:

$=function(a,b){return new Function(a,"R=0;"+b+";return R")}
Run Code Online (Sandbox Code Playgroud)

尺寸(使用,声明)都很重要,但使用尺寸更重要.

javascript alias function

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

使用水平滚动处理React动画

我正在尝试使用React和React.addons.CSSTransitionGroup创建一个带有动画的水平滚动页面导航.目前我可以进行水平滚动(使用flexbox),页面打开/关闭,动画进入和离开.但动画并不是我想要的.

看看这个例子(jsfiddle).

当您单击上一页上的按钮时,它当前会将离开屏幕的页面向右推.虽然正确的结果是在同一个地方动画离开页面.我不知道如何使用CSSTransitionGroup实现这种效果,或者知道它是否可以使用它.

function generateId() {
  var r = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  for (var i = 0; i < 10; i += 1) {
    r += possible.charAt(Math.floor(Math.random() * possible.length));
  }
  return r;
}

var PageList = {
  pages: [],
  listener: function(newpages) {},
  open: function(caption, index) {
    if (index != null) {
      this.pages = this.pages.slice(0, index + 1);
    }
    this.pages.push({
      id: generateId(),
      caption: caption,
      width: (150 + Math.random() * 50) | 0
    });
    this.listener(this.pages);
  } …
Run Code Online (Sandbox Code Playgroud)

css animation flexbox reactjs

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