小编use*_*613的帖子

ML类型的功能,一个小窍门?

我准备GATE考试.最古老的问题之一是我们不熟悉.有些专家请为我们澄清一下.

以下哪一项可以作为以下ML功能的类型?

my f(g, nil)=nil | f(g,x::xs)=(fn a  ? g(a,x))::f(g, xs);

1) (int *book ? real) * bool list ? (int ? real) list
2) (bool *int ? int) * real list ? (bool ? int) list
3) (int *int ? real) * real list ? (real ? bool) list
4) (bool *real ? int) * int list ? (int ? int) list
Run Code Online (Sandbox Code Playgroud)

答案表说(1)是纠正.评论或简短描述,以便更好地理解?

functional-programming ml

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

x86 程序集中符号扩展中的前导零?

我阅读了 Kip IRVINE 的著作《x86 处理器汇编语言》,他写道:

将较小的值复制到较大的值

尽管 MOV 不能直接将数据从较小的操作数复制到较大的操作数,但程序员可以创建变通方法。假设计数(无符号,16 位)必须移动到 ECX(32 位)。我们可以将 ECX 设置为零并将计数移动到 CX:

.data
count WORD 1
.code
mov ecx,0
mov cx,count
Run Code Online (Sandbox Code Playgroud)

如果我们用一个等于 -16 的有符号整数尝试相同的方法会发生什么?

.data
signedVal SWORD -16 ; FFF0h (-16)
.code
mov ecx,0
mov cx,signedVal ; ECX = 0000FFF0h (+65,520)
Run Code Online (Sandbox Code Playgroud)

ECX 中的值 (+65,520) 与 -16 完全不同。另一方面,如果我们先用 FFFFFFFFh 填充 ECX,然后将 signedVal 复制到 CX,则最终值将是正确的:

mov ecx,0FFFFFFFFh
mov cx,signedVal ; ECX = FFFFFFF0h (-16)
Run Code Online (Sandbox Code Playgroud)

我的问题是最后一部分。我认为我们应该在上面的代码中写第一行mov ecx,FFFFFFFFFh,而不是 0FFFFFFFFh。换句话说,什么是前导零?

binary x86 assembly hex unsigned

2
推荐指数
1
解决办法
1458
查看次数

标签 统计

assembly ×1

binary ×1

functional-programming ×1

hex ×1

ml ×1

unsigned ×1

x86 ×1