File:  [Qemu by Fabrice Bellard] / qemu / tests / test-i386-code16.S
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:51:12 2018 UTC (3 years, 3 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1001, qemu1000, qemu0151, qemu0150, qemu0141, qemu0140, qemu0130, qemu0125, qemu0124, qemu0123, qemu0122, qemu0121, qemu0120, qemu0111, qemu0110, qemu0105, qemu0104, qemu0103, qemu0102, qemu0101, qemu0100, HEAD
qemu 0.10.0

    1:         .code16
    2:         .globl code16_start
    3:         .globl code16_end
    4: 
    5: CS_SEG = 0xf
    6: 
    7: code16_start:
    8: 
    9:         .globl code16_func1
   10: 
   11:         /* basic test */
   12: code16_func1 = . - code16_start
   13:         mov $1, %eax
   14:         data32 lret
   15: 
   16: /* test push/pop in 16 bit mode */
   17:         .globl code16_func2
   18: code16_func2 = . - code16_start
   19:         xor %eax, %eax
   20:         mov $0x12345678, %ebx
   21:         movl %esp, %ecx
   22:         push %bx
   23:         subl %esp, %ecx
   24:         pop %ax
   25:         data32 lret
   26: 
   27: /* test various jmp opcodes */
   28:         .globl code16_func3
   29: code16_func3 = . - code16_start
   30:         jmp 1f
   31:         nop
   32: 1:
   33:         mov $4, %eax
   34:         mov $0x12345678, %ebx
   35:         xor %bx, %bx
   36:         jz 2f
   37:         add $2, %ax
   38: 2:
   39: 
   40:         call myfunc
   41: 
   42:         lcall $CS_SEG, $(myfunc2 - code16_start)
   43: 
   44:         ljmp $CS_SEG, $(myjmp1 - code16_start)
   45: myjmp1_next:
   46: 
   47:         cs lcall *myfunc2_addr - code16_start
   48: 
   49:         cs ljmp *myjmp2_addr - code16_start
   50: myjmp2_next:
   51: 
   52:         data32 lret
   53: 
   54: myfunc2_addr:
   55:         .short myfunc2 - code16_start
   56:         .short CS_SEG
   57: 
   58: myjmp2_addr:
   59:         .short myjmp2 - code16_start
   60:         .short CS_SEG
   61: 
   62: myjmp1:
   63:         add $8, %ax
   64:         jmp myjmp1_next
   65: 
   66: myjmp2:
   67:         add $16, %ax
   68:         jmp myjmp2_next
   69: 
   70: myfunc:
   71:         add $1, %ax
   72:         ret
   73: 
   74: myfunc2:
   75:         add $4, %ax
   76:         lret
   77: 
   78: 
   79: code16_end:

unix.superglobalmegacorp.com