cmp arg2, arg1
performs the same operation as sub arg2, arg1
except that none of the operands are modified. The difference is not stored anywhere.
However, the flags register is updated and can be used in a conditional jump, like jump-if-equal (JE
), most often as the next instruction after the cmp
.
The advantage over other instructions is that you can compare two values without destroying any of them. If you did sub arg2, arg1
and they happen to be equal, one of them would be zero afterwards. With cmp
they are both still there.
Related Posts:
- What’s the purpose of the LEA instruction?
- What does the MOVZBL instruction do in IA-32 AT&T syntax?
- What’s the purpose of the LEA instruction?
- How to move ST(0) to EAX?
- The point of test %eax %eax
- Assembly: How does fld st(0) duplicates the top stack value in the following code?
- What does the MOVZBL instruction do in IA-32 AT&T syntax?
- What’s the purpose of the LEA instruction?
- The difference between cmpl and cmp
- x86 cmpl and jne
- What is the function of the push / pop instructions used on registers in x86 assembly?
- What is callq instruction?
- Purpose of ESI & EDI registers?
- What are the ESP and the EBP registers?
- IDIV operation in assembly (understanding)
- explanation about push ebp and pop ebp instruction in assembly
- x86 assembly: How does the ‘subl’ command work in AT&T syntax
- what does the cmpq instruction do?
- Purpose of ESI & EDI registers?
- Bubble sort on array on Assembly Language
- Nasm Error: invalid combination of opcode and operands
- When and why do we sign extend and use cdq with mul/div?
- How do AX, AH, AL map onto EAX?
- pop or add esp, 4 ? What is the difference?
- What is the difference between MOV and LEA?
- `testl` eax against eax?
- Difference between JE/JNE and JZ/JNZ
- Printing out a number in assembly language?
- What does `dword ptr` mean?
- Difference between JA and JG in assembly
- what does the the dword operand do in assembly
- What does the LEAL assembly instruction do?
- [Binary Bomb – Phase 4
- assembly “mov” instruction
- Why shift a bit using sll and such in MIPs Assembly?
- Assembly code vs Machine code vs Object code?
- Understanding how `lw` and `sw` actually work in a MIPS program
- need help understanding the movzbl call in this function
- MIPS: lw (load word) instruction
- What is the meaning of XOR in x86 assembly?
- What does the BEQ instruction do exactly?
- What’s the size of a QWORD on a 64-bit machine?
- MIPS assembly for a simple for loop
- Difference between JA and JG in assembly
- mips .word function and differences between 2 codes
- Display value found at given address gdb
- Why doesn’t there exists a subi opcode for MIPS?
- Convert C program into assembly code
- LC3 LEA instruction and the value stored
- What exactly does the lb instruction do?
- lc3 LDR instruction and the value stored
- What is the difference between la and li in opcodes in MIPS?
- What does movslq do?
- Assembly language je jump function
- What are .S files?
- Why are rbp and rsp called general purpose registers?
- x86 Assembly pointers
- what is the use of ori in this part of MIPS code?
- Storing a user’s input in MIPS
- Integer absolute value in MIPS?
- xorl %eax – Instruction set architecture in IA-32
- MIPS Assembly – lui $t0, 4097?
- Greater than, less than equal, greater than equal in MIPS
- Assembly addq clarification
- Which variable size to use (db, dw, dd) with x86 assembly?
- MIPS program jr $ra instructions and stack handling
- Assembly – JG/JNLE/JL/JNGE after CMP
- Subtract two input numbers
- writing functions in assembler
- JNZ & CMP Assembly Instructions
- X86 assembly – Handling the IDIV instruction
- Assembly language (MIPS) difference betweent addi and add
- MIPS Address out of range (MARS)
- Difference between “addi” and “add” for pseudoinstruction “move” in MIPS?
- sorting array in mips (assembly)
- what is a file handle and where it is useful for a programmer?
- How does `Skipcond` work in the MARIE assembly language?
- What are callee and caller saved registers?
- Multiplication by a power of 2 using Logical shifts in MIPS assembly
- MIPS instruction and machine code
- Convert from Java to MIPS
- Understanding Assembly MIPS .ALIGN and Memory Addressing
- error A2022: instruction operands must be the same size
- What’s the difference between a word and byte?
- Assembly Language – How to do Modulo?
- Difference between movq and movabsq in x86-64
- What is the jmpq command doing in this example
- Assembly – JZ instruction after CMP
- What does bx lr do in ARM assembly language?
- `js` and `jb` instructions in assembly
- How do I check for null values in JavaScript?
- C to assembly – leaq instruction
- How to compare dates in Java?
- How do I do a case-insensitive string comparison?
- How does tuple comparison work in Python?
- What is the difference between get_page_link and get_permalink functions?
- WordPress or Drupal for data-heavy content site
- Is there a WordPress version that is incompatible with PHP 5.3?
- If X Amount of Time Has Passed Since Post Was Published, Do Something
- How customizable is a self-hosted WordPress blog compared to a Blogger blog?