32-bit call w/ 16-bit return.

x86bios_at_gmail.com
Date: 03/04/05


Date: 4 Mar 2005 13:30:28 -0800

Hi,

I'm compiling an option rom. The strange thing happends with calling
functions that are defined in other files:

Assembly file 1:

_TEXT Segment para public USE16
       66| E8 00000000 E call MyFunction ;
_TEXT ends

As a result of this a dword is pushed on to the stack.

Assembly file 2:

_TEXT Segment para public USE16
 0000 initializeSegmentPointer proc
 0043 C3 ret
 0044 initializeSegmentPointer endp
_TEXT ends

As the result of the return, ONLY THE FIRST WORD is popped from the
stack.

Any ideas why such a mismatch?

Thanks!

 - Dima.



Relevant Pages

  • 32-bit call w/ 16-bit return.
    ... The strange thing happends with calling ... Assembly file 1: ... _TEXT Segment para public USE16 ... As a result of this a dword is pushed on to the stack. ...
    (comp.lang.asm.x86)
  • 32-bit call w/ 16-bit return.
    ... The strange thing happends with calling ... Assembly file 1: ... _TEXT Segment para public USE16 ... As a result of this a dword is pushed on to the stack. ...
    (alt.lang.asm)
  • Re: 32-bit call w/ 16-bit return.
    ... The strange thing happends with calling ... > Assembly file 1: ... > As a result of this a dword is pushed on to the stack. ...
    (alt.lang.asm)
  • Re: 32-bit call w/ 16-bit return.
    ... The strange thing happends with calling ... >Assembly file 1: ... >_TEXT Segment para public USE16 ...
    (comp.lang.asm.x86)
  • Re: How can i read the stack frames of running process?
    ... Can we read the stack frame's of the current process. ... i want to know the caller functions ... int a ... try parsing throught the generated assembly file and get to know the ...
    (comp.lang.c)