Home > Software engineering >  Why ff sign extension for an unsigned integer?
Why ff sign extension for an unsigned integer?

Time:02-04

This C code:

#include <stdio.h>
#define uint64 unsigned long long

unsigned long long main() {
    unsigned int i = 0x50da;
    unsigned int j = 0xc0ffee;
    uint64 k = 0x7ea707a11ed;
    k ^= ~(i & j) | 0x7ab00;
    return k;
}          

compiles to this assembly code:

   0x555555555129 <main 4>:     movl   $0x50da,-0x4(%rbp)
   0x555555555130 <main 11>:    movl   $0xc0ffee,-0x8(%rbp)
   0x555555555137 <main 18>:    movabs $0x7ea707a11ed,%rax
   0x555555555141 <main 28>:    mov    %rax,-0x10(%rbp)
   0x555555555145 <main 32>:    mov    -0x4(%rbp),           
  •  Tags:  
  • Related