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) 获得数字的基数2对数的最佳解决方案是什么,我知道它是2的幂(2^k
).(当然,我知道只有价值2^k
不k
本身).
我想做的一种方法是减去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
我想在编译时预先计算函数的值.
示例(实际功能更复杂,没有尝试编译):
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
,我想预先计算mymodulus
的n
值0..64
在编译时.原因是它mymodulus
非常昂贵并且会被多次重复使用.
compiler-construction static haskell code-generation metaprogramming
如何在浮动内部使用自动字幕并排获得两个逐字环境?
\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)
所以基本上我只需要将这些示例并排(并保持字幕的自动识别).我已经尝试了一段时间了.
我有一个 tcl 脚本。
问题是我必须调用一个可以向 stderr 写入内容的脚本(这不是严重失败)。
我想在 tk/tcl 中分别捕获 stderr 和 stdout。
if { [catch {exec "./script.sh" << $data } result] } {
puts "$::errorInfo"
}
Run Code Online (Sandbox Code Playgroud)
此代码将返回我的结果,但它也包含 stderr。
我也想将结果传递给变量。
提前致谢...
我在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) 创建"新函数"别名的最短路径(字符)是什么.
基本上这是代码高尔夫和缩小代码超出理由.所以,当你经常写:
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)
尺寸(使用,声明)都很重要,但使用尺寸更重要.
我正在尝试使用React和React.addons.CSSTransitionGroup创建一个带有动画的水平滚动页面导航.目前我可以进行水平滚动(使用flexbox),页面打开/关闭,动画进入和离开.但动画并不是我想要的.
当您单击上一页上的按钮时,它当前会将离开屏幕的页面向右推.虽然正确的结果是在同一个地方动画离开页面.我不知道如何使用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)