问题
I'm working on a project for school and I cannot find anything on the what JL
means in at&t syntax. For reference, the question is to find the value of %eax
when NOP
runs. Here is the code it's used in:
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
Also I would appreciate what JMP
does as well as how the addition/subtraction/multiplication works (ADD
/SUB
/IMUL
). I don't want to cheat, I just want to understand what's happening. For example, do you change the first number or the second when using math? Thank you all so much for helping.
回答1:
That is assemply language , JL
is Jump if Less
This also works in x86 assembly language.
CMP %eax,%ebx
JL L1
We compare EAX to EBX, then we'll jump to L1 depending on that comparison.
More specific - If the contents of EAX are less than the contents of EBX, jump to the label L1
See - Assembly - JG/JNLE/JL/JNGE after CMP
回答2:
Unfortunately, I can't comment due to low reputation. However, the above answers are not fully correct.
The information that the code is given in AT&T syntax is crucial to give the correct answer, since the operands are switched in AT&T syntax. In fact, what the code
CMP %eax,%ebx
JL L1
interpreted in AT&T syntax does is: "If the contents of EBX are less than the contents of EAX, jump to the label L1" - and not the other way round as mentioned before.
回答3:
jl (jump on less than, signed) wiki
来源:https://stackoverflow.com/questions/26982366/what-does-jl-mean-in-att-syntax