search for: 0x8000_0000_0000_0000

Displaying 2 results from an estimated 2 matches for "0x8000_0000_0000_0000".

2019 Jul 21
2
Altering the return address , for a function with multiple return paths
Yes, indeed! The SBCL lisp compiler (not llvm based) used to emit functions which would return either via ret to the usual instruction after the call, or else load the return-address from the stack, then jump 2 bytes later (which would skip over either a nop or a short jmp at original target location). Which one it used depended upon whether the function was doing a multi-valued return (in which
2019 Jul 24
2
Altering the return address , for a function with multiple return paths
...xactly right and really terrible > if you don't. For example, if we want this function to compare two > pairs of /signed/ numbers, we need to move OF to CF without disturbing > ZF, which I don't think is possible without some really ugly > instruction sequences. (Or we could add 0x8000_0000_0000_0000 to both > operands before the comparison, but that's terrible in its own right.) > > That problem isn't as bad if it's just a single boolean in ZF or CF, but > it's still not great, at least on x86. > > Now, specialized purposes like SBCL's can definitely still...