问题标签 [cmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
23764 浏览

c - cmp je/jg 它们在装配中的工作方式

我想了解 cmp 和 je/jg 如何在汇编中工作。我在谷歌上看到了几个例子,但我还是有点困惑。下面我展示了我试图转换为 C 语言的一部分汇编代码和相应的 C 代码。它是以正确的方式实施还是我对 cmp 的工作原理有错误的理解?

0 投票
5 回答
49252 浏览

bash - 比较 Unix 中的两个文本文件的比较函数

我想知道是否有人可以告诉我unix中是否有一个函数,bash可以比较文件的所有行。如果它们不同,则应输出真/假或-1,0,1。我知道这些 cmp 函数存在于其他语言中。我一直在查看手册页,但没有成功。如果它不可用,有人可以帮我想出一个替代解决方案吗?

谢谢

0 投票
2 回答
67 浏览

c - 'C' 显示为 2 个不同的值?

我正在尝试比较汇编中的 2 个不同的字符(在 C 程序中调用汇编函数)。其中一个char属于结构,另一个在调用函数时传入。

当我使用 gdb 调试时,%ebx 是 83,而 10(%edi) 是 21315。如果我将它们作为字符打印出来,两者似乎都是“C”。有什么方法可以将 21315 转换为 83?

0 投票
1 回答
2947 浏览

assembly - cmp汇编语言指令-gas格式

我正在将 32 位和 64 位汇编语言文件从 gas 格式转换为 MASM 格式,并且在我的代码中遇到了一条似乎完全有问题的指令。我的意思是,我认为汇编器无法知道操作数的大小,指令是否从内存中获取 8、16、32 或 64 位来执行比较。这是说明:

  • cmp $0, 8(%rsp)

如果指令是以下指令之一,汇编器可能已经根据寄存器计算出要获取和比较的内存操作数的大小:

  • cmp %rax, 8(%rsp)
  • cmp %eax, 8(%rsp)
  • cmp %ax, 8(%rsp)

我原以为指令需要是 cmpb、cmpw、cmpl、cmpq ......但不,我的程序只用 cmp 指令就可以很好地组装它。不幸的是,我不记得这段代码在做什么,而且非常不明显......所以解决这个问题的更简单方法是知道指令在做什么。

有人知道吗?任何人都明白为什么这种语法(未指定操作数大小/类型)甚至允许使用直接操作数?

0 投票
5 回答
131971 浏览

assembly - JNZ & CMP 组装说明

如果我错了,请纠正我。

这是我对JNZ和的理解CMP

JNZZ- 如果标志不为零 (1) ,将发生跳转

CMP- 如果两个值相等,Z则设置标志 (1),否则不设置 (0)

奥利 DBG

这是我正在观看的 Flash 教程。它正在教一个简单的 CrackMe 的解决方案。

如您所见,前面的指令AL47h. 他们是平等的,树立了Z旗帜。(您可以在右侧的寄存器窗口中看到它)

下一条指令是JNZ. Z我的理解是,如果设置了标志,就会发生跳跃。设置了Z标志,但没有发生跳转!

为什么?

0 投票
1 回答
7343 浏览

assembly - 如何将 IA32 'cmp' 指令转换为 Y86?

IA32Y86

ATT大会

我有以下 IA32 汇编代码:

我正在尝试将其转换为 Y86 汇编代码。我在翻译比较指令时遇到问题:

谢谢。

0 投票
2 回答
1741 浏览

c - 用C程序调用linux命令cmp

我正在尝试制作一个程序,它获取 2 个文件路径到 main,并调用 linux 的 cmp 命令来比较它们。

如果它们相等,我想返回 2,如果它们不同,则返回 1。

出于某种原因,如果文件相同,我确实成功返回 2,但如果它们不同,则不会进入 if(stat==1),而是返回 0。为什么会发生这种情况?我通过终端检查了文件上的 cmp 是否确实返回 1 如果它们不同,那么为什么这不起作用?

0 投票
1 回答
1066 浏览

python - 这个 cmp 函数可以更好地写成 sorted() 的键吗?

我正在为如何通过重新排列然后连接集合中的整数来生成最大整数的问题编写一个解决方案。我被告知对于最大整数,当表示为整数时,集合中任意两个相邻整数的排列大于它们被交换的排列。即给定 {98, 9}; 排列 998 大于 989。这适用于下面给出的示例中的所有组成整数。

我需要编写一些适用于 Python 2.7 和 3.3 的代码,并提出以下 Python 代码:

这给出了输出:

现在 Raymond Hettinger 表示 'key=' 优于 'cmp=' 我倾向于同意他的观点(在他的 Pycon 2013 演讲“将代码转换为漂亮的惯用 Python”之前)。我的问题是我无法使用像 cmp 函数这样优雅的关键函数来解决问题

有任何想法吗?谢谢。

0 投票
3 回答
1003 浏览

php - PHP按3个值对多维数组进行排序

我想按值位置(只能是 1 或 0)、日期和时间对多维数组进行排序。position = 1 的数组应该是第一个,并且它们应该按日期和时间排序。position = 0 的数组应该在 position = 1 的数组之后,并且还应该按日期和时间排序

)

这就是我希望数组在排序后的样子:

)

我尝试了一些功能,但没有一个能正常工作。position = 1 的数组是最后一个数组,或者所有数组都按日期和时间排序。我自己想不通。如果我的英语不好,请提前致谢。

0 投票
1 回答
8803 浏览

python - Python 的 cmp_to_key 函数是如何工作的?

我在这里遇到了这个功能。

我对这将如何实现感到困惑——在不检查给定元素与其他所有感兴趣元素的比较情况下,如何知道给定元素应该是什么“位置”key生成的函数?cmp_to_key