|
|
1.1 ! root 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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.