JL 在 at&t 语法中是啥意思?

Posted

技术标签:

【中文标题】JL 在 at&t 语法中是啥意思?【英文标题】:What does JL mean in at&t syntax?JL 在 at&t 语法中是什么意思? 【发布时间】:2014-11-17 21:32:59 【问题描述】:

我正在为学校做一个项目,但我找不到任何关于 JL 在 at&t 语法中的含义的信息。作为参考,问题是在NOP 运行时找到%eax 的值。这是它使用的代码:

MOV $492,%ebx
MOV $2494,%eax
MOV $28063,%ecx
CMP %eax,%ebx
JL L1
JMP L2
L1:
IMUL %eax,%ebx
ADD %eax,%ebx
MOV %ebx,%eax
SUB %ecx,%eax
JMP L3
L2:
IMUL %eax,%ebx
SUB %eax,%ebx
MOV %ebx,%eax
ADD %ecx,%eax
L3:
NOP

我也很欣赏JMP 的作用以及加法/减法/乘法的工作原理(ADD/SUB/IMUL)。我不想作弊,我只想了解发生了什么。例如,您在使用数学时是更改第一个数字还是第二个数字?非常感谢大家的帮助。

【问题讨论】:

如果小于就跳转?这里与其说是 AT&T 语法,不如说是 x86 指令集。 @AndonM.Coleman:AT&T 语法很重要,因为操作数在 AT&T 语法中切换! 【参考方案1】:

很遗憾,由于声誉不佳,我无法发表评论。但是,上述答案并不完全正确。

在 AT&T 语法中给出的代码信息对于给出正确答案至关重要,因为操作数是在 AT&T 语法中切换的。其实什么代码

CMP %eax,%ebx
JL L1

在 AT&T 语法中的解释是:“如果 EBX 的内容小于 EAX 的内容,则跳转到标签 L1”——而不是前面提到的相反。

【讨论】:

【参考方案2】:

jl(小于号跳转,有符号) wiki

【讨论】:

【参考方案3】:

那是汇编语言,JLJump if Less

这也适用于 x86 汇编语言。

 CMP %eax,%ebx 
 JL L1

我们将 EAX 与 EBX 进行比较,然后根据该比较跳转到 L1。

更具体——如果EAX的内容小于EBX的内容,跳转到标签L1

见 - Assembly - JG/JNLE/JL/JNGE after CMP

【讨论】:

有道理,但是 %eax 更多还是 %ebx 更多,它是如何跳跃的? 如果 %eax 更多或 %ebx 更多,它会跳转到 L1 吗? @Ella - 我们说“少于 EBX 的内容”,意思是,EBX 对吗? @Ella - 对我来说已经有一段时间了,因为我接触了 ASM @Coffee:现在我有足够的声望来写评论:请您更正您的句子“更具体-如果EAX的内容小于EBX的内容,则跳转到标签L1 “?在 AT&T 语法中正好相反,OP 明确要求 AT&T 语法。请参阅我对这个问题的回答。

以上是关于JL 在 at&t 语法中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

=> 符号在 Haskell 中是啥意思?

旧式 JOIN 语法在 T-SQL 中是啥意思?

C语言里%zd是啥意思?

<OR> 在 Proguard 去混淆跟踪中是啥意思?

int $0x80是啥意思(汇编语言)

@@variable 在 Ruby 中是啥意思?