home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 4,568 of 4,675   
   Frederick Virchanza Gotham to All   
   Leave everything intact before _start   
   15 Mar 23 08:14:44   
   
   From: cauldwell.thomas@nospicedham.gmail.com   
      
   I've been programming since the 90's in Visual Basic, C, C++, but just this   
   month I've really gotten into x86_64 assembler.   
      
   Using the GNU compiler suite, I've built my program and given it a new entry   
   point called 'pre_start' which does a few things before jumping into '_start'.   
      
   When 'pre_start' is finished processing and it's just about to jump into   
   '_start', I want to be certain that pre_start hasn't left any remnants at all   
   -- I need every register to be the way it was, and for the stack to be   
   unaltered.   
      
   Using the NASM assembler, I've written two macroes. I subsitute the former in   
   at the beginning of "pre_start", and I substitute the latter in just before   
   the instruction 'jmp _start'.   
      
   Here's what I currently have. What else would you put in there? I want to make   
   a generic way of saving and restoring everything that might change so that the   
   function has no lasting observable effect.   
      
   %macro backup_all_registers 0   
       push rax   
       push rbx   
       push rcx   
       push rdx   
       push rsi   
       push rdi   
       push r8   
       push r9   
       push r10   
       push r11   
       push r12   
       push r13   
       push r14   
       push r15   
   %endmacro   
      
   %macro restore_all_registers 0   
       pop r15   
       pop r14   
       pop r13   
       pop r12   
       pop r11   
       pop r10   
       pop r9   
       pop r8   
       pop rdi   
       pop rsi   
       pop rdx   
       pop rcx   
       pop rbx   
       pop rax   
   %endmacro   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca