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