Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- kernel: file format elf32-i386
- Disassembly of section .text:
- 00100000 <_start-0xc>:
- 100000: 02 b0 ad 1b 00 00 add 0x1bad(%eax),%dh
- 100006: 00 00 add %al,(%eax)
- 100008: fe 4f 52 decb 0x52(%edi)
- 10000b: e4 bc in $0xbc,%al
- 0010000c <_start>:
- 10000c: bc 00 67 10 00 mov $0x106700,%esp
- 100011: e8 b3 13 00 00 call 1013c9 <init>
- 00100016 <_stop>:
- 100016: fa cli
- 100017: f4 hlt
- 100018: eb fc jmp 100016 <_stop>
- 10001a: 90 nop
- 10001b: 90 nop
- 0010001c <set_interrupt>:
- #include "interrupt.h"
- /* ---------- Globale Variablen ----------------------- */
- static uint64_t idt[IDT_ENTRIES]; //Interupt Deskriptor Table
- /* ---------- Eintrag in die IDT setzen --------------- */
- static void set_interrupt(int i, uint32_t offset, uint16_t selector, int type, bool present, int dpl){
- 10001c: 55 push %ebp
- 10001d: 89 e5 mov %esp,%ebp
- 10001f: 57 push %edi
- 100020: 56 push %esi
- 100021: 53 push %ebx
- 100022: 83 ec 08 sub $0x8,%esp
- 100025: 8b 55 10 mov 0x10(%ebp),%edx
- 100028: 8b 45 18 mov 0x18(%ebp),%eax
- 10002b: 66 89 55 f0 mov %dx,-0x10(%ebp)
- 10002f: 88 45 ec mov %al,-0x14(%ebp)
- idt[i] = 0;
- 100032: 8b 45 08 mov 0x8(%ebp),%eax
- 100035: c7 04 c5 00 67 10 00 movl $0x0,0x106700(,%eax,8)
- 10003c: 00 00 00 00
- 100040: c7 04 c5 04 67 10 00 movl $0x0,0x106704(,%eax,8)
- 100047: 00 00 00 00
- //untere 32-Bit
- idt[i] = (offset & 0x0000ffff) | (selector << 16);
- 10004b: 8b 45 0c mov 0xc(%ebp),%eax
- 10004e: 0f b7 d0 movzwl %ax,%edx
- 100051: 0f b7 45 f0 movzwl -0x10(%ebp),%eax
- 100055: c1 e0 10 shl $0x10,%eax
- 100058: 09 d0 or %edx,%eax
- 10005a: ba 00 00 00 00 mov $0x0,%edx
- 10005f: 8b 75 08 mov 0x8(%ebp),%esi
- 100062: 89 04 f5 00 67 10 00 mov %eax,0x106700(,%esi,8)
- 100069: 89 14 f5 04 67 10 00 mov %edx,0x106704(,%esi,8)
- //obere 32-Bit
- idt[i] |=(
- 100070: 8b 45 08 mov 0x8(%ebp),%eax
- 100073: 8b 34 c5 00 67 10 00 mov 0x106700(,%eax,8),%esi
- 10007a: 8b 3c c5 04 67 10 00 mov 0x106704(,%eax,8),%edi
- ( type << 8 ) |
- 100081: 8b 45 14 mov 0x14(%ebp),%eax
- 100084: 89 c2 mov %eax,%edx
- 100086: c1 e2 08 shl $0x8,%edx
- ( (dpl&3) << 13 ) |
- 100089: 8b 45 1c mov 0x1c(%ebp),%eax
- 10008c: 83 e0 03 and $0x3,%eax
- 10008f: c1 e0 0d shl $0xd,%eax
- idt[i] = 0;
- //untere 32-Bit
- idt[i] = (offset & 0x0000ffff) | (selector << 16);
- //obere 32-Bit
- idt[i] |=(
- ( type << 8 ) |
- 100092: 09 c2 or %eax,%edx
- ( (dpl&3) << 13 ) |
- ( (present&1) << 15)|
- 100094: 0f be 45 ec movsbl -0x14(%ebp),%eax
- 100098: c1 e0 0f shl $0xf,%eax
- 10009b: 25 ff ff 00 00 and $0xffff,%eax
- //untere 32-Bit
- idt[i] = (offset & 0x0000ffff) | (selector << 16);
- //obere 32-Bit
- idt[i] |=(
- ( type << 8 ) |
- ( (dpl&3) << 13 ) |
- 1000a0: 09 d0 or %edx,%eax
- ( (present&1) << 15)|
- ( offset & 0xffff0000 )
- 1000a2: 8b 55 0c mov 0xc(%ebp),%edx
- 1000a5: 66 ba 00 00 mov $0x0,%dx
- idt[i] = (offset & 0x0000ffff) | (selector << 16);
- //obere 32-Bit
- idt[i] |=(
- ( type << 8 ) |
- ( (dpl&3) << 13 ) |
- ( (present&1) << 15)|
- 1000a9: 09 d0 or %edx,%eax
- ( offset & 0xffff0000 )
- ) * 0x100000000;
- 1000ab: ba 00 00 00 00 mov $0x0,%edx
- 1000b0: 89 c2 mov %eax,%edx
- 1000b2: b8 00 00 00 00 mov $0x0,%eax
- static void set_interrupt(int i, uint32_t offset, uint16_t selector, int type, bool present, int dpl){
- idt[i] = 0;
- //untere 32-Bit
- idt[i] = (offset & 0x0000ffff) | (selector << 16);
- //obere 32-Bit
- idt[i] |=(
- 1000b7: 89 f1 mov %esi,%ecx
- 1000b9: 09 c1 or %eax,%ecx
- 1000bb: 89 fb mov %edi,%ebx
- 1000bd: 09 d3 or %edx,%ebx
- 1000bf: 8b 45 08 mov 0x8(%ebp),%eax
- 1000c2: 89 0c c5 00 67 10 00 mov %ecx,0x106700(,%eax,8)
- 1000c9: 89 1c c5 04 67 10 00 mov %ebx,0x106704(,%eax,8)
- ( type << 8 ) |
- ( (dpl&3) << 13 ) |
- ( (present&1) << 15)|
- ( offset & 0xffff0000 )
- ) * 0x100000000;
- }
- 1000d0: 83 c4 08 add $0x8,%esp
- 1000d3: 5b pop %ebx
- 1000d4: 5e pop %esi
- 1000d5: 5f pop %edi
- 1000d6: 5d pop %ebp
- 1000d7: c3 ret
- 001000d8 <load_idt>:
- /* ---------- IDT laden ------------------------------- */
- void load_idt(void){
- 1000d8: 55 push %ebp
- 1000d9: 89 e5 mov %esp,%ebp
- 1000db: 83 ec 10 sub $0x10,%esp
- struct {
- uint16_t size;
- uint64_t pointer;
- } __attribute__((packed)) idtp = {
- 1000de: 66 c7 45 f6 ff 00 movw $0xff,-0xa(%ebp)
- 1000e4: b8 00 67 10 00 mov $0x106700,%eax
- 1000e9: 89 c2 mov %eax,%edx
- 1000eb: c1 fa 1f sar $0x1f,%edx
- 1000ee: 89 45 f8 mov %eax,-0x8(%ebp)
- 1000f1: 89 55 fc mov %edx,-0x4(%ebp)
- .size = IDT_ENTRIES - 1,
- .pointer = &idt,
- };
- asm("lidt %0" : : "m" (idtp));
- 1000f4: 0f 01 5d f6 lidtl -0xa(%ebp)
- }
- 1000f8: c9 leave
- 1000f9: c3 ret
- 001000fa <init_idt>:
- /* ---------- IDT initalisieren ----------------------- */
- void init_idt(void){
- 1000fa: 55 push %ebp
- 1000fb: 89 e5 mov %esp,%ebp
- 1000fd: 83 ec 18 sub $0x18,%esp
- /// index, offset, selector, type, used, dpl
- set_interrupt(0x00, (uint32_t)&int_handler0x00,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100100: b8 6c 0f 10 00 mov $0x100f6c,%eax
- 100105: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10010c: 00
- 10010d: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100114: 00
- 100115: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10011c: 00
- 10011d: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100124: 00
- 100125: 89 44 24 04 mov %eax,0x4(%esp)
- 100129: c7 04 24 00 00 00 00 movl $0x0,(%esp)
- 100130: e8 e7 fe ff ff call 10001c <set_interrupt>
- set_interrupt(0x01, (uint32_t)&int_handler0x01,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100135: b8 75 0f 10 00 mov $0x100f75,%eax
- 10013a: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100141: 00
- 100142: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100149: 00
- 10014a: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100151: 00
- 100152: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100159: 00
- 10015a: 89 44 24 04 mov %eax,0x4(%esp)
- 10015e: c7 04 24 01 00 00 00 movl $0x1,(%esp)
- 100165: e8 b2 fe ff ff call 10001c <set_interrupt>
- set_interrupt(0x02, (uint32_t)&int_handler0x02,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10016a: b8 7e 0f 10 00 mov $0x100f7e,%eax
- 10016f: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100176: 00
- 100177: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10017e: 00
- 10017f: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100186: 00
- 100187: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10018e: 00
- 10018f: 89 44 24 04 mov %eax,0x4(%esp)
- 100193: c7 04 24 02 00 00 00 movl $0x2,(%esp)
- 10019a: e8 7d fe ff ff call 10001c <set_interrupt>
- set_interrupt(0x03, (uint32_t)&int_handler0x03,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10019f: b8 87 0f 10 00 mov $0x100f87,%eax
- 1001a4: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1001ab: 00
- 1001ac: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1001b3: 00
- 1001b4: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1001bb: 00
- 1001bc: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1001c3: 00
- 1001c4: 89 44 24 04 mov %eax,0x4(%esp)
- 1001c8: c7 04 24 03 00 00 00 movl $0x3,(%esp)
- 1001cf: e8 48 fe ff ff call 10001c <set_interrupt>
- set_interrupt(0x04, (uint32_t)&int_handler0x04,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1001d4: b8 90 0f 10 00 mov $0x100f90,%eax
- 1001d9: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1001e0: 00
- 1001e1: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1001e8: 00
- 1001e9: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1001f0: 00
- 1001f1: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1001f8: 00
- 1001f9: 89 44 24 04 mov %eax,0x4(%esp)
- 1001fd: c7 04 24 04 00 00 00 movl $0x4,(%esp)
- 100204: e8 13 fe ff ff call 10001c <set_interrupt>
- set_interrupt(0x05, (uint32_t)&int_handler0x05,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100209: b8 99 0f 10 00 mov $0x100f99,%eax
- 10020e: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100215: 00
- 100216: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10021d: 00
- 10021e: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100225: 00
- 100226: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10022d: 00
- 10022e: 89 44 24 04 mov %eax,0x4(%esp)
- 100232: c7 04 24 05 00 00 00 movl $0x5,(%esp)
- 100239: e8 de fd ff ff call 10001c <set_interrupt>
- set_interrupt(0x06, (uint32_t)&int_handler0x06,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10023e: b8 a2 0f 10 00 mov $0x100fa2,%eax
- 100243: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10024a: 00
- 10024b: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100252: 00
- 100253: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10025a: 00
- 10025b: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100262: 00
- 100263: 89 44 24 04 mov %eax,0x4(%esp)
- 100267: c7 04 24 06 00 00 00 movl $0x6,(%esp)
- 10026e: e8 a9 fd ff ff call 10001c <set_interrupt>
- set_interrupt(0x07, (uint32_t)&int_handler0x07,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100273: b8 ab 0f 10 00 mov $0x100fab,%eax
- 100278: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10027f: 00
- 100280: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100287: 00
- 100288: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10028f: 00
- 100290: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100297: 00
- 100298: 89 44 24 04 mov %eax,0x4(%esp)
- 10029c: c7 04 24 07 00 00 00 movl $0x7,(%esp)
- 1002a3: e8 74 fd ff ff call 10001c <set_interrupt>
- set_interrupt(0x08, (uint32_t)&int_handler0x08,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1002a8: b8 b4 0f 10 00 mov $0x100fb4,%eax
- 1002ad: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1002b4: 00
- 1002b5: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1002bc: 00
- 1002bd: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1002c4: 00
- 1002c5: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1002cc: 00
- 1002cd: 89 44 24 04 mov %eax,0x4(%esp)
- 1002d1: c7 04 24 08 00 00 00 movl $0x8,(%esp)
- 1002d8: e8 3f fd ff ff call 10001c <set_interrupt>
- set_interrupt(0x09, (uint32_t)&int_handler0x09,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1002dd: b8 b8 0f 10 00 mov $0x100fb8,%eax
- 1002e2: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1002e9: 00
- 1002ea: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1002f1: 00
- 1002f2: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1002f9: 00
- 1002fa: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100301: 00
- 100302: 89 44 24 04 mov %eax,0x4(%esp)
- 100306: c7 04 24 09 00 00 00 movl $0x9,(%esp)
- 10030d: e8 0a fd ff ff call 10001c <set_interrupt>
- set_interrupt(0x0A, (uint32_t)&int_handler0x0A,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100312: b8 be 0f 10 00 mov $0x100fbe,%eax
- 100317: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10031e: 00
- 10031f: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100326: 00
- 100327: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10032e: 00
- 10032f: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100336: 00
- 100337: 89 44 24 04 mov %eax,0x4(%esp)
- 10033b: c7 04 24 0a 00 00 00 movl $0xa,(%esp)
- 100342: e8 d5 fc ff ff call 10001c <set_interrupt>
- set_interrupt(0x0B, (uint32_t)&int_handler0x0B,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100347: b8 c2 0f 10 00 mov $0x100fc2,%eax
- 10034c: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100353: 00
- 100354: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10035b: 00
- 10035c: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100363: 00
- 100364: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10036b: 00
- 10036c: 89 44 24 04 mov %eax,0x4(%esp)
- 100370: c7 04 24 0b 00 00 00 movl $0xb,(%esp)
- 100377: e8 a0 fc ff ff call 10001c <set_interrupt>
- set_interrupt(0x0C, (uint32_t)&int_handler0x0C,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10037c: b8 c6 0f 10 00 mov $0x100fc6,%eax
- 100381: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100388: 00
- 100389: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100390: 00
- 100391: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100398: 00
- 100399: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1003a0: 00
- 1003a1: 89 44 24 04 mov %eax,0x4(%esp)
- 1003a5: c7 04 24 0c 00 00 00 movl $0xc,(%esp)
- 1003ac: e8 6b fc ff ff call 10001c <set_interrupt>
- set_interrupt(0x0D, (uint32_t)&int_handler0x0D,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1003b1: b8 ca 0f 10 00 mov $0x100fca,%eax
- 1003b6: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1003bd: 00
- 1003be: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1003c5: 00
- 1003c6: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1003cd: 00
- 1003ce: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1003d5: 00
- 1003d6: 89 44 24 04 mov %eax,0x4(%esp)
- 1003da: c7 04 24 0d 00 00 00 movl $0xd,(%esp)
- 1003e1: e8 36 fc ff ff call 10001c <set_interrupt>
- set_interrupt(0x0E, (uint32_t)&int_handler0x0E,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1003e6: b8 ce 0f 10 00 mov $0x100fce,%eax
- 1003eb: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1003f2: 00
- 1003f3: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1003fa: 00
- 1003fb: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100402: 00
- 100403: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10040a: 00
- 10040b: 89 44 24 04 mov %eax,0x4(%esp)
- 10040f: c7 04 24 0e 00 00 00 movl $0xe,(%esp)
- 100416: e8 01 fc ff ff call 10001c <set_interrupt>
- set_interrupt(0x0F, (uint32_t)&int_handler0x0F,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10041b: b8 d2 0f 10 00 mov $0x100fd2,%eax
- 100420: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100427: 00
- 100428: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10042f: 00
- 100430: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100437: 00
- 100438: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10043f: 00
- 100440: 89 44 24 04 mov %eax,0x4(%esp)
- 100444: c7 04 24 0f 00 00 00 movl $0xf,(%esp)
- 10044b: e8 cc fb ff ff call 10001c <set_interrupt>
- set_interrupt(0x10, (uint32_t)&int_handler0x10,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100450: b8 d8 0f 10 00 mov $0x100fd8,%eax
- 100455: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10045c: 00
- 10045d: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100464: 00
- 100465: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10046c: 00
- 10046d: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100474: 00
- 100475: 89 44 24 04 mov %eax,0x4(%esp)
- 100479: c7 04 24 10 00 00 00 movl $0x10,(%esp)
- 100480: e8 97 fb ff ff call 10001c <set_interrupt>
- set_interrupt(0x11, (uint32_t)&int_handler0x11,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100485: b8 de 0f 10 00 mov $0x100fde,%eax
- 10048a: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100491: 00
- 100492: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100499: 00
- 10049a: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1004a1: 00
- 1004a2: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1004a9: 00
- 1004aa: 89 44 24 04 mov %eax,0x4(%esp)
- 1004ae: c7 04 24 11 00 00 00 movl $0x11,(%esp)
- 1004b5: e8 62 fb ff ff call 10001c <set_interrupt>
- set_interrupt(0x12, (uint32_t)&int_handler0x12,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1004ba: b8 e2 0f 10 00 mov $0x100fe2,%eax
- 1004bf: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1004c6: 00
- 1004c7: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1004ce: 00
- 1004cf: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1004d6: 00
- 1004d7: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1004de: 00
- 1004df: 89 44 24 04 mov %eax,0x4(%esp)
- 1004e3: c7 04 24 12 00 00 00 movl $0x12,(%esp)
- 1004ea: e8 2d fb ff ff call 10001c <set_interrupt>
- set_interrupt(0x13, (uint32_t)&int_handler0x13,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1004ef: b8 e8 0f 10 00 mov $0x100fe8,%eax
- 1004f4: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1004fb: 00
- 1004fc: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100503: 00
- 100504: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10050b: 00
- 10050c: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100513: 00
- 100514: 89 44 24 04 mov %eax,0x4(%esp)
- 100518: c7 04 24 13 00 00 00 movl $0x13,(%esp)
- 10051f: e8 f8 fa ff ff call 10001c <set_interrupt>
- set_interrupt(0x14, (uint32_t)&int_handler0x14,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100524: b8 ee 0f 10 00 mov $0x100fee,%eax
- 100529: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100530: 00
- 100531: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100538: 00
- 100539: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100540: 00
- 100541: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100548: 00
- 100549: 89 44 24 04 mov %eax,0x4(%esp)
- 10054d: c7 04 24 14 00 00 00 movl $0x14,(%esp)
- 100554: e8 c3 fa ff ff call 10001c <set_interrupt>
- set_interrupt(0x15, (uint32_t)&int_handler0x15,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100559: b8 f4 0f 10 00 mov $0x100ff4,%eax
- 10055e: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100565: 00
- 100566: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10056d: 00
- 10056e: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100575: 00
- 100576: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10057d: 00
- 10057e: 89 44 24 04 mov %eax,0x4(%esp)
- 100582: c7 04 24 15 00 00 00 movl $0x15,(%esp)
- 100589: e8 8e fa ff ff call 10001c <set_interrupt>
- set_interrupt(0x16, (uint32_t)&int_handler0x16,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10058e: b8 fa 0f 10 00 mov $0x100ffa,%eax
- 100593: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10059a: 00
- 10059b: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1005a2: 00
- 1005a3: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1005aa: 00
- 1005ab: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1005b2: 00
- 1005b3: 89 44 24 04 mov %eax,0x4(%esp)
- 1005b7: c7 04 24 16 00 00 00 movl $0x16,(%esp)
- 1005be: e8 59 fa ff ff call 10001c <set_interrupt>
- set_interrupt(0x17, (uint32_t)&int_handler0x17,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1005c3: b8 00 10 10 00 mov $0x101000,%eax
- 1005c8: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1005cf: 00
- 1005d0: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1005d7: 00
- 1005d8: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1005df: 00
- 1005e0: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1005e7: 00
- 1005e8: 89 44 24 04 mov %eax,0x4(%esp)
- 1005ec: c7 04 24 17 00 00 00 movl $0x17,(%esp)
- 1005f3: e8 24 fa ff ff call 10001c <set_interrupt>
- set_interrupt(0x18, (uint32_t)&int_handler0x18,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1005f8: b8 06 10 10 00 mov $0x101006,%eax
- 1005fd: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100604: 00
- 100605: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10060c: 00
- 10060d: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100614: 00
- 100615: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10061c: 00
- 10061d: 89 44 24 04 mov %eax,0x4(%esp)
- 100621: c7 04 24 18 00 00 00 movl $0x18,(%esp)
- 100628: e8 ef f9 ff ff call 10001c <set_interrupt>
- set_interrupt(0x19, (uint32_t)&int_handler0x19,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10062d: b8 0c 10 10 00 mov $0x10100c,%eax
- 100632: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100639: 00
- 10063a: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100641: 00
- 100642: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100649: 00
- 10064a: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100651: 00
- 100652: 89 44 24 04 mov %eax,0x4(%esp)
- 100656: c7 04 24 19 00 00 00 movl $0x19,(%esp)
- 10065d: e8 ba f9 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1A, (uint32_t)&int_handler0x1A,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100662: b8 12 10 10 00 mov $0x101012,%eax
- 100667: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10066e: 00
- 10066f: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100676: 00
- 100677: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10067e: 00
- 10067f: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100686: 00
- 100687: 89 44 24 04 mov %eax,0x4(%esp)
- 10068b: c7 04 24 1a 00 00 00 movl $0x1a,(%esp)
- 100692: e8 85 f9 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1B, (uint32_t)&int_handler0x1B,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100697: b8 18 10 10 00 mov $0x101018,%eax
- 10069c: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1006a3: 00
- 1006a4: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1006ab: 00
- 1006ac: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1006b3: 00
- 1006b4: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1006bb: 00
- 1006bc: 89 44 24 04 mov %eax,0x4(%esp)
- 1006c0: c7 04 24 1b 00 00 00 movl $0x1b,(%esp)
- 1006c7: e8 50 f9 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1C, (uint32_t)&int_handler0x1C,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 1006cc: b8 1e 10 10 00 mov $0x10101e,%eax
- 1006d1: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1006d8: 00
- 1006d9: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1006e0: 00
- 1006e1: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1006e8: 00
- 1006e9: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1006f0: 00
- 1006f1: 89 44 24 04 mov %eax,0x4(%esp)
- 1006f5: c7 04 24 1c 00 00 00 movl $0x1c,(%esp)
- 1006fc: e8 1b f9 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1D, (uint32_t)&int_handler0x1D,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100701: b8 24 10 10 00 mov $0x101024,%eax
- 100706: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10070d: 00
- 10070e: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100715: 00
- 100716: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10071d: 00
- 10071e: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100725: 00
- 100726: 89 44 24 04 mov %eax,0x4(%esp)
- 10072a: c7 04 24 1d 00 00 00 movl $0x1d,(%esp)
- 100731: e8 e6 f8 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1E, (uint32_t)&int_handler0x1E,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 100736: b8 2a 10 10 00 mov $0x10102a,%eax
- 10073b: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100742: 00
- 100743: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10074a: 00
- 10074b: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100752: 00
- 100753: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10075a: 00
- 10075b: 89 44 24 04 mov %eax,0x4(%esp)
- 10075f: c7 04 24 1e 00 00 00 movl $0x1e,(%esp)
- 100766: e8 b1 f8 ff ff call 10001c <set_interrupt>
- set_interrupt(0x1F, (uint32_t)&int_handler0x1F,0x08,INTERRUPT_GATE,TRUE, 0 );//Exeption
- 10076b: b8 30 10 10 00 mov $0x101030,%eax
- 100770: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100777: 00
- 100778: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10077f: 00
- 100780: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100787: 00
- 100788: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10078f: 00
- 100790: 89 44 24 04 mov %eax,0x4(%esp)
- 100794: c7 04 24 1f 00 00 00 movl $0x1f,(%esp)
- 10079b: e8 7c f8 ff ff call 10001c <set_interrupt>
- set_interrupt(0x20, (uint32_t)&int_handler0x20,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1007a0: b8 88 0c 10 00 mov $0x100c88,%eax
- 1007a5: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1007ac: 00
- 1007ad: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1007b4: 00
- 1007b5: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1007bc: 00
- 1007bd: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1007c4: 00
- 1007c5: 89 44 24 04 mov %eax,0x4(%esp)
- 1007c9: c7 04 24 20 00 00 00 movl $0x20,(%esp)
- 1007d0: e8 47 f8 ff ff call 10001c <set_interrupt>
- set_interrupt(0x21, (uint32_t)&int_handler0x21,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1007d5: b8 8e 0c 10 00 mov $0x100c8e,%eax
- 1007da: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1007e1: 00
- 1007e2: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1007e9: 00
- 1007ea: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1007f1: 00
- 1007f2: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1007f9: 00
- 1007fa: 89 44 24 04 mov %eax,0x4(%esp)
- 1007fe: c7 04 24 21 00 00 00 movl $0x21,(%esp)
- 100805: e8 12 f8 ff ff call 10001c <set_interrupt>
- set_interrupt(0x22, (uint32_t)&int_handler0x22,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 10080a: b8 94 0c 10 00 mov $0x100c94,%eax
- 10080f: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100816: 00
- 100817: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10081e: 00
- 10081f: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100826: 00
- 100827: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10082e: 00
- 10082f: 89 44 24 04 mov %eax,0x4(%esp)
- 100833: c7 04 24 22 00 00 00 movl $0x22,(%esp)
- 10083a: e8 dd f7 ff ff call 10001c <set_interrupt>
- set_interrupt(0x23, (uint32_t)&int_handler0x23,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 10083f: b8 9a 0c 10 00 mov $0x100c9a,%eax
- 100844: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10084b: 00
- 10084c: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100853: 00
- 100854: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10085b: 00
- 10085c: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100863: 00
- 100864: 89 44 24 04 mov %eax,0x4(%esp)
- 100868: c7 04 24 23 00 00 00 movl $0x23,(%esp)
- 10086f: e8 a8 f7 ff ff call 10001c <set_interrupt>
- set_interrupt(0x24, (uint32_t)&int_handler0x24,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100874: b8 a0 0c 10 00 mov $0x100ca0,%eax
- 100879: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100880: 00
- 100881: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100888: 00
- 100889: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100890: 00
- 100891: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100898: 00
- 100899: 89 44 24 04 mov %eax,0x4(%esp)
- 10089d: c7 04 24 24 00 00 00 movl $0x24,(%esp)
- 1008a4: e8 73 f7 ff ff call 10001c <set_interrupt>
- set_interrupt(0x25, (uint32_t)&int_handler0x25,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1008a9: b8 a6 0c 10 00 mov $0x100ca6,%eax
- 1008ae: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1008b5: 00
- 1008b6: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1008bd: 00
- 1008be: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1008c5: 00
- 1008c6: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1008cd: 00
- 1008ce: 89 44 24 04 mov %eax,0x4(%esp)
- 1008d2: c7 04 24 25 00 00 00 movl $0x25,(%esp)
- 1008d9: e8 3e f7 ff ff call 10001c <set_interrupt>
- set_interrupt(0x26, (uint32_t)&int_handler0x26,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1008de: b8 ac 0c 10 00 mov $0x100cac,%eax
- 1008e3: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1008ea: 00
- 1008eb: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1008f2: 00
- 1008f3: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1008fa: 00
- 1008fb: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100902: 00
- 100903: 89 44 24 04 mov %eax,0x4(%esp)
- 100907: c7 04 24 26 00 00 00 movl $0x26,(%esp)
- 10090e: e8 09 f7 ff ff call 10001c <set_interrupt>
- set_interrupt(0x27, (uint32_t)&int_handler0x27,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100913: b8 b2 0c 10 00 mov $0x100cb2,%eax
- 100918: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 10091f: 00
- 100920: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100927: 00
- 100928: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 10092f: 00
- 100930: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100937: 00
- 100938: 89 44 24 04 mov %eax,0x4(%esp)
- 10093c: c7 04 24 27 00 00 00 movl $0x27,(%esp)
- 100943: e8 d4 f6 ff ff call 10001c <set_interrupt>
- set_interrupt(0x28, (uint32_t)&int_handler0x28,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100948: b8 b8 0c 10 00 mov $0x100cb8,%eax
- 10094d: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100954: 00
- 100955: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 10095c: 00
- 10095d: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100964: 00
- 100965: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 10096c: 00
- 10096d: 89 44 24 04 mov %eax,0x4(%esp)
- 100971: c7 04 24 28 00 00 00 movl $0x28,(%esp)
- 100978: e8 9f f6 ff ff call 10001c <set_interrupt>
- set_interrupt(0x29, (uint32_t)&int_handler0x29,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 10097d: b8 be 0c 10 00 mov $0x100cbe,%eax
- 100982: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100989: 00
- 10098a: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100991: 00
- 100992: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100999: 00
- 10099a: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1009a1: 00
- 1009a2: 89 44 24 04 mov %eax,0x4(%esp)
- 1009a6: c7 04 24 29 00 00 00 movl $0x29,(%esp)
- 1009ad: e8 6a f6 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2A, (uint32_t)&int_handler0x2A,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1009b2: b8 c4 0c 10 00 mov $0x100cc4,%eax
- 1009b7: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1009be: 00
- 1009bf: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1009c6: 00
- 1009c7: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 1009ce: 00
- 1009cf: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 1009d6: 00
- 1009d7: 89 44 24 04 mov %eax,0x4(%esp)
- 1009db: c7 04 24 2a 00 00 00 movl $0x2a,(%esp)
- 1009e2: e8 35 f6 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2B, (uint32_t)&int_handler0x2B,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 1009e7: b8 ca 0c 10 00 mov $0x100cca,%eax
- 1009ec: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 1009f3: 00
- 1009f4: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 1009fb: 00
- 1009fc: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100a03: 00
- 100a04: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100a0b: 00
- 100a0c: 89 44 24 04 mov %eax,0x4(%esp)
- 100a10: c7 04 24 2b 00 00 00 movl $0x2b,(%esp)
- 100a17: e8 00 f6 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2C, (uint32_t)&int_handler0x2C,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100a1c: b8 d0 0c 10 00 mov $0x100cd0,%eax
- 100a21: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100a28: 00
- 100a29: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100a30: 00
- 100a31: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100a38: 00
- 100a39: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100a40: 00
- 100a41: 89 44 24 04 mov %eax,0x4(%esp)
- 100a45: c7 04 24 2c 00 00 00 movl $0x2c,(%esp)
- 100a4c: e8 cb f5 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2D, (uint32_t)&int_handler0x2D,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100a51: b8 d6 0c 10 00 mov $0x100cd6,%eax
- 100a56: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100a5d: 00
- 100a5e: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100a65: 00
- 100a66: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100a6d: 00
- 100a6e: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100a75: 00
- 100a76: 89 44 24 04 mov %eax,0x4(%esp)
- 100a7a: c7 04 24 2d 00 00 00 movl $0x2d,(%esp)
- 100a81: e8 96 f5 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2E, (uint32_t)&int_handler0x2E,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100a86: b8 dc 0c 10 00 mov $0x100cdc,%eax
- 100a8b: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100a92: 00
- 100a93: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100a9a: 00
- 100a9b: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100aa2: 00
- 100aa3: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100aaa: 00
- 100aab: 89 44 24 04 mov %eax,0x4(%esp)
- 100aaf: c7 04 24 2e 00 00 00 movl $0x2e,(%esp)
- 100ab6: e8 61 f5 ff ff call 10001c <set_interrupt>
- set_interrupt(0x2F, (uint32_t)&int_handler0x2F,0x08,INTERRUPT_GATE,TRUE, 0 );//IRQ
- 100abb: b8 e2 0c 10 00 mov $0x100ce2,%eax
- 100ac0: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100ac7: 00
- 100ac8: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100acf: 00
- 100ad0: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100ad7: 00
- 100ad8: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100adf: 00
- 100ae0: 89 44 24 04 mov %eax,0x4(%esp)
- 100ae4: c7 04 24 2f 00 00 00 movl $0x2f,(%esp)
- 100aeb: e8 2c f5 ff ff call 10001c <set_interrupt>
- set_interrupt(0x30, (uint32_t)&test_int_handler00,0x08,INTERRUPT_GATE,TRUE,3);//Software
- 100af0: b8 50 10 10 00 mov $0x101050,%eax
- 100af5: c7 44 24 14 03 00 00 movl $0x3,0x14(%esp)
- 100afc: 00
- 100afd: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100b04: 00
- 100b05: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100b0c: 00
- 100b0d: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100b14: 00
- 100b15: 89 44 24 04 mov %eax,0x4(%esp)
- 100b19: c7 04 24 30 00 00 00 movl $0x30,(%esp)
- 100b20: e8 f7 f4 ff ff call 10001c <set_interrupt>
- set_interrupt(0x31, (uint32_t)&test_int_handler01,0x08,INTERRUPT_GATE,TRUE,3);//Software
- 100b25: b8 64 10 10 00 mov $0x101064,%eax
- 100b2a: c7 44 24 14 03 00 00 movl $0x3,0x14(%esp)
- 100b31: 00
- 100b32: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100b39: 00
- 100b3a: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100b41: 00
- 100b42: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100b49: 00
- 100b4a: 89 44 24 04 mov %eax,0x4(%esp)
- 100b4e: c7 04 24 31 00 00 00 movl $0x31,(%esp)
- 100b55: e8 c2 f4 ff ff call 10001c <set_interrupt>
- }
- 100b5a: c9 leave
- 100b5b: c3 ret
- 00100b5c <set_new_int>:
- /* ---------- Hardwareinterrupt (neu) registerien ----- */
- void set_new_int(int i, uint32_t offset){
- 100b5c: 55 push %ebp
- 100b5d: 89 e5 mov %esp,%ebp
- 100b5f: 83 ec 18 sub $0x18,%esp
- set_interrupt(i,offset,0x08,INTERRUPT_GATE,TRUE,0);
- 100b62: c7 44 24 14 00 00 00 movl $0x0,0x14(%esp)
- 100b69: 00
- 100b6a: c7 44 24 10 01 00 00 movl $0x1,0x10(%esp)
- 100b71: 00
- 100b72: c7 44 24 0c 06 00 00 movl $0x6,0xc(%esp)
- 100b79: 00
- 100b7a: c7 44 24 08 08 00 00 movl $0x8,0x8(%esp)
- 100b81: 00
- 100b82: 8b 45 0c mov 0xc(%ebp),%eax
- 100b85: 89 44 24 04 mov %eax,0x4(%esp)
- 100b89: 8b 45 08 mov 0x8(%ebp),%eax
- 100b8c: 89 04 24 mov %eax,(%esp)
- 100b8f: e8 88 f4 ff ff call 10001c <set_interrupt>
- }
- 100b94: c9 leave
- 100b95: c3 ret
- 100b96: 90 nop
- 100b97: 90 nop
- 00100b98 <outb>:
- #define _PORTIO_H
- #include <stdint.h>
- /* ---------- 8-Bit daten an 16-Bit port -------------- */
- static inline void outb(uint16_t port, uint8_t data){
- 100b98: 55 push %ebp
- 100b99: 89 e5 mov %esp,%ebp
- 100b9b: 83 ec 08 sub $0x8,%esp
- 100b9e: 8b 55 08 mov 0x8(%ebp),%edx
- 100ba1: 8b 45 0c mov 0xc(%ebp),%eax
- 100ba4: 66 89 55 fc mov %dx,-0x4(%ebp)
- 100ba8: 88 45 f8 mov %al,-0x8(%ebp)
- asm("outb %0, %1" : : "a" (data), "Nd" (port));
- 100bab: 0f b6 45 f8 movzbl -0x8(%ebp),%eax
- 100baf: 0f b7 55 fc movzwl -0x4(%ebp),%edx
- 100bb3: ee out %al,(%dx)
- }
- 100bb4: c9 leave
- 100bb5: c3 ret
- 00100bb6 <init_pic>:
- * (C) Copyright 2012 Michael Sippel
- */
- #include <portio.h>
- #include "interrupt.h"
- /* ---------- Initalisierung des PIC ------------------ */
- void init_pic(void){
- 100bb6: 55 push %ebp
- 100bb7: 89 e5 mov %esp,%ebp
- 100bb9: 83 ec 08 sub $0x8,%esp
- //PICs initalisieren
- outb(PIC_MASTER_i,PIC_INIT);
- 100bbc: c7 44 24 04 11 00 00 movl $0x11,0x4(%esp)
- 100bc3: 00
- 100bc4: c7 04 24 20 00 00 00 movl $0x20,(%esp)
- 100bcb: e8 c8 ff ff ff call 100b98 <outb>
- outb(PIC_SLAVE_i,PIC_INIT);
- 100bd0: c7 44 24 04 11 00 00 movl $0x11,0x4(%esp)
- 100bd7: 00
- 100bd8: c7 04 24 a0 00 00 00 movl $0xa0,(%esp)
- 100bdf: e8 b4 ff ff ff call 100b98 <outb>
- //Master
- outb(PIC_MASTER_c, FIRST_IRQ);//Erstes IRQ
- 100be4: c7 44 24 04 20 00 00 movl $0x20,0x4(%esp)
- 100beb: 00
- 100bec: c7 04 24 21 00 00 00 movl $0x21,(%esp)
- 100bf3: e8 a0 ff ff ff call 100b98 <outb>
- outb(PIC_MASTER_c, 0x04); //An IRQ 2 hängt der Slave
- 100bf8: c7 44 24 04 04 00 00 movl $0x4,0x4(%esp)
- 100bff: 00
- 100c00: c7 04 24 21 00 00 00 movl $0x21,(%esp)
- 100c07: e8 8c ff ff ff call 100b98 <outb>
- outb(PIC_MASTER_c, 0x01); //ICW 4
- 100c0c: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp)
- 100c13: 00
- 100c14: c7 04 24 21 00 00 00 movl $0x21,(%esp)
- 100c1b: e8 78 ff ff ff call 100b98 <outb>
- //Slave
- outb(PIC_SLAVE_c, FIRST_IRQ + 8);//Interrupt für IRQ 8
- 100c20: c7 44 24 04 28 00 00 movl $0x28,0x4(%esp)
- 100c27: 00
- 100c28: c7 04 24 a1 00 00 00 movl $0xa1,(%esp)
- 100c2f: e8 64 ff ff ff call 100b98 <outb>
- outb(PIC_SLAVE_c, 0x02); //An IRQ 2 hängt der Slave
- 100c34: c7 44 24 04 02 00 00 movl $0x2,0x4(%esp)
- 100c3b: 00
- 100c3c: c7 04 24 a1 00 00 00 movl $0xa1,(%esp)
- 100c43: e8 50 ff ff ff call 100b98 <outb>
- outb(PIC_SLAVE_c, 0x01); //ICW 4
- 100c48: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp)
- 100c4f: 00
- 100c50: c7 04 24 a1 00 00 00 movl $0xa1,(%esp)
- 100c57: e8 3c ff ff ff call 100b98 <outb>
- // All IRQs aktivieren / demaskieren
- outb(PIC_MASTER_i, 0x0);
- 100c5c: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
- 100c63: 00
- 100c64: c7 04 24 20 00 00 00 movl $0x20,(%esp)
- 100c6b: e8 28 ff ff ff call 100b98 <outb>
- outb(PIC_SLAVE_i, 0x0);
- 100c70: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
- 100c77: 00
- 100c78: c7 04 24 a0 00 00 00 movl $0xa0,(%esp)
- 100c7f: e8 14 ff ff ff call 100b98 <outb>
- }
- 100c84: c9 leave
- 100c85: c3 ret
- 100c86: 90 nop
- 100c87: 90 nop
- 00100c88 <int_handler0x20>:
- 100c88: e8 34 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100c8d: cf iret
- 00100c8e <int_handler0x21>:
- 100c8e: e8 2e 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100c93: cf iret
- 00100c94 <int_handler0x22>:
- 100c94: e8 28 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100c99: cf iret
- 00100c9a <int_handler0x23>:
- 100c9a: e8 22 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100c9f: cf iret
- 00100ca0 <int_handler0x24>:
- 100ca0: e8 1c 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100ca5: cf iret
- 00100ca6 <int_handler0x25>:
- 100ca6: e8 16 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100cab: cf iret
- 00100cac <int_handler0x26>:
- 100cac: e8 10 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100cb1: cf iret
- 00100cb2 <int_handler0x27>:
- 100cb2: e8 0a 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100cb7: cf iret
- 00100cb8 <int_handler0x28>:
- 100cb8: e8 04 0a 00 00 call 1016c1 <keyboard_irq_handler>
- 100cbd: cf iret
- 00100cbe <int_handler0x29>:
- 100cbe: e8 fe 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100cc3: cf iret
- 00100cc4 <int_handler0x2A>:
- 100cc4: e8 f8 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100cc9: cf iret
- 00100cca <int_handler0x2B>:
- 100cca: e8 f2 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100ccf: cf iret
- 00100cd0 <int_handler0x2C>:
- 100cd0: e8 ec 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100cd5: cf iret
- 00100cd6 <int_handler0x2D>:
- 100cd6: e8 e6 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100cdb: cf iret
- 00100cdc <int_handler0x2E>:
- 100cdc: e8 e0 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100ce1: cf iret
- 00100ce2 <int_handler0x2F>:
- 100ce2: e8 da 09 00 00 call 1016c1 <keyboard_irq_handler>
- 100ce7: cf iret
- 00100ce8 <cpu_dump>:
- /* ---------- CPU sichern ---------------------------- */
- void push_cpu(void);
- /* ---------- CPU wiederherstellen ---------------------*/
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- 100ce8: 55 push %ebp
- 100ce9: 89 e5 mov %esp,%ebp
- 100ceb: 53 push %ebx
- 100cec: 83 ec 24 sub $0x24,%esp
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- 100cef: 8b 45 08 mov 0x8(%ebp),%eax
- void push_cpu(void);
- /* ---------- CPU wiederherstellen ---------------------*/
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- 100cf2: 8b 58 0c mov 0xc(%eax),%ebx
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- 100cf5: 8b 45 08 mov 0x8(%ebp),%eax
- void push_cpu(void);
- /* ---------- CPU wiederherstellen ---------------------*/
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- 100cf8: 8b 48 08 mov 0x8(%eax),%ecx
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- 100cfb: 8b 45 08 mov 0x8(%ebp),%eax
- void push_cpu(void);
- /* ---------- CPU wiederherstellen ---------------------*/
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- 100cfe: 8b 50 04 mov 0x4(%eax),%edx
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- 100d01: 8b 45 08 mov 0x8(%ebp),%eax
- void push_cpu(void);
- /* ---------- CPU wiederherstellen ---------------------*/
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- 100d04: 8b 00 mov (%eax),%eax
- 100d06: 89 5c 24 10 mov %ebx,0x10(%esp)
- 100d0a: 89 4c 24 0c mov %ecx,0xc(%esp)
- 100d0e: 89 54 24 08 mov %edx,0x8(%esp)
- 100d12: 89 44 24 04 mov %eax,0x4(%esp)
- 100d16: c7 04 24 10 30 10 00 movl $0x103010,(%esp)
- 100d1d: e8 b8 22 00 00 call 102fda <printf>
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- 100d22: 8b 45 08 mov 0x8(%ebp),%eax
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- 100d25: 8b 58 2c mov 0x2c(%eax),%ebx
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- 100d28: 8b 45 08 mov 0x8(%ebp),%eax
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- 100d2b: 8b 48 2c mov 0x2c(%eax),%ecx
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- 100d2e: 8b 45 08 mov 0x8(%ebp),%eax
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- 100d31: 8b 50 28 mov 0x28(%eax),%edx
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- 100d34: 8b 45 08 mov 0x8(%ebp),%eax
- void pop_cpu(void);
- /* ---------- CPU ausgeben ---------------------------- */
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- 100d37: 8b 40 24 mov 0x24(%eax),%eax
- 100d3a: 89 5c 24 10 mov %ebx,0x10(%esp)
- 100d3e: 89 4c 24 0c mov %ecx,0xc(%esp)
- 100d42: 89 54 24 08 mov %edx,0x8(%esp)
- 100d46: 89 44 24 04 mov %eax,0x4(%esp)
- 100d4a: c7 04 24 44 30 10 00 movl $0x103044,(%esp)
- 100d51: e8 84 22 00 00 call 102fda <printf>
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- printf("SS = 0x%x INTR=0x%x ERROR = 0x%x \n",
- cpu->ss,cpu->intrpt,cpu->error_code);
- 100d56: 8b 45 08 mov 0x8(%ebp),%eax
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- printf("SS = 0x%x INTR=0x%x ERROR = 0x%x \n",
- 100d59: 8b 48 20 mov 0x20(%eax),%ecx
- cpu->ss,cpu->intrpt,cpu->error_code);
- 100d5c: 8b 45 08 mov 0x8(%ebp),%eax
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- printf("SS = 0x%x INTR=0x%x ERROR = 0x%x \n",
- 100d5f: 8b 50 1c mov 0x1c(%eax),%edx
- cpu->ss,cpu->intrpt,cpu->error_code);
- 100d62: 8b 45 08 mov 0x8(%ebp),%eax
- void cpu_dump(cpu_state *cpu){
- printf("EAX = 0x%x EBX= 0x%x ECX = 0x%x EDX = 0x%x \n",
- cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
- printf("EIP = 0x%x CS = 0x%x EFLAGS = 0x%x ESP = 0x%x \n",
- cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
- printf("SS = 0x%x INTR=0x%x ERROR = 0x%x \n",
- 100d65: 8b 40 34 mov 0x34(%eax),%eax
- 100d68: 89 4c 24 0c mov %ecx,0xc(%esp)
- 100d6c: 89 54 24 08 mov %edx,0x8(%esp)
- 100d70: 89 44 24 04 mov %eax,0x4(%esp)
- 100d74: c7 04 24 78 30 10 00 movl $0x103078,(%esp)
- 100d7b: e8 5a 22 00 00 call 102fda <printf>
- cpu->ss,cpu->intrpt,cpu->error_code);
- }
- 100d80: 83 c4 24 add $0x24,%esp
- 100d83: 5b pop %ebx
- 100d84: 5d pop %ebp
- 100d85: c3 ret
- 00100d86 <handle_exeption>:
- #include <stdint.h>
- #include <console.h>
- #include "cpu.h"
- void handle_exeption(cpu_state *cpu){
- 100d86: 55 push %ebp
- 100d87: 89 e5 mov %esp,%ebp
- 100d89: 83 ec 28 sub $0x28,%esp
- //Prüfen ob wirklich exeption
- char* err;
- switch(cpu->intrpt){
- 100d8c: 8b 45 08 mov 0x8(%ebp),%eax
- 100d8f: 8b 40 1c mov 0x1c(%eax),%eax
- 100d92: 83 f8 1f cmp $0x1f,%eax
- 100d95: 0f 87 5b 01 00 00 ja 100ef6 <handle_exeption+0x170>
- 100d9b: 8b 04 85 60 32 10 00 mov 0x103260(,%eax,4),%eax
- 100da2: ff e0 jmp *%eax
- case 0x00: err = "Divide by Zero";break;
- 100da4: c7 45 f4 ae 30 10 00 movl $0x1030ae,-0xc(%ebp)
- 100dab: e9 46 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x01: err = "Debug";break;
- 100db0: c7 45 f4 bd 30 10 00 movl $0x1030bd,-0xc(%ebp)
- 100db7: e9 3a 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x02: err = "Non Maskable Interrupt";break;
- 100dbc: c7 45 f4 c3 30 10 00 movl $0x1030c3,-0xc(%ebp)
- 100dc3: e9 2e 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x03: err = "Breakpoint";break;
- 100dc8: c7 45 f4 da 30 10 00 movl $0x1030da,-0xc(%ebp)
- 100dcf: e9 22 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x04: err = "Overflow";break;
- 100dd4: c7 45 f4 e5 30 10 00 movl $0x1030e5,-0xc(%ebp)
- 100ddb: e9 16 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x05: err = "Bound Range";break;
- 100de0: c7 45 f4 ee 30 10 00 movl $0x1030ee,-0xc(%ebp)
- 100de7: e9 0a 01 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x06: err = "Invalid Opcode";break;
- 100dec: c7 45 f4 fa 30 10 00 movl $0x1030fa,-0xc(%ebp)
- 100df3: e9 fe 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x07: err = "Device Not Aviable";break;
- 100df8: c7 45 f4 09 31 10 00 movl $0x103109,-0xc(%ebp)
- 100dff: e9 f2 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x08: err = "Double Fault";break;
- 100e04: c7 45 f4 1c 31 10 00 movl $0x10311c,-0xc(%ebp)
- 100e0b: e9 e6 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x09: err = "Coprocessor Segment Overrun";break;
- 100e10: c7 45 f4 29 31 10 00 movl $0x103129,-0xc(%ebp)
- 100e17: e9 da 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0A: err = "Invalid TTS";break;
- 100e1c: c7 45 f4 45 31 10 00 movl $0x103145,-0xc(%ebp)
- 100e23: e9 ce 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0B: err = "Segment not Present";break;
- 100e28: c7 45 f4 51 31 10 00 movl $0x103151,-0xc(%ebp)
- 100e2f: e9 c2 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0C: err = "Stack Fault";break;
- 100e34: c7 45 f4 65 31 10 00 movl $0x103165,-0xc(%ebp)
- 100e3b: e9 b6 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0D: err = "General Protection";break;
- 100e40: c7 45 f4 71 31 10 00 movl $0x103171,-0xc(%ebp)
- 100e47: e9 aa 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0E: err = "Page Fault";break;
- 100e4c: c7 45 f4 84 31 10 00 movl $0x103184,-0xc(%ebp)
- 100e53: e9 9e 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x0F: err = "Reserved Interrupt";break;
- 100e58: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100e5f: e9 92 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x10: err = "x87 Floating Point";break;
- 100e64: c7 45 f4 a2 31 10 00 movl $0x1031a2,-0xc(%ebp)
- 100e6b: e9 86 00 00 00 jmp 100ef6 <handle_exeption+0x170>
- case 0x11: err = "Alignment Check";break;
- 100e70: c7 45 f4 b5 31 10 00 movl $0x1031b5,-0xc(%ebp)
- 100e77: eb 7d jmp 100ef6 <handle_exeption+0x170>
- case 0x12: err = "Machine Check";break;
- 100e79: c7 45 f4 c5 31 10 00 movl $0x1031c5,-0xc(%ebp)
- 100e80: eb 74 jmp 100ef6 <handle_exeption+0x170>
- case 0x13: err = "SIMD Floating Point";break;
- 100e82: c7 45 f4 d3 31 10 00 movl $0x1031d3,-0xc(%ebp)
- 100e89: eb 6b jmp 100ef6 <handle_exeption+0x170>
- case 0x14: err = "Reserved Interrupt";break;
- 100e8b: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100e92: eb 62 jmp 100ef6 <handle_exeption+0x170>
- case 0x15: err = "Reserved Interrupt";break;
- 100e94: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100e9b: eb 59 jmp 100ef6 <handle_exeption+0x170>
- case 0x16: err = "Reserved Interrupt";break;
- 100e9d: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ea4: eb 50 jmp 100ef6 <handle_exeption+0x170>
- case 0x17: err = "Reserved Interrupt";break;
- 100ea6: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ead: eb 47 jmp 100ef6 <handle_exeption+0x170>
- case 0x18: err = "Reserved Interrupt";break;
- 100eaf: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100eb6: eb 3e jmp 100ef6 <handle_exeption+0x170>
- case 0x19: err = "Reserved Interrupt";break;
- 100eb8: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ebf: eb 35 jmp 100ef6 <handle_exeption+0x170>
- case 0x1A: err = "Reserved Interrupt";break;
- 100ec1: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ec8: eb 2c jmp 100ef6 <handle_exeption+0x170>
- case 0x1B: err = "Reserved Interrupt";break;
- 100eca: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ed1: eb 23 jmp 100ef6 <handle_exeption+0x170>
- case 0x1C: err = "Reserved Interrupt";break;
- 100ed3: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100eda: eb 1a jmp 100ef6 <handle_exeption+0x170>
- case 0x1D: err = "Reserved Interrupt";break;
- 100edc: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ee3: eb 11 jmp 100ef6 <handle_exeption+0x170>
- case 0x1E: err = "Reserved Interrupt";break;
- 100ee5: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100eec: eb 08 jmp 100ef6 <handle_exeption+0x170>
- case 0x1F: err = "Reserved Interrupt";break;
- 100eee: c7 45 f4 8f 31 10 00 movl $0x10318f,-0xc(%ebp)
- 100ef5: 90 nop
- }
- if(cpu->intrpt <= 0x1f){
- 100ef6: 8b 45 08 mov 0x8(%ebp),%eax
- 100ef9: 8b 40 1c mov 0x1c(%eax),%eax
- 100efc: 83 f8 1f cmp $0x1f,%eax
- 100eff: 77 46 ja 100f47 <handle_exeption+0x1c1>
- color = 0xf4;
- 100f01: c7 05 e4 46 10 00 f4 movl $0xf4,0x1046e4
- 100f08: 00 00 00
- printf("\nExeption %d #",cpu->intrpt);
- 100f0b: 8b 45 08 mov 0x8(%ebp),%eax
- 100f0e: 8b 40 1c mov 0x1c(%eax),%eax
- 100f11: 89 44 24 04 mov %eax,0x4(%esp)
- 100f15: c7 04 24 e7 31 10 00 movl $0x1031e7,(%esp)
- 100f1c: e8 b9 20 00 00 call 102fda <printf>
- printf(err);
- 100f21: 8b 45 f4 mov -0xc(%ebp),%eax
- 100f24: 89 04 24 mov %eax,(%esp)
- 100f27: e8 ae 20 00 00 call 102fda <printf>
- printf("\nKernel stopped.\n\n");
- 100f2c: c7 04 24 f6 31 10 00 movl $0x1031f6,(%esp)
- 100f33: e8 aa 1f 00 00 call 102ee2 <puts>
- //cpu ausgeben
- cpu_dump(cpu);
- 100f38: 8b 45 08 mov 0x8(%ebp),%eax
- 100f3b: 89 04 24 mov %eax,(%esp)
- 100f3e: e8 a5 fd ff ff call 100ce8 <cpu_dump>
- /* FIXME: Bis jetzt ersteinmal Kernel anhalten,
- * später programm beenden (hab ich noch nicht)
- */
- while(1){//Kernel anhalten
- asm("cli; hlt");
- 100f43: fa cli
- 100f44: f4 hlt
- }
- 100f45: eb fc jmp 100f43 <handle_exeption+0x1bd>
- }else{
- printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
- "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
- cpu->intrpt,cpu->intrpt);
- 100f47: 8b 45 08 mov 0x8(%ebp),%eax
- */
- while(1){//Kernel anhalten
- asm("cli; hlt");
- }
- }else{
- printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
- 100f4a: 8b 50 1c mov 0x1c(%eax),%edx
- "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
- cpu->intrpt,cpu->intrpt);
- 100f4d: 8b 45 08 mov 0x8(%ebp),%eax
- */
- while(1){//Kernel anhalten
- asm("cli; hlt");
- }
- }else{
- printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
- 100f50: 8b 40 1c mov 0x1c(%eax),%eax
- 100f53: 89 54 24 08 mov %edx,0x8(%esp)
- 100f57: 89 44 24 04 mov %eax,0x4(%esp)
- 100f5b: c7 04 24 08 32 10 00 movl $0x103208,(%esp)
- 100f62: e8 73 20 00 00 call 102fda <printf>
- "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
- cpu->intrpt,cpu->intrpt);
- }
- }
- 100f67: c9 leave
- 100f68: c3 ret
- 100f69: 90 nop
- 100f6a: 90 nop
- 100f6b: 90 nop
- 00100f6c <int_handler0x00>:
- 100f6c: 6a 00 push $0x0
- 100f6e: 6a 00 push $0x0
- 100f70: e9 c1 00 00 00 jmp 101036 <common_exeption_handler>
- 00100f75 <int_handler0x01>:
- 100f75: 6a 00 push $0x0
- 100f77: 6a 01 push $0x1
- 100f79: e9 b8 00 00 00 jmp 101036 <common_exeption_handler>
- 00100f7e <int_handler0x02>:
- 100f7e: 6a 00 push $0x0
- 100f80: 6a 02 push $0x2
- 100f82: e9 af 00 00 00 jmp 101036 <common_exeption_handler>
- 00100f87 <int_handler0x03>:
- 100f87: 6a 00 push $0x0
- 100f89: 6a 03 push $0x3
- 100f8b: e9 a6 00 00 00 jmp 101036 <common_exeption_handler>
- 00100f90 <int_handler0x04>:
- 100f90: 6a 00 push $0x0
- 100f92: 6a 04 push $0x4
- 100f94: e9 9d 00 00 00 jmp 101036 <common_exeption_handler>
- 00100f99 <int_handler0x05>:
- 100f99: 6a 00 push $0x0
- 100f9b: 6a 05 push $0x5
- 100f9d: e9 94 00 00 00 jmp 101036 <common_exeption_handler>
- 00100fa2 <int_handler0x06>:
- 100fa2: 6a 00 push $0x0
- 100fa4: 6a 06 push $0x6
- 100fa6: e9 8b 00 00 00 jmp 101036 <common_exeption_handler>
- 00100fab <int_handler0x07>:
- 100fab: 6a 00 push $0x0
- 100fad: 6a 07 push $0x7
- 100faf: e9 82 00 00 00 jmp 101036 <common_exeption_handler>
- 00100fb4 <int_handler0x08>:
- 100fb4: 6a 08 push $0x8
- 100fb6: eb 7e jmp 101036 <common_exeption_handler>
- 00100fb8 <int_handler0x09>:
- 100fb8: 6a 00 push $0x0
- 100fba: 6a 09 push $0x9
- 100fbc: eb 78 jmp 101036 <common_exeption_handler>
- 00100fbe <int_handler0x0A>:
- 100fbe: 6a 0a push $0xa
- 100fc0: eb 74 jmp 101036 <common_exeption_handler>
- 00100fc2 <int_handler0x0B>:
- 100fc2: 6a 0b push $0xb
- 100fc4: eb 70 jmp 101036 <common_exeption_handler>
- 00100fc6 <int_handler0x0C>:
- 100fc6: 6a 0c push $0xc
- 100fc8: eb 6c jmp 101036 <common_exeption_handler>
- 00100fca <int_handler0x0D>:
- 100fca: 6a 0d push $0xd
- 100fcc: eb 68 jmp 101036 <common_exeption_handler>
- 00100fce <int_handler0x0E>:
- 100fce: 6a 0e push $0xe
- 100fd0: eb 64 jmp 101036 <common_exeption_handler>
- 00100fd2 <int_handler0x0F>:
- 100fd2: 6a 00 push $0x0
- 100fd4: 6a 0f push $0xf
- 100fd6: eb 5e jmp 101036 <common_exeption_handler>
- 00100fd8 <int_handler0x10>:
- 100fd8: 6a 00 push $0x0
- 100fda: 6a 10 push $0x10
- 100fdc: eb 58 jmp 101036 <common_exeption_handler>
- 00100fde <int_handler0x11>:
- 100fde: 6a 11 push $0x11
- 100fe0: eb 54 jmp 101036 <common_exeption_handler>
- 00100fe2 <int_handler0x12>:
- 100fe2: 6a 00 push $0x0
- 100fe4: 6a 12 push $0x12
- 100fe6: eb 4e jmp 101036 <common_exeption_handler>
- 00100fe8 <int_handler0x13>:
- 100fe8: 6a 00 push $0x0
- 100fea: 6a 13 push $0x13
- 100fec: eb 48 jmp 101036 <common_exeption_handler>
- 00100fee <int_handler0x14>:
- 100fee: 6a 00 push $0x0
- 100ff0: 6a 14 push $0x14
- 100ff2: eb 42 jmp 101036 <common_exeption_handler>
- 00100ff4 <int_handler0x15>:
- 100ff4: 6a 00 push $0x0
- 100ff6: 6a 15 push $0x15
- 100ff8: eb 3c jmp 101036 <common_exeption_handler>
- 00100ffa <int_handler0x16>:
- 100ffa: 6a 00 push $0x0
- 100ffc: 6a 16 push $0x16
- 100ffe: eb 36 jmp 101036 <common_exeption_handler>
- 00101000 <int_handler0x17>:
- 101000: 6a 00 push $0x0
- 101002: 6a 17 push $0x17
- 101004: eb 30 jmp 101036 <common_exeption_handler>
- 00101006 <int_handler0x18>:
- 101006: 6a 00 push $0x0
- 101008: 6a 18 push $0x18
- 10100a: eb 2a jmp 101036 <common_exeption_handler>
- 0010100c <int_handler0x19>:
- 10100c: 6a 00 push $0x0
- 10100e: 6a 19 push $0x19
- 101010: eb 24 jmp 101036 <common_exeption_handler>
- 00101012 <int_handler0x1A>:
- 101012: 6a 00 push $0x0
- 101014: 6a 1a push $0x1a
- 101016: eb 1e jmp 101036 <common_exeption_handler>
- 00101018 <int_handler0x1B>:
- 101018: 6a 00 push $0x0
- 10101a: 6a 1b push $0x1b
- 10101c: eb 18 jmp 101036 <common_exeption_handler>
- 0010101e <int_handler0x1C>:
- 10101e: 6a 00 push $0x0
- 101020: 6a 1c push $0x1c
- 101022: eb 12 jmp 101036 <common_exeption_handler>
- 00101024 <int_handler0x1D>:
- 101024: 6a 00 push $0x0
- 101026: 6a 1d push $0x1d
- 101028: eb 0c jmp 101036 <common_exeption_handler>
- 0010102a <int_handler0x1E>:
- 10102a: 6a 00 push $0x0
- 10102c: 6a 1e push $0x1e
- 10102e: eb 06 jmp 101036 <common_exeption_handler>
- 00101030 <int_handler0x1F>:
- 101030: 6a 00 push $0x0
- 101032: 6a 1f push $0x1f
- 101034: eb 00 jmp 101036 <common_exeption_handler>
- 00101036 <common_exeption_handler>:
- 101036: 55 push %ebp
- 101037: 57 push %edi
- 101038: 56 push %esi
- 101039: 52 push %edx
- 10103a: 51 push %ecx
- 10103b: 53 push %ebx
- 10103c: 50 push %eax
- 10103d: 54 push %esp
- 10103e: e8 43 fd ff ff call 100d86 <handle_exeption>
- 101043: 58 pop %eax
- 101044: 58 pop %eax
- 101045: 5b pop %ebx
- 101046: 59 pop %ecx
- 101047: 5a pop %edx
- 101048: 5e pop %esi
- 101049: 5f pop %edi
- 10104a: 5d pop %ebp
- 10104b: 83 c4 08 add $0x8,%esp
- 10104e: cf iret
- 10104f: 90 nop
- 00101050 <test_int_handler00>:
- #ifndef _TEST_INT_HANDLER
- #define _TEST_INT_HANDLER
- #include <console.h>
- void test_int_handler00(void){
- 101050: 55 push %ebp
- 101051: 89 e5 mov %esp,%ebp
- 101053: 83 ec 18 sub $0x18,%esp
- puts("Hello world aus dem Interrupt 0x30!\n");
- 101056: c7 04 24 e0 32 10 00 movl $0x1032e0,(%esp)
- 10105d: e8 80 1e 00 00 call 102ee2 <puts>
- while(1);
- 101062: eb fe jmp 101062 <test_int_handler00+0x12>
- 00101064 <test_int_handler01>:
- }
- void test_int_handler01(void){
- 101064: 55 push %ebp
- 101065: 89 e5 mov %esp,%ebp
- 101067: 83 ec 18 sub $0x18,%esp
- puts("Das ist Interrupt 0x31\n");
- 10106a: c7 04 24 05 33 10 00 movl $0x103305,(%esp)
- 101071: e8 6c 1e 00 00 call 102ee2 <puts>
- while(1);
- 101076: eb fe jmp 101076 <test_int_handler01+0x12>
- 00101078 <push_cpu>:
- 101078: 55 push %ebp
- 101079: 57 push %edi
- 10107a: 56 push %esi
- 10107b: 52 push %edx
- 10107c: 51 push %ecx
- 10107d: 53 push %ebx
- 10107e: 50 push %eax
- 0010107f <pop_cpu>:
- 10107f: 58 pop %eax
- 101080: 5b pop %ebx
- 101081: 59 pop %ecx
- 101082: 5a pop %edx
- 101083: 5e pop %esi
- 101084: 5f pop %edi
- 101085: 5d pop %ebp
- 101086: 90 nop
- 101087: 90 nop
- 00101088 <pow>:
- #ifndef _MATH_H
- #define _MATH_H
- #define PI 3.1415926535897932384626433832795
- /* ---------- Bais hoch Exponent ---------------------- */
- double pow(double base, double exp){
- 101088: 55 push %ebp
- 101089: 89 e5 mov %esp,%ebp
- 10108b: 83 ec 20 sub $0x20,%esp
- 10108e: 8b 45 08 mov 0x8(%ebp),%eax
- 101091: 89 45 e8 mov %eax,-0x18(%ebp)
- 101094: 8b 45 0c mov 0xc(%ebp),%eax
- 101097: 89 45 ec mov %eax,-0x14(%ebp)
- 10109a: 8b 45 10 mov 0x10(%ebp),%eax
- 10109d: 89 45 e0 mov %eax,-0x20(%ebp)
- 1010a0: 8b 45 14 mov 0x14(%ebp),%eax
- 1010a3: 89 45 e4 mov %eax,-0x1c(%ebp)
- double ret = base;
- 1010a6: dd 45 e8 fldl -0x18(%ebp)
- 1010a9: dd 5d f8 fstpl -0x8(%ebp)
- int i;
- for(i = 0; i < exp; i++) ret *= ret;
- 1010ac: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
- 1010b3: eb 0d jmp 1010c2 <pow+0x3a>
- 1010b5: dd 45 f8 fldl -0x8(%ebp)
- 1010b8: dc 4d f8 fmull -0x8(%ebp)
- 1010bb: dd 5d f8 fstpl -0x8(%ebp)
- 1010be: 83 45 f4 01 addl $0x1,-0xc(%ebp)
- 1010c2: db 45 f4 fildl -0xc(%ebp)
- 1010c5: dd 45 e0 fldl -0x20(%ebp)
- 1010c8: da e9 fucompp
- 1010ca: df e0 fnstsw %ax
- 1010cc: 9e sahf
- 1010cd: 0f 97 c0 seta %al
- 1010d0: 84 c0 test %al,%al
- 1010d2: 75 e1 jne 1010b5 <pow+0x2d>
- return ret;
- 1010d4: dd 45 f8 fldl -0x8(%ebp)
- }
- 1010d7: c9 leave
- 1010d8: c3 ret
- 001010d9 <abs>:
- /* ---------- Absolutbetrag einer Zahl errechnen ------ */
- double abs(double z){
- 1010d9: 55 push %ebp
- 1010da: 89 e5 mov %esp,%ebp
- 1010dc: 83 ec 08 sub $0x8,%esp
- 1010df: 8b 45 08 mov 0x8(%ebp),%eax
- 1010e2: 89 45 f8 mov %eax,-0x8(%ebp)
- 1010e5: 8b 45 0c mov 0xc(%ebp),%eax
- 1010e8: 89 45 fc mov %eax,-0x4(%ebp)
- return (z < 0) ? (-z) : (z);
- 1010eb: d9 ee fldz
- 1010ed: dd 45 f8 fldl -0x8(%ebp)
- 1010f0: d9 c9 fxch %st(1)
- 1010f2: da e9 fucompp
- 1010f4: df e0 fnstsw %ax
- 1010f6: 9e sahf
- 1010f7: 0f 97 c0 seta %al
- 1010fa: 84 c0 test %al,%al
- 1010fc: 74 07 je 101105 <abs+0x2c>
- 1010fe: dd 45 f8 fldl -0x8(%ebp)
- 101101: d9 e0 fchs
- 101103: eb 03 jmp 101108 <abs+0x2f>
- 101105: dd 45 f8 fldl -0x8(%ebp)
- }
- 101108: c9 leave
- 101109: c3 ret
- 0010110a <set_gdt_entry>:
- #define GDT_ENTRIES 3
- /* ---------- Globale Variablen ----------------------- */
- static uint64_t gdt[GDT_ENTRIES]; //Global Deskriptor Table
- /* ---------- Eintrag in die GDT setzen --------------- */
- static void set_gdt_entry(int i, uint32_t limit, uint32_t base, uint8_t access, uint8_t flags){
- 10110a: 55 push %ebp
- 10110b: 89 e5 mov %esp,%ebp
- 10110d: 57 push %edi
- 10110e: 56 push %esi
- 10110f: 53 push %ebx
- 101110: 83 ec 08 sub $0x8,%esp
- 101113: 8b 55 14 mov 0x14(%ebp),%edx
- 101116: 8b 45 18 mov 0x18(%ebp),%eax
- 101119: 88 55 f0 mov %dl,-0x10(%ebp)
- 10111c: 88 45 ec mov %al,-0x14(%ebp)
- gdt[i] = 0;
- 10111f: 8b 45 08 mov 0x8(%ebp),%eax
- 101122: c7 04 c5 00 6f 10 00 movl $0x0,0x106f00(,%eax,8)
- 101129: 00 00 00 00
- 10112d: c7 04 c5 04 6f 10 00 movl $0x0,0x106f04(,%eax,8)
- 101134: 00 00 00 00
- //untere 32-Bit
- gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
- 101138: 8b 45 0c mov 0xc(%ebp),%eax
- 10113b: 0f b7 d0 movzwl %ax,%edx
- 10113e: 8b 45 10 mov 0x10(%ebp),%eax
- 101141: c1 e0 10 shl $0x10,%eax
- 101144: 09 d0 or %edx,%eax
- 101146: ba 00 00 00 00 mov $0x0,%edx
- 10114b: 8b 75 08 mov 0x8(%ebp),%esi
- 10114e: 89 04 f5 00 6f 10 00 mov %eax,0x106f00(,%esi,8)
- 101155: 89 14 f5 04 6f 10 00 mov %edx,0x106f04(,%esi,8)
- //obere 32-Bit
- gdt[i] |=(
- 10115c: 8b 45 08 mov 0x8(%ebp),%eax
- 10115f: 8b 34 c5 00 6f 10 00 mov 0x106f00(,%eax,8),%esi
- 101166: 8b 3c c5 04 6f 10 00 mov 0x106f04(,%eax,8),%edi
- ( (base & 0x00ff0000) >> 16 ) |
- 10116d: 8b 45 10 mov 0x10(%ebp),%eax
- 101170: 25 00 00 ff 00 and $0xff0000,%eax
- 101175: 89 c2 mov %eax,%edx
- 101177: c1 ea 10 shr $0x10,%edx
- ( access << 8 ) |
- 10117a: 0f b6 45 f0 movzbl -0x10(%ebp),%eax
- 10117e: c1 e0 08 shl $0x8,%eax
- gdt[i] = 0;
- //untere 32-Bit
- gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
- //obere 32-Bit
- gdt[i] |=(
- ( (base & 0x00ff0000) >> 16 ) |
- 101181: 09 c2 or %eax,%edx
- ( access << 8 ) |
- ( flags << 16 ) |
- 101183: 0f b6 45 ec movzbl -0x14(%ebp),%eax
- 101187: c1 e0 10 shl $0x10,%eax
- //untere 32-Bit
- gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
- //obere 32-Bit
- gdt[i] |=(
- ( (base & 0x00ff0000) >> 16 ) |
- ( access << 8 ) |
- 10118a: 09 c2 or %eax,%edx
- ( flags << 16 ) |
- ( (limit & 0xf0000) << 4) |
- 10118c: 8b 45 0c mov 0xc(%ebp),%eax
- 10118f: 25 00 00 0f 00 and $0xf0000,%eax
- 101194: c1 e0 04 shl $0x4,%eax
- 101197: 09 d0 or %edx,%eax
- ( (base & 0xff000000) << 56 )
- ) * 0x100000000;
- 101199: ba 00 00 00 00 mov $0x0,%edx
- 10119e: 89 c2 mov %eax,%edx
- 1011a0: b8 00 00 00 00 mov $0x0,%eax
- static void set_gdt_entry(int i, uint32_t limit, uint32_t base, uint8_t access, uint8_t flags){
- gdt[i] = 0;
- //untere 32-Bit
- gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
- //obere 32-Bit
- gdt[i] |=(
- 1011a5: 89 f1 mov %esi,%ecx
- 1011a7: 09 c1 or %eax,%ecx
- 1011a9: 89 fb mov %edi,%ebx
- 1011ab: 09 d3 or %edx,%ebx
- 1011ad: 8b 45 08 mov 0x8(%ebp),%eax
- 1011b0: 89 0c c5 00 6f 10 00 mov %ecx,0x106f00(,%eax,8)
- 1011b7: 89 1c c5 04 6f 10 00 mov %ebx,0x106f04(,%eax,8)
- ( access << 8 ) |
- ( flags << 16 ) |
- ( (limit & 0xf0000) << 4) |
- ( (base & 0xff000000) << 56 )
- ) * 0x100000000;
- }
- 1011be: 83 c4 08 add $0x8,%esp
- 1011c1: 5b pop %ebx
- 1011c2: 5e pop %esi
- 1011c3: 5f pop %edi
- 1011c4: 5d pop %ebp
- 1011c5: c3 ret
- 001011c6 <load_gdt>:
- /* ---------- GDT Laden (GDTR ändern) ----------------- */
- void load_gdt(void){
- 1011c6: 55 push %ebp
- 1011c7: 89 e5 mov %esp,%ebp
- 1011c9: 83 ec 10 sub $0x10,%esp
- struct {
- uint16_t size;
- uint64_t pointer;
- } __attribute__((packed)) gdtp = {
- 1011cc: 66 c7 45 f6 17 00 movw $0x17,-0xa(%ebp)
- 1011d2: b8 00 6f 10 00 mov $0x106f00,%eax
- 1011d7: 89 c2 mov %eax,%edx
- 1011d9: c1 fa 1f sar $0x1f,%edx
- 1011dc: 89 45 f8 mov %eax,-0x8(%ebp)
- 1011df: 89 55 fc mov %edx,-0x4(%ebp)
- .size = GDT_ENTRIES * 8 - 1,
- .pointer = &gdt,
- };
- asm("lgdt %0" : : "m" (gdtp));//GDT Laden
- 1011e2: 0f 01 55 f6 lgdtl -0xa(%ebp)
- }
- 1011e6: c9 leave
- 1011e7: c3 ret
- 001011e8 <init_gdt>:
- /* ---------- GDT initalisieren ----------------------- */
- void init_gdt(void){
- 1011e8: 55 push %ebp
- 1011e9: 89 e5 mov %esp,%ebp
- 1011eb: 83 ec 14 sub $0x14,%esp
- //Nulldeskriptor
- set_gdt_entry(0, 0, 0, 0, 0);
- 1011ee: c7 44 24 10 00 00 00 movl $0x0,0x10(%esp)
- 1011f5: 00
- 1011f6: c7 44 24 0c 00 00 00 movl $0x0,0xc(%esp)
- 1011fd: 00
- 1011fe: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp)
- 101205: 00
- 101206: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
- 10120d: 00
- 10120e: c7 04 24 00 00 00 00 movl $0x0,(%esp)
- 101215: e8 f0 fe ff ff call 10110a <set_gdt_entry>
- //Kernel - Codesegment
- set_gdt_entry(1, 0xfffff, 0, //index, limit, base
- 10121a: c7 44 24 10 0c 00 00 movl $0xc,0x10(%esp)
- 101221: 00
- 101222: c7 44 24 0c 9a 00 00 movl $0x9a,0xc(%esp)
- 101229: 00
- 10122a: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp)
- 101231: 00
- 101232: c7 44 24 04 ff ff 0f movl $0xfffff,0x4(%esp)
- 101239: 00
- 10123a: c7 04 24 01 00 00 00 movl $0x1,(%esp)
- 101241: e8 c4 fe ff ff call 10110a <set_gdt_entry>
- GDT_CODESEG_RD | GDT_SEGMENT | GDT_RING0 | GDT_PRESENT,//Access-Byte
- GDT_32_BIT | GDT_4K_GRAN); //Flags
- //Kernel - Datensegment
- set_gdt_entry(2, 0xfffff, 0, //index, limit, base
- 101246: c7 44 24 10 0c 00 00 movl $0xc,0x10(%esp)
- 10124d: 00
- 10124e: c7 44 24 0c 92 00 00 movl $0x92,0xc(%esp)
- 101255: 00
- 101256: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp)
- 10125d: 00
- 10125e: c7 44 24 04 ff ff 0f movl $0xfffff,0x4(%esp)
- 101265: 00
- 101266: c7 04 24 02 00 00 00 movl $0x2,(%esp)
- 10126d: e8 98 fe ff ff call 10110a <set_gdt_entry>
- GDT_DATASEG_WR | GDT_SEGMENT | GDT_RING0 | GDT_PRESENT,//Access-Byte
- GDT_32_BIT | GDT_4K_GRAN); //Flags
- //Userspace - Codesegment
- set_gdt_entry(3, 0xfffff, 0, //index, limit, base
- 101272: c7 44 24 10 0c 00 00 movl $0xc,0x10(%esp)
- 101279: 00
- 10127a: c7 44 24 0c fa 00 00 movl $0xfa,0xc(%esp)
- 101281: 00
- 101282: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp)
- 101289: 00
- 10128a: c7 44 24 04 ff ff 0f movl $0xfffff,0x4(%esp)
- 101291: 00
- 101292: c7 04 24 03 00 00 00 movl $0x3,(%esp)
- 101299: e8 6c fe ff ff call 10110a <set_gdt_entry>
- GDT_CODESEG_RD | GDT_SEGMENT | GDT_RING3 | GDT_PRESENT,//Access-Byte
- GDT_32_BIT | GDT_4K_GRAN); //Flags
- //Userpsace - Datensegment
- set_gdt_entry(4, 0xfffff, 0, //index, limit, base
- 10129e: c7 44 24 10 0c 00 00 movl $0xc,0x10(%esp)
- 1012a5: 00
- 1012a6: c7 44 24 0c f2 00 00 movl $0xf2,0xc(%esp)
- 1012ad: 00
- 1012ae: c7 44 24 08 00 00 00 movl $0x0,0x8(%esp)
- 1012b5: 00
- 1012b6: c7 44 24 04 ff ff 0f movl $0xfffff,0x4(%esp)
- 1012bd: 00
- 1012be: c7 04 24 04 00 00 00 movl $0x4,(%esp)
- 1012c5: e8 40 fe ff ff call 10110a <set_gdt_entry>
- GDT_DATASEG_WR | GDT_SEGMENT | GDT_RING3 | GDT_PRESENT,//Access-Byte
- GDT_32_BIT | GDT_4K_GRAN); //Flags
- //
- }
- 1012ca: c9 leave
- 1012cb: c3 ret
- 001012cc <init_gdt_fast>:
- /* ---------- GDT schnell initalisieren --------------- */
- void init_gdt_fast(void){
- 1012cc: 55 push %ebp
- 1012cd: 89 e5 mov %esp,%ebp
- gdt[0] = 0x0000000000000000;//Nulldeskriptor
- 1012cf: c7 05 00 6f 10 00 00 movl $0x0,0x106f00
- 1012d6: 00 00 00
- 1012d9: c7 05 04 6f 10 00 00 movl $0x0,0x106f04
- 1012e0: 00 00 00
- gdt[1] = 0x00FC9A000000FFFF;//Kernel - Codesegment
- 1012e3: c7 05 08 6f 10 00 ff movl $0xffff,0x106f08
- 1012ea: ff 00 00
- 1012ed: c7 05 0c 6f 10 00 00 movl $0xfc9a00,0x106f0c
- 1012f4: 9a fc 00
- gdt[2] = 0x00FC92000000FFFF;//Kernel - Datensegment
- 1012f7: c7 05 10 6f 10 00 ff movl $0xffff,0x106f10
- 1012fe: ff 00 00
- 101301: c7 05 14 6f 10 00 00 movl $0xfc9200,0x106f14
- 101308: 92 fc 00
- // gdt[3] = 0x00FCFA000000FFFF;//Userspace - Codesegment
- // gdt[4] = 0x00FCF2000000FFFF;//Userpsace - Datensegment
- }
- 10130b: 5d pop %ebp
- 10130c: c3 ret
- 0010130d <reload_segment_registers>:
- /* ---------- Segmenregister neuladen ----------------- */
- void reload_segment_registers(void){
- 10130d: 55 push %ebp
- 10130e: 89 e5 mov %esp,%ebp
- asm(
- 101310: ea 17 13 10 00 08 00 ljmp $0x8,$0x101317
- 101317: b8 10 00 00 00 mov $0x10,%eax
- 10131c: 8e d8 mov %eax,%ds
- 10131e: 8e c0 mov %eax,%es
- 101320: 8e e0 mov %eax,%fs
- 101322: 8e e8 mov %eax,%gs
- 101324: 8e d0 mov %eax,%ss
- "mov %eax, %es\n\t"
- "mov %eax, %fs\n\t"
- "mov %eax, %gs\n\t"
- "mov %eax, %ss\n\t"
- );
- }
- 101326: 5d pop %ebp
- 101327: c3 ret
- 00101328 <debug>:
- #define RESET_COLOR color = 0x07
- #define DONE color = 0x0a;puts("done! \n");RESET_COLOR
- #define FAIL color = 0x04;puts("failed!");textpos-=7
- void debug(int debug_on,char *string,...){
- 101328: 55 push %ebp
- 101329: 89 e5 mov %esp,%ebp
- 10132b: 83 ec 28 sub $0x28,%esp
- #if _DEBUG_PRINT
- if(debug_on){
- 10132e: 83 7d 08 00 cmpl $0x0,0x8(%ebp)
- 101332: 74 29 je 10135d <debug+0x35>
- long *args = ((long*)&string) + 1;
- 101334: 8d 45 0c lea 0xc(%ebp),%eax
- 101337: 83 c0 04 add $0x4,%eax
- 10133a: 89 45 f4 mov %eax,-0xc(%ebp)
- string = sprintfr(string,args);
- 10133d: 8b 45 0c mov 0xc(%ebp),%eax
- 101340: 8b 55 f4 mov -0xc(%ebp),%edx
- 101343: 89 54 24 04 mov %edx,0x4(%esp)
- 101347: 89 04 24 mov %eax,(%esp)
- 10134a: e8 89 03 00 00 call 1016d8 <sprintfr>
- 10134f: 89 45 0c mov %eax,0xc(%ebp)
- puts(string);
- 101352: 8b 45 0c mov 0xc(%ebp),%eax
- 101355: 89 04 24 mov %eax,(%esp)
- 101358: e8 85 1b 00 00 call 102ee2 <puts>
- }
- #endif
- }
- 10135d: c9 leave
- 10135e: c3 ret
- 0010135f <inip>:
- void inip(char *s){
- 10135f: 55 push %ebp
- 101360: 89 e5 mov %esp,%ebp
- 101362: 83 ec 18 sub $0x18,%esp
- #if _INIT_PRINT
- puts("[ init ] ");
- 101365: c7 04 24 20 33 10 00 movl $0x103320,(%esp)
- 10136c: e8 71 1b 00 00 call 102ee2 <puts>
- printf(s);
- 101371: 8b 45 08 mov 0x8(%ebp),%eax
- 101374: 89 04 24 mov %eax,(%esp)
- 101377: e8 5e 1c 00 00 call 102fda <printf>
- FAIL;
- 10137c: c7 05 e4 46 10 00 04 movl $0x4,0x1046e4
- 101383: 00 00 00
- 101386: c7 04 24 2a 33 10 00 movl $0x10332a,(%esp)
- 10138d: e8 50 1b 00 00 call 102ee2 <puts>
- 101392: a1 18 6f 10 00 mov 0x106f18,%eax
- 101397: 83 e8 07 sub $0x7,%eax
- 10139a: a3 18 6f 10 00 mov %eax,0x106f18
- #endif
- }
- 10139f: c9 leave
- 1013a0: c3 ret
- 001013a1 <end_ini>:
- void end_ini(void){
- 1013a1: 55 push %ebp
- 1013a2: 89 e5 mov %esp,%ebp
- 1013a4: 83 ec 18 sub $0x18,%esp
- #if _INIT_PRINT
- DONE;
- 1013a7: c7 05 e4 46 10 00 0a movl $0xa,0x1046e4
- 1013ae: 00 00 00
- 1013b1: c7 04 24 32 33 10 00 movl $0x103332,(%esp)
- 1013b8: e8 25 1b 00 00 call 102ee2 <puts>
- 1013bd: c7 05 e4 46 10 00 07 movl $0x7,0x1046e4
- 1013c4: 00 00 00
- #endif
- }
- 1013c7: c9 leave
- 1013c8: c3 ret
- 001013c9 <init>:
- #define _INIT_PRINT 1
- #define _DEBUG_PRINT 1
- #include "debug.h"
- /* ---------- Initalisierung des Kernels -------------- */
- void init(void){
- 1013c9: 55 push %ebp
- 1013ca: 89 e5 mov %esp,%ebp
- 1013cc: 83 ec 18 sub $0x18,%esp
- clearScreen();
- 1013cf: e8 5a 18 00 00 call 102c2e <clearScreen>
- color = 0x6f;
- 1013d4: c7 05 e4 46 10 00 6f movl $0x6f,0x1046e4
- 1013db: 00 00 00
- puts("Loading S e o s v0.0.1 winter beta 3... ");
- 1013de: c7 04 24 3c 33 10 00 movl $0x10333c,(%esp)
- 1013e5: e8 f8 1a 00 00 call 102ee2 <puts>
- puts("... [ INIT ] Copyright (C) Michael Sippel \n");
- 1013ea: c7 04 24 90 33 10 00 movl $0x103390,(%esp)
- 1013f1: e8 ec 1a 00 00 call 102ee2 <puts>
- RESET_COLOR;
- 1013f6: c7 05 e4 46 10 00 07 movl $0x7,0x1046e4
- 1013fd: 00 00 00
- inip("Initalizing GDT... ");
- 101400: c7 04 24 e4 33 10 00 movl $0x1033e4,(%esp)
- 101407: e8 53 ff ff ff call 10135f <inip>
- init_gdt_fast();end_ini();
- 10140c: e8 bb fe ff ff call 1012cc <init_gdt_fast>
- 101411: e8 8b ff ff ff call 1013a1 <end_ini>
- inip("Loading GDT (change GDTR)... ");
- 101416: c7 04 24 0c 34 10 00 movl $0x10340c,(%esp)
- 10141d: e8 3d ff ff ff call 10135f <inip>
- load_gdt();end_ini();
- 101422: e8 9f fd ff ff call 1011c6 <load_gdt>
- 101427: e8 75 ff ff ff call 1013a1 <end_ini>
- inip("Reload Segmentregisters... ");
- 10142c: c7 04 24 34 34 10 00 movl $0x103434,(%esp)
- 101433: e8 27 ff ff ff call 10135f <inip>
- reload_segment_registers();end_ini();
- 101438: e8 d0 fe ff ff call 10130d <reload_segment_registers>
- 10143d: e8 5f ff ff ff call 1013a1 <end_ini>
- puts("\n");
- 101442: c7 04 24 5a 34 10 00 movl $0x10345a,(%esp)
- 101449: e8 94 1a 00 00 call 102ee2 <puts>
- inip("Initalizing IDT... ");
- 10144e: c7 04 24 5c 34 10 00 movl $0x10345c,(%esp)
- 101455: e8 05 ff ff ff call 10135f <inip>
- init_idt();end_ini();
- 10145a: e8 9b ec ff ff call 1000fa <init_idt>
- 10145f: e8 3d ff ff ff call 1013a1 <end_ini>
- inip("Loading IDT... ");
- 101464: c7 04 24 84 34 10 00 movl $0x103484,(%esp)
- 10146b: e8 ef fe ff ff call 10135f <inip>
- load_idt();end_ini();
- 101470: e8 63 ec ff ff call 1000d8 <load_idt>
- 101475: e8 27 ff ff ff call 1013a1 <end_ini>
- inip("Initalizing PIC... ");
- 10147a: c7 04 24 ac 34 10 00 movl $0x1034ac,(%esp)
- 101481: e8 d9 fe ff ff call 10135f <inip>
- init_pic();end_ini();
- 101486: e8 2b f7 ff ff call 100bb6 <init_pic>
- 10148b: e8 11 ff ff ff call 1013a1 <end_ini>
- inip("Enable interrupts... ");
- 101490: c7 04 24 d4 34 10 00 movl $0x1034d4,(%esp)
- 101497: e8 c3 fe ff ff call 10135f <inip>
- sti();end_ini();
- 10149c: fb sti
- 10149d: e8 ff fe ff ff call 1013a1 <end_ini>
- inip("Initalizing keyboard... ");
- 1014a2: c7 04 24 fc 34 10 00 movl $0x1034fc,(%esp)
- 1014a9: e8 b1 fe ff ff call 10135f <inip>
- init_keyboard();end_ini();
- 1014ae: e8 75 01 00 00 call 101628 <init_keyboard>
- 1014b3: e8 e9 fe ff ff call 1013a1 <end_ini>
- //Fertig
- color = 0x02;
- 1014b8: c7 05 e4 46 10 00 02 movl $0x2,0x1046e4
- 1014bf: 00 00 00
- printf("\n \t \t %c %c\n",S_LINKS_OBEN, S_RECHTS_OBEN);
- 1014c2: c7 44 24 08 bf 00 00 movl $0xbf,0x8(%esp)
- 1014c9: 00
- 1014ca: c7 44 24 04 da 00 00 movl $0xda,0x4(%esp)
- 1014d1: 00
- 1014d2: c7 04 24 22 35 10 00 movl $0x103522,(%esp)
- 1014d9: e8 fc 1a 00 00 call 102fda <printf>
- printf(" \t \t Loading is done! \n");
- 1014de: c7 04 24 40 35 10 00 movl $0x103540,(%esp)
- 1014e5: e8 f8 19 00 00 call 102ee2 <puts>
- printf("\n \t \t %c %c\n\n",S_LINKS_UNTEN,S_RECHTS_UNTEN);
- 1014ea: c7 44 24 08 d9 00 00 movl $0xd9,0x8(%esp)
- 1014f1: 00
- 1014f2: c7 44 24 04 c0 00 00 movl $0xc0,0x4(%esp)
- 1014f9: 00
- 1014fa: c7 04 24 5c 35 10 00 movl $0x10355c,(%esp)
- 101501: e8 d4 1a 00 00 call 102fda <printf>
- RESET_COLOR;
- 101506: c7 05 e4 46 10 00 07 movl $0x7,0x1046e4
- 10150d: 00 00 00
- }
- 101510: c9 leave
- 101511: c3 ret
- 101512: 90 nop
- 101513: 90 nop
- 00101514 <outb>:
- #define _PORTIO_H
- #include <stdint.h>
- /* ---------- 8-Bit daten an 16-Bit port -------------- */
- static inline void outb(uint16_t port, uint8_t data){
- 101514: 55 push %ebp
- 101515: 89 e5 mov %esp,%ebp
- 101517: 83 ec 08 sub $0x8,%esp
- 10151a: 8b 55 08 mov 0x8(%ebp),%edx
- 10151d: 8b 45 0c mov 0xc(%ebp),%eax
- 101520: 66 89 55 fc mov %dx,-0x4(%ebp)
- 101524: 88 45 f8 mov %al,-0x8(%ebp)
- asm("outb %0, %1" : : "a" (data), "Nd" (port));
- 101527: 0f b6 45 f8 movzbl -0x8(%ebp),%eax
- 10152b: 0f b7 55 fc movzwl -0x4(%ebp),%edx
- 10152f: ee out %al,(%dx)
- }
- 101530: c9 leave
- 101531: c3 ret
- 00101532 <inb>:
- /* ---------- 8-Bit daten von 16-Bit port ------------- */
- static inline uint8_t inb(uint16_t port){
- 101532: 55 push %ebp
- 101533: 89 e5 mov %esp,%ebp
- 101535: 53 push %ebx
- 101536: 83 ec 18 sub $0x18,%esp
- 101539: 8b 45 08 mov 0x8(%ebp),%eax
- 10153c: 66 89 45 e8 mov %ax,-0x18(%ebp)
- unsigned char result = 0;
- 101540: c6 45 fb 00 movb $0x0,-0x5(%ebp)
- asm("inb %1, %0" : "=a" (result) : "Nd" (port));
- 101544: 0f b7 45 e8 movzwl -0x18(%ebp),%eax
- 101548: 66 89 45 e6 mov %ax,-0x1a(%ebp)
- 10154c: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx
- 101550: ec in (%dx),%al
- 101551: 89 c3 mov %eax,%ebx
- 101553: 88 5d fb mov %bl,-0x5(%ebp)
- return result;
- 101556: 0f b6 45 fb movzbl -0x5(%ebp),%eax
- }
- 10155a: 83 c4 18 add $0x18,%esp
- 10155d: 5b pop %ebx
- 10155e: 5d pop %ebp
- 10155f: c3 ret
- 00101560 <send_kbc_command>:
- #define KBC_COMM_READ_CCB 0x20
- #define KBC_COMM_WRITE_CCB 0x60
- #define KBC_COMMAND_OK 0xFA
- /* ---------- Befehl an KBC senden -------------------- */
- static uint8_t send_kbc_command(uint8_t port,uint8_t command){
- 101560: 55 push %ebp
- 101561: 89 e5 mov %esp,%ebp
- 101563: 83 ec 38 sub $0x38,%esp
- 101566: 8b 55 08 mov 0x8(%ebp),%edx
- 101569: 8b 45 0c mov 0xc(%ebp),%eax
- 10156c: 88 55 e4 mov %dl,-0x1c(%ebp)
- 10156f: 88 45 e0 mov %al,-0x20(%ebp)
- static int fz = 3; /// @p fz Fehlerzähler
- uint8_t ret;/// @p ret Rückgabe vom KBC
- //Warten bis Eigabepuffer leer ist
- while( inb(KBC_PORT_KBCREGISTER) & 0x2 );
- 101572: 90 nop
- 101573: c7 04 24 64 00 00 00 movl $0x64,(%esp)
- 10157a: e8 b3 ff ff ff call 101532 <inb>
- 10157f: 0f b6 c0 movzbl %al,%eax
- 101582: 83 e0 02 and $0x2,%eax
- 101585: 85 c0 test %eax,%eax
- 101587: 75 ea jne 101573 <send_kbc_command+0x13>
- //KBC-Befehl senden
- outb(port, command);
- 101589: 0f b6 55 e0 movzbl -0x20(%ebp),%edx
- 10158d: 0f b6 45 e4 movzbl -0x1c(%ebp),%eax
- 101591: 89 54 24 04 mov %edx,0x4(%esp)
- 101595: 89 04 24 mov %eax,(%esp)
- 101598: e8 77 ff ff ff call 101514 <outb>
- //Warten bis Antwort im Ausgabepuffer liegt
- while( inb(KBC_PORT_KBCREGISTER) & 0x1 );
- 10159d: 90 nop
- 10159e: c7 04 24 64 00 00 00 movl $0x64,(%esp)
- 1015a5: e8 88 ff ff ff call 101532 <inb>
- 1015aa: 0f b6 c0 movzbl %al,%eax
- 1015ad: 83 e0 01 and $0x1,%eax
- 1015b0: 84 c0 test %al,%al
- 1015b2: 75 ea jne 10159e <send_kbc_command+0x3e>
- //Antwort einlesen
- ret = inb(KBC_PORT_KBCDATA);
- 1015b4: c7 04 24 60 00 00 00 movl $0x60,(%esp)
- 1015bb: e8 72 ff ff ff call 101532 <inb>
- 1015c0: 88 45 f7 mov %al,-0x9(%ebp)
- //Erfolgreich?
- if(ret == KBC_COMMAND_OK || fz > 2){
- 1015c3: 80 7d f7 fa cmpb $0xfa,-0x9(%ebp)
- 1015c7: 74 0a je 1015d3 <send_kbc_command+0x73>
- 1015c9: a1 e0 46 10 00 mov 0x1046e0,%eax
- 1015ce: 83 f8 02 cmp $0x2,%eax
- 1015d1: 7e 10 jle 1015e3 <send_kbc_command+0x83>
- fz = 3;//Fehlerzähler rücksetzen
- 1015d3: c7 05 e0 46 10 00 03 movl $0x3,0x1046e0
- 1015da: 00 00 00
- return ret;//ENDE
- 1015dd: 0f b6 45 f7 movzbl -0x9(%ebp),%eax
- 1015e1: eb 21 jmp 101604 <send_kbc_command+0xa4>
- }else{
- --fz;//Fehlerzähler dekremantieren
- 1015e3: a1 e0 46 10 00 mov 0x1046e0,%eax
- 1015e8: 83 e8 01 sub $0x1,%eax
- 1015eb: a3 e0 46 10 00 mov %eax,0x1046e0
- send_kbc_command(port, command);//Nochmal versuchen
- 1015f0: 0f b6 55 e0 movzbl -0x20(%ebp),%edx
- 1015f4: 0f b6 45 e4 movzbl -0x1c(%ebp),%eax
- 1015f8: 89 54 24 04 mov %edx,0x4(%esp)
- 1015fc: 89 04 24 mov %eax,(%esp)
- 1015ff: e8 5c ff ff ff call 101560 <send_kbc_command>
- }
- }
- 101604: c9 leave
- 101605: c3 ret
- 00101606 <send_kbd_command>:
- /* ---------- Befehl an Tastatur senden --------------- */
- static uint8_t send_kbd_command(uint8_t command){
- 101606: 55 push %ebp
- 101607: 89 e5 mov %esp,%ebp
- 101609: 83 ec 28 sub $0x28,%esp
- 10160c: 8b 45 08 mov 0x8(%ebp),%eax
- 10160f: 88 45 f4 mov %al,-0xc(%ebp)
- return send_kbc_command(KBC_PORT_KBDCOMMAND,command);
- 101612: 0f b6 45 f4 movzbl -0xc(%ebp),%eax
- 101616: 89 44 24 04 mov %eax,0x4(%esp)
- 10161a: c7 04 24 60 00 00 00 movl $0x60,(%esp)
- 101621: e8 3a ff ff ff call 101560 <send_kbc_command>
- }
- 101626: c9 leave
- 101627: c3 ret
- 00101628 <init_keyboard>:
- #include "kbc.h"
- #include "keyboard.h"
- /* ---------- Tastatur initalisieren ------------------ */
- void init_keyboard(void){
- 101628: 55 push %ebp
- 101629: 89 e5 mov %esp,%ebp
- 10162b: 83 ec 18 sub $0x18,%esp
- color = 0x0F;
- 10162e: c7 05 e4 46 10 00 0f movl $0xf,0x1046e4
- 101635: 00 00 00
- //Warten bis Tastatur nicht mehr im Resetmodus ist
- while(! (inb(KBC_PORT_KBCREGISTER) & 0x4) );
- 101638: 90 nop
- 101639: c7 04 24 64 00 00 00 movl $0x64,(%esp)
- 101640: e8 ed fe ff ff call 101532 <inb>
- 101645: 0f b6 c0 movzbl %al,%eax
- 101648: 83 e0 04 and $0x4,%eax
- 10164b: 85 c0 test %eax,%eax
- 10164d: 74 ea je 101639 <init_keyboard+0x11>
- //Ausgabepuffer leeren
- while (inb(KBC_PORT_KBCREGISTER) & 0x1){
- 10164f: eb 0c jmp 10165d <init_keyboard+0x35>
- //Solange Ausgabepuffer voll ist Datenregister lesen
- inb(KBC_PORT_KBCDATA);
- 101651: c7 04 24 60 00 00 00 movl $0x60,(%esp)
- 101658: e8 d5 fe ff ff call 101532 <inb>
- //Warten bis Tastatur nicht mehr im Resetmodus ist
- while(! (inb(KBC_PORT_KBCREGISTER) & 0x4) );
- //Ausgabepuffer leeren
- while (inb(KBC_PORT_KBCREGISTER) & 0x1){
- 10165d: c7 04 24 64 00 00 00 movl $0x64,(%esp)
- 101664: e8 c9 fe ff ff call 101532 <inb>
- 101669: 0f b6 c0 movzbl %al,%eax
- 10166c: 83 e0 01 and $0x1,%eax
- 10166f: 84 c0 test %al,%al
- 101671: 75 de jne 101651 <init_keyboard+0x29>
- //Solange Ausgabepuffer voll ist Datenregister lesen
- inb(KBC_PORT_KBCDATA);
- }
- //LEDs ausschalten
- send_kbd_command(KBD_COMM_LEDS);
- 101673: c7 04 24 ed 00 00 00 movl $0xed,(%esp)
- 10167a: e8 87 ff ff ff call 101606 <send_kbd_command>
- outb(KBC_PORT_KBCDATA, 0);
- 10167f: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
- 101686: 00
- 101687: c7 04 24 60 00 00 00 movl $0x60,(%esp)
- 10168e: e8 81 fe ff ff call 101514 <outb>
- //Schnellste Wiederholrate einstellen
- send_kbd_command(KBD_COMM_WDHR);
- 101693: c7 04 24 f3 00 00 00 movl $0xf3,(%esp)
- 10169a: e8 67 ff ff ff call 101606 <send_kbd_command>
- outb(KBC_PORT_KBCDATA, 0);
- 10169f: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
- 1016a6: 00
- 1016a7: c7 04 24 60 00 00 00 movl $0x60,(%esp)
- 1016ae: e8 61 fe ff ff call 101514 <outb>
- //Tastatur aktivieren
- send_kbd_command(KBD_COMM_ACTV);
- 1016b3: c7 04 24 f4 00 00 00 movl $0xf4,(%esp)
- 1016ba: e8 47 ff ff ff call 101606 <send_kbd_command>
- }
- 1016bf: c9 leave
- 1016c0: c3 ret
- 001016c1 <keyboard_irq_handler>:
- /* ---------- IRQ handler für Tastatur ---------------- */
- void keyboard_irq_handler(void){
- 1016c1: 55 push %ebp
- 1016c2: 89 e5 mov %esp,%ebp
- 1016c4: 83 ec 18 sub $0x18,%esp
- printf("Taste gedrueckt!\n\n");
- 1016c7: c7 04 24 7b 35 10 00 movl $0x10357b,(%esp)
- 1016ce: e8 0f 18 00 00 call 102ee2 <puts>
- }
- 1016d3: c9 leave
- 1016d4: c3 ret
- 1016d5: 90 nop
- 1016d6: 90 nop
- 1016d7: 90 nop
- 001016d8 <sprintfr>:
- #define MINUS 45
- #define HEX10 55
- #define NULL 48
- /* ---------- Strings formatieren --------------------- */
- char* sprintfr(char *s,long *args){
- 1016d8: 55 push %ebp
- 1016d9: 89 e5 mov %esp,%ebp
- 1016db: 57 push %edi
- 1016dc: 56 push %esi
- 1016dd: 53 push %ebx
- 1016de: 81 ec e4 01 00 00 sub $0x1e4,%esp
- int i,z,j,ai,sG,sN;
- bool vorflag,nullflag;
- uint64_t BCD;
- uint32_t stelle;
- ai=0;
- 1016e4: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp)
- long arg;
- char *rs, b[10],bs;
- ///\p s eingabestring \p rs ausgabestring
- ///\p i eingabestringzähler \p z ausgabestringzähler
- ///\p j allgemeiner schleifenzähler \p ai argumentzähler
- for(i=0,z=0;s[i] != '\0';i++){
- 1016eb: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp)
- 1016f2: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp)
- 1016f9: e9 66 12 00 00 jmp 102964 <sprintfr+0x128c>
- if(s[i] == '%'){
- 1016fe: 8b 45 ec mov -0x14(%ebp),%eax
- 101701: 03 45 08 add 0x8(%ebp),%eax
- 101704: 0f b6 00 movzbl (%eax),%eax
- 101707: 3c 25 cmp $0x25,%al
- 101709: 0f 85 3a 12 00 00 jne 102949 <sprintfr+0x1271>
- arg = args[ai++];
- 10170f: 8b 45 e0 mov -0x20(%ebp),%eax
- 101712: c1 e0 02 shl $0x2,%eax
- 101715: 03 45 0c add 0xc(%ebp),%eax
- 101718: 8b 00 mov (%eax),%eax
- 10171a: 89 45 c8 mov %eax,-0x38(%ebp)
- 10171d: 83 45 e0 01 addl $0x1,-0x20(%ebp)
- if(s[i+1] > 48 && s[i+1] < 58){
- 101721: 8b 45 ec mov -0x14(%ebp),%eax
- 101724: 83 c0 01 add $0x1,%eax
- 101727: 03 45 08 add 0x8(%ebp),%eax
- 10172a: 0f b6 00 movzbl (%eax),%eax
- 10172d: 3c 30 cmp $0x30,%al
- 10172f: 7e 69 jle 10179a <sprintfr+0xc2>
- 101731: 8b 45 ec mov -0x14(%ebp),%eax
- 101734: 83 c0 01 add $0x1,%eax
- 101737: 03 45 08 add 0x8(%ebp),%eax
- 10173a: 0f b6 00 movzbl (%eax),%eax
- 10173d: 3c 39 cmp $0x39,%al
- 10173f: 7f 59 jg 10179a <sprintfr+0xc2>
- sG = 0;
- 101741: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp)
- ++i;
- 101748: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- for(j = 0;(s[i] > NULL && s[i] < 58);j++){
- 10174c: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101753: eb 2b jmp 101780 <sprintfr+0xa8>
- sG = (sG*10) + (s[i++]-NULL);
- 101755: 8b 55 dc mov -0x24(%ebp),%edx
- 101758: 89 d0 mov %edx,%eax
- 10175a: c1 e0 02 shl $0x2,%eax
- 10175d: 01 d0 add %edx,%eax
- 10175f: 01 c0 add %eax,%eax
- 101761: 89 c2 mov %eax,%edx
- 101763: 8b 45 ec mov -0x14(%ebp),%eax
- 101766: 03 45 08 add 0x8(%ebp),%eax
- 101769: 0f b6 00 movzbl (%eax),%eax
- 10176c: 0f be c0 movsbl %al,%eax
- 10176f: 83 e8 30 sub $0x30,%eax
- 101772: 8d 04 02 lea (%edx,%eax,1),%eax
- 101775: 89 45 dc mov %eax,-0x24(%ebp)
- 101778: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- if(s[i] == '%'){
- arg = args[ai++];
- if(s[i+1] > 48 && s[i+1] < 58){
- sG = 0;
- ++i;
- for(j = 0;(s[i] > NULL && s[i] < 58);j++){
- 10177c: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 101780: 8b 45 ec mov -0x14(%ebp),%eax
- 101783: 03 45 08 add 0x8(%ebp),%eax
- 101786: 0f b6 00 movzbl (%eax),%eax
- 101789: 3c 30 cmp $0x30,%al
- 10178b: 7e 0d jle 10179a <sprintfr+0xc2>
- 10178d: 8b 45 ec mov -0x14(%ebp),%eax
- 101790: 03 45 08 add 0x8(%ebp),%eax
- 101793: 0f b6 00 movzbl (%eax),%eax
- 101796: 3c 39 cmp $0x39,%al
- 101798: 7e bb jle 101755 <sprintfr+0x7d>
- sG = (sG*10) + (s[i++]-NULL);
- }
- }
- switch(s[i+1]){
- 10179a: 8b 45 ec mov -0x14(%ebp),%eax
- 10179d: 83 c0 01 add $0x1,%eax
- 1017a0: 03 45 08 add 0x8(%ebp),%eax
- 1017a3: 0f b6 00 movzbl (%eax),%eax
- 1017a6: 0f be c0 movsbl %al,%eax
- 1017a9: 83 e8 25 sub $0x25,%eax
- 1017ac: 83 f8 53 cmp $0x53,%eax
- 1017af: 0f 87 71 11 00 00 ja 102926 <sprintfr+0x124e>
- 1017b5: 8b 04 85 90 35 10 00 mov 0x103590(,%eax,4),%eax
- 1017bc: ff e0 jmp *%eax
- case 'x': //******************************* Hex
- case 'X': //***********************************
- b[0] = (arg&0xf0000)>>16;
- 1017be: 8b 45 c8 mov -0x38(%ebp),%eax
- 1017c1: 25 00 00 0f 00 and $0xf0000,%eax
- 1017c6: c1 f8 10 sar $0x10,%eax
- 1017c9: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (arg&0x0f000)>>12;
- 1017cc: 8b 45 c8 mov -0x38(%ebp),%eax
- 1017cf: 25 00 f0 00 00 and $0xf000,%eax
- 1017d4: c1 f8 0c sar $0xc,%eax
- 1017d7: 88 45 bb mov %al,-0x45(%ebp)
- b[2] = (arg&0x00f00)>>8;
- 1017da: 8b 45 c8 mov -0x38(%ebp),%eax
- 1017dd: 25 00 0f 00 00 and $0xf00,%eax
- 1017e2: c1 f8 08 sar $0x8,%eax
- 1017e5: 88 45 bc mov %al,-0x44(%ebp)
- b[3] = (arg&0x000f0)>>4;
- 1017e8: 8b 45 c8 mov -0x38(%ebp),%eax
- 1017eb: 25 f0 00 00 00 and $0xf0,%eax
- 1017f0: c1 f8 04 sar $0x4,%eax
- 1017f3: 88 45 bd mov %al,-0x43(%ebp)
- b[4] = (arg&0x0000f);
- 1017f6: 8b 45 c8 mov -0x38(%ebp),%eax
- 1017f9: 83 e0 0f and $0xf,%eax
- 1017fc: 88 45 be mov %al,-0x42(%ebp)
- for (j = 0; j < 5; j++)
- 1017ff: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101806: eb 47 jmp 10184f <sprintfr+0x177>
- {
- if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
- 101808: 8d 45 ba lea -0x46(%ebp),%eax
- 10180b: 03 45 e4 add -0x1c(%ebp),%eax
- 10180e: 0f b6 00 movzbl (%eax),%eax
- 101811: 3c 09 cmp $0x9,%al
- 101813: 7e 1c jle 101831 <sprintfr+0x159>
- 101815: 8b 45 e8 mov -0x18(%ebp),%eax
- 101818: 89 c2 mov %eax,%edx
- 10181a: 03 55 c4 add -0x3c(%ebp),%edx
- 10181d: 8d 45 ba lea -0x46(%ebp),%eax
- 101820: 03 45 e4 add -0x1c(%ebp),%eax
- 101823: 0f b6 00 movzbl (%eax),%eax
- 101826: 83 c0 37 add $0x37,%eax
- 101829: 88 02 mov %al,(%edx)
- 10182b: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- 10182f: eb 1a jmp 10184b <sprintfr+0x173>
- else rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
- 101831: 8b 45 e8 mov -0x18(%ebp),%eax
- 101834: 89 c2 mov %eax,%edx
- 101836: 03 55 c4 add -0x3c(%ebp),%edx
- 101839: 8d 45 ba lea -0x46(%ebp),%eax
- 10183c: 03 45 e4 add -0x1c(%ebp),%eax
- 10183f: 0f b6 00 movzbl (%eax),%eax
- 101842: 83 c0 30 add $0x30,%eax
- 101845: 88 02 mov %al,(%edx)
- 101847: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- b[0] = (arg&0xf0000)>>16;
- b[1] = (arg&0x0f000)>>12;
- b[2] = (arg&0x00f00)>>8;
- b[3] = (arg&0x000f0)>>4;
- b[4] = (arg&0x0000f);
- for (j = 0; j < 5; j++)
- 10184b: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 10184f: 83 7d e4 04 cmpl $0x4,-0x1c(%ebp)
- 101853: 7e b3 jle 101808 <sprintfr+0x130>
- {
- if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
- else rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
- }
- break;
- 101855: e9 e9 10 00 00 jmp 102943 <sprintfr+0x126b>
- case 'd': //******************************** Dez (signed int)
- case 'D': //******************************************
- arg = (int) arg;
- BCD = 0;
- 10185a: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
- 101861: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp)
- stelle = 0x8000;
- 101868: c7 45 cc 00 80 00 00 movl $0x8000,-0x34(%ebp)
- if(arg&stelle){ vorflag = 1;arg&=0x7fff;arg--; arg^=0x7fff; }
- 10186f: 8b 45 c8 mov -0x38(%ebp),%eax
- 101872: 23 45 cc and -0x34(%ebp),%eax
- 101875: 85 c0 test %eax,%eax
- 101877: 74 18 je 101891 <sprintfr+0x1b9>
- 101879: c6 45 db 01 movb $0x1,-0x25(%ebp)
- 10187d: 81 65 c8 ff 7f 00 00 andl $0x7fff,-0x38(%ebp)
- 101884: 83 6d c8 01 subl $0x1,-0x38(%ebp)
- 101888: 81 75 c8 ff 7f 00 00 xorl $0x7fff,-0x38(%ebp)
- 10188f: eb 04 jmp 101895 <sprintfr+0x1bd>
- else vorflag = 0;
- 101891: c6 45 db 00 movb $0x0,-0x25(%ebp)
- for(j=0;j<16;j++){
- 101895: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 10189c: e9 f1 00 00 00 jmp 101992 <sprintfr+0x2ba>
- BCD<<=1;
- 1018a1: 8b 45 d0 mov -0x30(%ebp),%eax
- 1018a4: 8b 55 d4 mov -0x2c(%ebp),%edx
- 1018a7: 0f a4 c2 01 shld $0x1,%eax,%edx
- 1018ab: 01 c0 add %eax,%eax
- 1018ad: 89 45 d0 mov %eax,-0x30(%ebp)
- 1018b0: 89 55 d4 mov %edx,-0x2c(%ebp)
- if(arg & stelle)BCD++;
- 1018b3: 8b 45 c8 mov -0x38(%ebp),%eax
- 1018b6: 23 45 cc and -0x34(%ebp),%eax
- 1018b9: 85 c0 test %eax,%eax
- 1018bb: 74 08 je 1018c5 <sprintfr+0x1ed>
- 1018bd: 83 45 d0 01 addl $0x1,-0x30(%ebp)
- 1018c1: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- stelle>>=1;
- 1018c5: d1 6d cc shrl -0x34(%ebp)
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- 1018c8: 8b 45 d0 mov -0x30(%ebp),%eax
- 1018cb: 89 c1 mov %eax,%ecx
- 1018cd: 83 e1 1f and $0x1f,%ecx
- 1018d0: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1018d3: 89 c3 mov %eax,%ebx
- 1018d5: 83 e3 00 and $0x0,%ebx
- 1018d8: 83 fb 00 cmp $0x0,%ebx
- 1018db: 72 12 jb 1018ef <sprintfr+0x217>
- 1018dd: 83 fb 00 cmp $0x0,%ebx
- 1018e0: 77 05 ja 1018e7 <sprintfr+0x20f>
- 1018e2: 83 f9 09 cmp $0x9,%ecx
- 1018e5: 76 08 jbe 1018ef <sprintfr+0x217>
- 1018e7: 83 45 d0 06 addl $0x6,-0x30(%ebp)
- 1018eb: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- 1018ef: 8b 45 d0 mov -0x30(%ebp),%eax
- 1018f2: 89 c6 mov %eax,%esi
- 1018f4: 81 e6 f0 01 00 00 and $0x1f0,%esi
- 1018fa: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1018fd: 89 c7 mov %eax,%edi
- 1018ff: 83 e7 00 and $0x0,%edi
- 101902: 83 ff 00 cmp $0x0,%edi
- 101905: 72 15 jb 10191c <sprintfr+0x244>
- 101907: 83 ff 00 cmp $0x0,%edi
- 10190a: 77 08 ja 101914 <sprintfr+0x23c>
- 10190c: 81 fe 90 00 00 00 cmp $0x90,%esi
- 101912: 76 08 jbe 10191c <sprintfr+0x244>
- 101914: 83 45 d0 60 addl $0x60,-0x30(%ebp)
- 101918: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- 10191c: 8b 45 d0 mov -0x30(%ebp),%eax
- 10191f: 89 c2 mov %eax,%edx
- 101921: 81 e2 00 1f 00 00 and $0x1f00,%edx
- 101927: 89 55 a8 mov %edx,-0x58(%ebp)
- 10192a: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10192d: 89 c2 mov %eax,%edx
- 10192f: 83 e2 00 and $0x0,%edx
- 101932: 89 55 ac mov %edx,-0x54(%ebp)
- 101935: 83 7d ac 00 cmpl $0x0,-0x54(%ebp)
- 101939: 72 1a jb 101955 <sprintfr+0x27d>
- 10193b: 83 7d ac 00 cmpl $0x0,-0x54(%ebp)
- 10193f: 77 09 ja 10194a <sprintfr+0x272>
- 101941: 81 7d a8 00 09 00 00 cmpl $0x900,-0x58(%ebp)
- 101948: 76 0b jbe 101955 <sprintfr+0x27d>
- 10194a: 81 45 d0 00 06 00 00 addl $0x600,-0x30(%ebp)
- 101951: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- 101955: 8b 45 d0 mov -0x30(%ebp),%eax
- 101958: 89 c2 mov %eax,%edx
- 10195a: 81 e2 00 f0 01 00 and $0x1f000,%edx
- 101960: 89 55 a0 mov %edx,-0x60(%ebp)
- 101963: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101966: 89 c2 mov %eax,%edx
- 101968: 83 e2 00 and $0x0,%edx
- 10196b: 89 55 a4 mov %edx,-0x5c(%ebp)
- 10196e: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp)
- 101972: 72 1a jb 10198e <sprintfr+0x2b6>
- 101974: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp)
- 101978: 77 09 ja 101983 <sprintfr+0x2ab>
- 10197a: 81 7d a0 00 90 00 00 cmpl $0x9000,-0x60(%ebp)
- 101981: 76 0b jbe 10198e <sprintfr+0x2b6>
- 101983: 81 45 d0 00 60 00 00 addl $0x6000,-0x30(%ebp)
- 10198a: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- arg = (int) arg;
- BCD = 0;
- stelle = 0x8000;
- if(arg&stelle){ vorflag = 1;arg&=0x7fff;arg--; arg^=0x7fff; }
- else vorflag = 0;
- for(j=0;j<16;j++){
- 10198e: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 101992: 83 7d e4 0f cmpl $0xf,-0x1c(%ebp)
- 101996: 0f 8e 05 ff ff ff jle 1018a1 <sprintfr+0x1c9>
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- }
- b[0] = (BCD&0x0f0000)>>16;
- 10199c: 8b 45 d0 mov -0x30(%ebp),%eax
- 10199f: 89 c2 mov %eax,%edx
- 1019a1: 81 e2 00 00 0f 00 and $0xf0000,%edx
- 1019a7: 89 55 98 mov %edx,-0x68(%ebp)
- 1019aa: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1019ad: 89 c2 mov %eax,%edx
- 1019af: 83 e2 00 and $0x0,%edx
- 1019b2: 89 55 9c mov %edx,-0x64(%ebp)
- 1019b5: 8b 45 98 mov -0x68(%ebp),%eax
- 1019b8: 8b 55 9c mov -0x64(%ebp),%edx
- 1019bb: 0f ac d0 10 shrd $0x10,%edx,%eax
- 1019bf: c1 ea 10 shr $0x10,%edx
- 1019c2: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (BCD&0x0f000)>>12;
- 1019c5: 8b 45 d0 mov -0x30(%ebp),%eax
- 1019c8: 89 c2 mov %eax,%edx
- 1019ca: 81 e2 00 f0 00 00 and $0xf000,%edx
- 1019d0: 89 55 90 mov %edx,-0x70(%ebp)
- 1019d3: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1019d6: 89 c2 mov %eax,%edx
- 1019d8: 83 e2 00 and $0x0,%edx
- 1019db: 89 55 94 mov %edx,-0x6c(%ebp)
- 1019de: 8b 45 90 mov -0x70(%ebp),%eax
- 1019e1: 8b 55 94 mov -0x6c(%ebp),%edx
- 1019e4: 0f ac d0 0c shrd $0xc,%edx,%eax
- 1019e8: c1 ea 0c shr $0xc,%edx
- 1019eb: 88 45 bb mov %al,-0x45(%ebp)
- b[2] = (BCD&0x0f00)>>8;
- 1019ee: 8b 45 d0 mov -0x30(%ebp),%eax
- 1019f1: 89 c2 mov %eax,%edx
- 1019f3: 81 e2 00 0f 00 00 and $0xf00,%edx
- 1019f9: 89 55 88 mov %edx,-0x78(%ebp)
- 1019fc: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1019ff: 89 c2 mov %eax,%edx
- 101a01: 83 e2 00 and $0x0,%edx
- 101a04: 89 55 8c mov %edx,-0x74(%ebp)
- 101a07: 8b 45 88 mov -0x78(%ebp),%eax
- 101a0a: 8b 55 8c mov -0x74(%ebp),%edx
- 101a0d: 0f ac d0 08 shrd $0x8,%edx,%eax
- 101a11: c1 ea 08 shr $0x8,%edx
- 101a14: 88 45 bc mov %al,-0x44(%ebp)
- b[3] = (BCD&0x0f0)>>4;
- 101a17: 8b 45 d0 mov -0x30(%ebp),%eax
- 101a1a: 89 c2 mov %eax,%edx
- 101a1c: 81 e2 f0 00 00 00 and $0xf0,%edx
- 101a22: 89 55 80 mov %edx,-0x80(%ebp)
- 101a25: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101a28: 89 c2 mov %eax,%edx
- 101a2a: 83 e2 00 and $0x0,%edx
- 101a2d: 89 55 84 mov %edx,-0x7c(%ebp)
- 101a30: 8b 45 80 mov -0x80(%ebp),%eax
- 101a33: 8b 55 84 mov -0x7c(%ebp),%edx
- 101a36: 0f ac d0 04 shrd $0x4,%edx,%eax
- 101a3a: c1 ea 04 shr $0x4,%edx
- 101a3d: 88 45 bd mov %al,-0x43(%ebp)
- b[4] = (BCD&0x0f);
- 101a40: 8b 45 d0 mov -0x30(%ebp),%eax
- 101a43: 83 e0 0f and $0xf,%eax
- 101a46: 88 45 be mov %al,-0x42(%ebp)
- nullflag = 1;
- 101a49: c6 45 da 01 movb $0x1,-0x26(%ebp)
- if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
- 101a4d: 80 7d db 00 cmpb $0x0,-0x25(%ebp)
- 101a51: 74 0d je 101a60 <sprintfr+0x388>
- 101a53: 8b 45 e8 mov -0x18(%ebp),%eax
- 101a56: 03 45 c4 add -0x3c(%ebp),%eax
- 101a59: c6 00 2d movb $0x2d,(%eax)
- 101a5c: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- for(j=0;j<5;j++){
- 101a60: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101a67: eb 35 jmp 101a9e <sprintfr+0x3c6>
- if(! (b[j] == 0 && nullflag)){
- 101a69: 8d 45 ba lea -0x46(%ebp),%eax
- 101a6c: 03 45 e4 add -0x1c(%ebp),%eax
- 101a6f: 0f b6 00 movzbl (%eax),%eax
- 101a72: 84 c0 test %al,%al
- 101a74: 75 06 jne 101a7c <sprintfr+0x3a4>
- 101a76: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 101a7a: 75 1e jne 101a9a <sprintfr+0x3c2>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- 101a7c: 8b 45 e8 mov -0x18(%ebp),%eax
- 101a7f: 89 c2 mov %eax,%edx
- 101a81: 03 55 c4 add -0x3c(%ebp),%edx
- 101a84: 8d 45 ba lea -0x46(%ebp),%eax
- 101a87: 03 45 e4 add -0x1c(%ebp),%eax
- 101a8a: 0f b6 00 movzbl (%eax),%eax
- 101a8d: 83 c0 30 add $0x30,%eax
- 101a90: 88 02 mov %al,(%edx)
- 101a92: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- nullflag =0;
- 101a96: c6 45 da 00 movb $0x0,-0x26(%ebp)
- b[3] = (BCD&0x0f0)>>4;
- b[4] = (BCD&0x0f);
- nullflag = 1;
- if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
- for(j=0;j<5;j++){
- 101a9a: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 101a9e: 83 7d e4 04 cmpl $0x4,-0x1c(%ebp)
- 101aa2: 7e c5 jle 101a69 <sprintfr+0x391>
- if(! (b[j] == 0 && nullflag)){
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag =0;
- }
- }
- if(nullflag) rs[z++] = NULL;
- 101aa4: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 101aa8: 0f 84 91 0e 00 00 je 10293f <sprintfr+0x1267>
- 101aae: 8b 45 e8 mov -0x18(%ebp),%eax
- 101ab1: 03 45 c4 add -0x3c(%ebp),%eax
- 101ab4: c6 00 30 movb $0x30,(%eax)
- 101ab7: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- break;
- 101abb: e9 83 0e 00 00 jmp 102943 <sprintfr+0x126b>
- case 'u': //******************************** Dez (unsigned int)
- case 'U': //**************************************************
- arg = (unsigned int) arg;
- BCD = 0;
- 101ac0: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
- 101ac7: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp)
- stelle = 0x8000;
- 101ace: c7 45 cc 00 80 00 00 movl $0x8000,-0x34(%ebp)
- for(j=0;j<16;j++){
- 101ad5: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101adc: e9 3f 01 00 00 jmp 101c20 <sprintfr+0x548>
- BCD<<=1;
- 101ae1: 8b 45 d0 mov -0x30(%ebp),%eax
- 101ae4: 8b 55 d4 mov -0x2c(%ebp),%edx
- 101ae7: 0f a4 c2 01 shld $0x1,%eax,%edx
- 101aeb: 01 c0 add %eax,%eax
- 101aed: 89 45 d0 mov %eax,-0x30(%ebp)
- 101af0: 89 55 d4 mov %edx,-0x2c(%ebp)
- if(arg & stelle)BCD++;
- 101af3: 8b 45 c8 mov -0x38(%ebp),%eax
- 101af6: 23 45 cc and -0x34(%ebp),%eax
- 101af9: 85 c0 test %eax,%eax
- 101afb: 74 08 je 101b05 <sprintfr+0x42d>
- 101afd: 83 45 d0 01 addl $0x1,-0x30(%ebp)
- 101b01: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- stelle>>=1;
- 101b05: d1 6d cc shrl -0x34(%ebp)
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- 101b08: 8b 45 d0 mov -0x30(%ebp),%eax
- 101b0b: 89 c2 mov %eax,%edx
- 101b0d: 83 e2 1f and $0x1f,%edx
- 101b10: 89 95 78 ff ff ff mov %edx,-0x88(%ebp)
- 101b16: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101b19: 89 c2 mov %eax,%edx
- 101b1b: 83 e2 00 and $0x0,%edx
- 101b1e: 89 95 7c ff ff ff mov %edx,-0x84(%ebp)
- 101b24: 83 bd 7c ff ff ff 00 cmpl $0x0,-0x84(%ebp)
- 101b2b: 72 1a jb 101b47 <sprintfr+0x46f>
- 101b2d: 83 bd 7c ff ff ff 00 cmpl $0x0,-0x84(%ebp)
- 101b34: 77 09 ja 101b3f <sprintfr+0x467>
- 101b36: 83 bd 78 ff ff ff 09 cmpl $0x9,-0x88(%ebp)
- 101b3d: 76 08 jbe 101b47 <sprintfr+0x46f>
- 101b3f: 83 45 d0 06 addl $0x6,-0x30(%ebp)
- 101b43: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- 101b47: 8b 45 d0 mov -0x30(%ebp),%eax
- 101b4a: 89 c2 mov %eax,%edx
- 101b4c: 81 e2 f0 01 00 00 and $0x1f0,%edx
- 101b52: 89 95 70 ff ff ff mov %edx,-0x90(%ebp)
- 101b58: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101b5b: 89 c2 mov %eax,%edx
- 101b5d: 83 e2 00 and $0x0,%edx
- 101b60: 89 95 74 ff ff ff mov %edx,-0x8c(%ebp)
- 101b66: 83 bd 74 ff ff ff 00 cmpl $0x0,-0x8c(%ebp)
- 101b6d: 72 1d jb 101b8c <sprintfr+0x4b4>
- 101b6f: 83 bd 74 ff ff ff 00 cmpl $0x0,-0x8c(%ebp)
- 101b76: 77 0c ja 101b84 <sprintfr+0x4ac>
- 101b78: 81 bd 70 ff ff ff 90 cmpl $0x90,-0x90(%ebp)
- 101b7f: 00 00 00
- 101b82: 76 08 jbe 101b8c <sprintfr+0x4b4>
- 101b84: 83 45 d0 60 addl $0x60,-0x30(%ebp)
- 101b88: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- 101b8c: 8b 45 d0 mov -0x30(%ebp),%eax
- 101b8f: 89 c2 mov %eax,%edx
- 101b91: 81 e2 00 1f 00 00 and $0x1f00,%edx
- 101b97: 89 95 68 ff ff ff mov %edx,-0x98(%ebp)
- 101b9d: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101ba0: 89 c2 mov %eax,%edx
- 101ba2: 83 e2 00 and $0x0,%edx
- 101ba5: 89 95 6c ff ff ff mov %edx,-0x94(%ebp)
- 101bab: 83 bd 6c ff ff ff 00 cmpl $0x0,-0x94(%ebp)
- 101bb2: 72 20 jb 101bd4 <sprintfr+0x4fc>
- 101bb4: 83 bd 6c ff ff ff 00 cmpl $0x0,-0x94(%ebp)
- 101bbb: 77 0c ja 101bc9 <sprintfr+0x4f1>
- 101bbd: 81 bd 68 ff ff ff 00 cmpl $0x900,-0x98(%ebp)
- 101bc4: 09 00 00
- 101bc7: 76 0b jbe 101bd4 <sprintfr+0x4fc>
- 101bc9: 81 45 d0 00 06 00 00 addl $0x600,-0x30(%ebp)
- 101bd0: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- 101bd4: 8b 45 d0 mov -0x30(%ebp),%eax
- 101bd7: 89 c2 mov %eax,%edx
- 101bd9: 81 e2 00 f0 01 00 and $0x1f000,%edx
- 101bdf: 89 95 60 ff ff ff mov %edx,-0xa0(%ebp)
- 101be5: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101be8: 89 c2 mov %eax,%edx
- 101bea: 83 e2 00 and $0x0,%edx
- 101bed: 89 95 64 ff ff ff mov %edx,-0x9c(%ebp)
- 101bf3: 83 bd 64 ff ff ff 00 cmpl $0x0,-0x9c(%ebp)
- 101bfa: 72 20 jb 101c1c <sprintfr+0x544>
- 101bfc: 83 bd 64 ff ff ff 00 cmpl $0x0,-0x9c(%ebp)
- 101c03: 77 0c ja 101c11 <sprintfr+0x539>
- 101c05: 81 bd 60 ff ff ff 00 cmpl $0x9000,-0xa0(%ebp)
- 101c0c: 90 00 00
- 101c0f: 76 0b jbe 101c1c <sprintfr+0x544>
- 101c11: 81 45 d0 00 60 00 00 addl $0x6000,-0x30(%ebp)
- 101c18: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- case 'u': //******************************** Dez (unsigned int)
- case 'U': //**************************************************
- arg = (unsigned int) arg;
- BCD = 0;
- stelle = 0x8000;
- for(j=0;j<16;j++){
- 101c1c: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 101c20: 83 7d e4 0f cmpl $0xf,-0x1c(%ebp)
- 101c24: 0f 8e b7 fe ff ff jle 101ae1 <sprintfr+0x409>
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- }
- b[0] = (BCD&0x0f0000)>>16;
- 101c2a: 8b 45 d0 mov -0x30(%ebp),%eax
- 101c2d: 89 c2 mov %eax,%edx
- 101c2f: 81 e2 00 00 0f 00 and $0xf0000,%edx
- 101c35: 89 95 58 ff ff ff mov %edx,-0xa8(%ebp)
- 101c3b: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101c3e: 89 c2 mov %eax,%edx
- 101c40: 83 e2 00 and $0x0,%edx
- 101c43: 89 95 5c ff ff ff mov %edx,-0xa4(%ebp)
- 101c49: 8b 85 58 ff ff ff mov -0xa8(%ebp),%eax
- 101c4f: 8b 95 5c ff ff ff mov -0xa4(%ebp),%edx
- 101c55: 0f ac d0 10 shrd $0x10,%edx,%eax
- 101c59: c1 ea 10 shr $0x10,%edx
- 101c5c: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (BCD&0x0f000)>>12;
- 101c5f: 8b 45 d0 mov -0x30(%ebp),%eax
- 101c62: 89 c2 mov %eax,%edx
- 101c64: 81 e2 00 f0 00 00 and $0xf000,%edx
- 101c6a: 89 95 50 ff ff ff mov %edx,-0xb0(%ebp)
- 101c70: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101c73: 89 c2 mov %eax,%edx
- 101c75: 83 e2 00 and $0x0,%edx
- 101c78: 89 95 54 ff ff ff mov %edx,-0xac(%ebp)
- 101c7e: 8b 85 50 ff ff ff mov -0xb0(%ebp),%eax
- 101c84: 8b 95 54 ff ff ff mov -0xac(%ebp),%edx
- 101c8a: 0f ac d0 0c shrd $0xc,%edx,%eax
- 101c8e: c1 ea 0c shr $0xc,%edx
- 101c91: 88 45 bb mov %al,-0x45(%ebp)
- b[2] = (BCD&0x0f00)>>8;
- 101c94: 8b 45 d0 mov -0x30(%ebp),%eax
- 101c97: 89 c2 mov %eax,%edx
- 101c99: 81 e2 00 0f 00 00 and $0xf00,%edx
- 101c9f: 89 95 48 ff ff ff mov %edx,-0xb8(%ebp)
- 101ca5: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101ca8: 89 c2 mov %eax,%edx
- 101caa: 83 e2 00 and $0x0,%edx
- 101cad: 89 95 4c ff ff ff mov %edx,-0xb4(%ebp)
- 101cb3: 8b 85 48 ff ff ff mov -0xb8(%ebp),%eax
- 101cb9: 8b 95 4c ff ff ff mov -0xb4(%ebp),%edx
- 101cbf: 0f ac d0 08 shrd $0x8,%edx,%eax
- 101cc3: c1 ea 08 shr $0x8,%edx
- 101cc6: 88 45 bc mov %al,-0x44(%ebp)
- b[3] = (BCD&0x0f0)>>4;
- 101cc9: 8b 45 d0 mov -0x30(%ebp),%eax
- 101ccc: 89 c2 mov %eax,%edx
- 101cce: 81 e2 f0 00 00 00 and $0xf0,%edx
- 101cd4: 89 95 40 ff ff ff mov %edx,-0xc0(%ebp)
- 101cda: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101cdd: 89 c2 mov %eax,%edx
- 101cdf: 83 e2 00 and $0x0,%edx
- 101ce2: 89 95 44 ff ff ff mov %edx,-0xbc(%ebp)
- 101ce8: 8b 85 40 ff ff ff mov -0xc0(%ebp),%eax
- 101cee: 8b 95 44 ff ff ff mov -0xbc(%ebp),%edx
- 101cf4: 0f ac d0 04 shrd $0x4,%edx,%eax
- 101cf8: c1 ea 04 shr $0x4,%edx
- 101cfb: 88 45 bd mov %al,-0x43(%ebp)
- b[4] = (BCD&0x0f);
- 101cfe: 8b 45 d0 mov -0x30(%ebp),%eax
- 101d01: 83 e0 0f and $0xf,%eax
- 101d04: 88 45 be mov %al,-0x42(%ebp)
- nullflag = 1;
- 101d07: c6 45 da 01 movb $0x1,-0x26(%ebp)
- for(j=0;j<5;j++){
- 101d0b: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101d12: eb 35 jmp 101d49 <sprintfr+0x671>
- if(! (b[j] == 0 && nullflag)){
- 101d14: 8d 45 ba lea -0x46(%ebp),%eax
- 101d17: 03 45 e4 add -0x1c(%ebp),%eax
- 101d1a: 0f b6 00 movzbl (%eax),%eax
- 101d1d: 84 c0 test %al,%al
- 101d1f: 75 06 jne 101d27 <sprintfr+0x64f>
- 101d21: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 101d25: 75 1e jne 101d45 <sprintfr+0x66d>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- 101d27: 8b 45 e8 mov -0x18(%ebp),%eax
- 101d2a: 89 c2 mov %eax,%edx
- 101d2c: 03 55 c4 add -0x3c(%ebp),%edx
- 101d2f: 8d 45 ba lea -0x46(%ebp),%eax
- 101d32: 03 45 e4 add -0x1c(%ebp),%eax
- 101d35: 0f b6 00 movzbl (%eax),%eax
- 101d38: 83 c0 30 add $0x30,%eax
- 101d3b: 88 02 mov %al,(%edx)
- 101d3d: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- nullflag = 0;
- 101d41: c6 45 da 00 movb $0x0,-0x26(%ebp)
- b[1] = (BCD&0x0f000)>>12;
- b[2] = (BCD&0x0f00)>>8;
- b[3] = (BCD&0x0f0)>>4;
- b[4] = (BCD&0x0f);
- nullflag = 1;
- for(j=0;j<5;j++){
- 101d45: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 101d49: 83 7d e4 04 cmpl $0x4,-0x1c(%ebp)
- 101d4d: 7e c5 jle 101d14 <sprintfr+0x63c>
- if(! (b[j] == 0 && nullflag)){
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag = 0;
- }
- }
- if(nullflag) rs[z++] = NULL;
- 101d4f: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 101d53: 0f 84 e9 0b 00 00 je 102942 <sprintfr+0x126a>
- 101d59: 8b 45 e8 mov -0x18(%ebp),%eax
- 101d5c: 03 45 c4 add -0x3c(%ebp),%eax
- 101d5f: c6 00 30 movb $0x30,(%eax)
- 101d62: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- break;
- 101d66: e9 d8 0b 00 00 jmp 102943 <sprintfr+0x126b>
- case 'l'://******************************** Dez (long)
- case 'L'://******************************************
- switch(s[i+2]){
- 101d6b: 8b 45 ec mov -0x14(%ebp),%eax
- 101d6e: 83 c0 02 add $0x2,%eax
- 101d71: 03 45 08 add 0x8(%ebp),%eax
- 101d74: 0f b6 00 movzbl (%eax),%eax
- 101d77: 0f be c0 movsbl %al,%eax
- 101d7a: 83 f8 55 cmp $0x55,%eax
- 101d7d: 0f 84 b0 05 00 00 je 102333 <sprintfr+0xc5b>
- 101d83: 83 f8 55 cmp $0x55,%eax
- 101d86: 7f 0a jg 101d92 <sprintfr+0x6ba>
- 101d88: 83 f8 44 cmp $0x44,%eax
- 101d8b: 74 18 je 101da5 <sprintfr+0x6cd>
- }
- if(nullflag) rs[z++] = NULL;// 48 - ASCII null
- i++;
- break;
- }
- break;
- 101d8d: e9 b1 0b 00 00 jmp 102943 <sprintfr+0x126b>
- }
- if(nullflag) rs[z++] = NULL;
- break;
- case 'l'://******************************** Dez (long)
- case 'L'://******************************************
- switch(s[i+2]){
- 101d92: 83 f8 64 cmp $0x64,%eax
- 101d95: 74 0e je 101da5 <sprintfr+0x6cd>
- 101d97: 83 f8 75 cmp $0x75,%eax
- 101d9a: 0f 84 93 05 00 00 je 102333 <sprintfr+0xc5b>
- }
- if(nullflag) rs[z++] = NULL;// 48 - ASCII null
- i++;
- break;
- }
- break;
- 101da0: e9 9e 0b 00 00 jmp 102943 <sprintfr+0x126b>
- case 'L'://******************************************
- switch(s[i+2]){
- case 'd'://*******************Signed (long)
- case 'D'://*******************************
- arg = (long) arg;
- BCD = 0;
- 101da5: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
- 101dac: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp)
- stelle = 0x80000000;
- 101db3: c7 45 cc 00 00 00 80 movl $0x80000000,-0x34(%ebp)
- if(arg&stelle){ vorflag = 1;arg&=0x7fffffff;arg--; arg^=0x7fffffff; }
- 101dba: 8b 45 c8 mov -0x38(%ebp),%eax
- 101dbd: 23 45 cc and -0x34(%ebp),%eax
- 101dc0: 85 c0 test %eax,%eax
- 101dc2: 74 18 je 101ddc <sprintfr+0x704>
- 101dc4: c6 45 db 01 movb $0x1,-0x25(%ebp)
- 101dc8: 81 65 c8 ff ff ff 7f andl $0x7fffffff,-0x38(%ebp)
- 101dcf: 83 6d c8 01 subl $0x1,-0x38(%ebp)
- 101dd3: 81 75 c8 ff ff ff 7f xorl $0x7fffffff,-0x38(%ebp)
- 101dda: eb 04 jmp 101de0 <sprintfr+0x708>
- else vorflag = 0;
- 101ddc: c6 45 db 00 movb $0x0,-0x25(%ebp)
- for(j=0;j<32;j++){
- 101de0: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 101de7: e9 e6 02 00 00 jmp 1020d2 <sprintfr+0x9fa>
- BCD<<=1;
- 101dec: 8b 45 d0 mov -0x30(%ebp),%eax
- 101def: 8b 55 d4 mov -0x2c(%ebp),%edx
- 101df2: 0f a4 c2 01 shld $0x1,%eax,%edx
- 101df6: 01 c0 add %eax,%eax
- 101df8: 89 45 d0 mov %eax,-0x30(%ebp)
- 101dfb: 89 55 d4 mov %edx,-0x2c(%ebp)
- if(arg & stelle)BCD++;
- 101dfe: 8b 45 c8 mov -0x38(%ebp),%eax
- 101e01: 23 45 cc and -0x34(%ebp),%eax
- 101e04: 85 c0 test %eax,%eax
- 101e06: 74 08 je 101e10 <sprintfr+0x738>
- 101e08: 83 45 d0 01 addl $0x1,-0x30(%ebp)
- 101e0c: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- stelle>>=1;
- 101e10: d1 6d cc shrl -0x34(%ebp)
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- 101e13: 8b 45 d0 mov -0x30(%ebp),%eax
- 101e16: 89 c2 mov %eax,%edx
- 101e18: 83 e2 1f and $0x1f,%edx
- 101e1b: 89 95 38 ff ff ff mov %edx,-0xc8(%ebp)
- 101e21: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101e24: 89 c2 mov %eax,%edx
- 101e26: 83 e2 00 and $0x0,%edx
- 101e29: 89 95 3c ff ff ff mov %edx,-0xc4(%ebp)
- 101e2f: 83 bd 3c ff ff ff 00 cmpl $0x0,-0xc4(%ebp)
- 101e36: 72 1a jb 101e52 <sprintfr+0x77a>
- 101e38: 83 bd 3c ff ff ff 00 cmpl $0x0,-0xc4(%ebp)
- 101e3f: 77 09 ja 101e4a <sprintfr+0x772>
- 101e41: 83 bd 38 ff ff ff 09 cmpl $0x9,-0xc8(%ebp)
- 101e48: 76 08 jbe 101e52 <sprintfr+0x77a>
- 101e4a: 83 45 d0 06 addl $0x6,-0x30(%ebp)
- 101e4e: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- 101e52: 8b 45 d0 mov -0x30(%ebp),%eax
- 101e55: 89 c2 mov %eax,%edx
- 101e57: 81 e2 f0 01 00 00 and $0x1f0,%edx
- 101e5d: 89 95 30 ff ff ff mov %edx,-0xd0(%ebp)
- 101e63: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101e66: 89 c2 mov %eax,%edx
- 101e68: 83 e2 00 and $0x0,%edx
- 101e6b: 89 95 34 ff ff ff mov %edx,-0xcc(%ebp)
- 101e71: 83 bd 34 ff ff ff 00 cmpl $0x0,-0xcc(%ebp)
- 101e78: 72 1d jb 101e97 <sprintfr+0x7bf>
- 101e7a: 83 bd 34 ff ff ff 00 cmpl $0x0,-0xcc(%ebp)
- 101e81: 77 0c ja 101e8f <sprintfr+0x7b7>
- 101e83: 81 bd 30 ff ff ff 90 cmpl $0x90,-0xd0(%ebp)
- 101e8a: 00 00 00
- 101e8d: 76 08 jbe 101e97 <sprintfr+0x7bf>
- 101e8f: 83 45 d0 60 addl $0x60,-0x30(%ebp)
- 101e93: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- 101e97: 8b 45 d0 mov -0x30(%ebp),%eax
- 101e9a: 89 c2 mov %eax,%edx
- 101e9c: 81 e2 00 1f 00 00 and $0x1f00,%edx
- 101ea2: 89 95 28 ff ff ff mov %edx,-0xd8(%ebp)
- 101ea8: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101eab: 89 c2 mov %eax,%edx
- 101ead: 83 e2 00 and $0x0,%edx
- 101eb0: 89 95 2c ff ff ff mov %edx,-0xd4(%ebp)
- 101eb6: 83 bd 2c ff ff ff 00 cmpl $0x0,-0xd4(%ebp)
- 101ebd: 72 20 jb 101edf <sprintfr+0x807>
- 101ebf: 83 bd 2c ff ff ff 00 cmpl $0x0,-0xd4(%ebp)
- 101ec6: 77 0c ja 101ed4 <sprintfr+0x7fc>
- 101ec8: 81 bd 28 ff ff ff 00 cmpl $0x900,-0xd8(%ebp)
- 101ecf: 09 00 00
- 101ed2: 76 0b jbe 101edf <sprintfr+0x807>
- 101ed4: 81 45 d0 00 06 00 00 addl $0x600,-0x30(%ebp)
- 101edb: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- 101edf: 8b 45 d0 mov -0x30(%ebp),%eax
- 101ee2: 89 c2 mov %eax,%edx
- 101ee4: 81 e2 00 f0 01 00 and $0x1f000,%edx
- 101eea: 89 95 20 ff ff ff mov %edx,-0xe0(%ebp)
- 101ef0: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101ef3: 89 c2 mov %eax,%edx
- 101ef5: 83 e2 00 and $0x0,%edx
- 101ef8: 89 95 24 ff ff ff mov %edx,-0xdc(%ebp)
- 101efe: 83 bd 24 ff ff ff 00 cmpl $0x0,-0xdc(%ebp)
- 101f05: 72 20 jb 101f27 <sprintfr+0x84f>
- 101f07: 83 bd 24 ff ff ff 00 cmpl $0x0,-0xdc(%ebp)
- 101f0e: 77 0c ja 101f1c <sprintfr+0x844>
- 101f10: 81 bd 20 ff ff ff 00 cmpl $0x9000,-0xe0(%ebp)
- 101f17: 90 00 00
- 101f1a: 76 0b jbe 101f27 <sprintfr+0x84f>
- 101f1c: 81 45 d0 00 60 00 00 addl $0x6000,-0x30(%ebp)
- 101f23: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0000) > 0x90000)BCD+=0x60000;
- 101f27: 8b 45 d0 mov -0x30(%ebp),%eax
- 101f2a: 89 c2 mov %eax,%edx
- 101f2c: 81 e2 00 00 1f 00 and $0x1f0000,%edx
- 101f32: 89 95 18 ff ff ff mov %edx,-0xe8(%ebp)
- 101f38: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101f3b: 89 c2 mov %eax,%edx
- 101f3d: 83 e2 00 and $0x0,%edx
- 101f40: 89 95 1c ff ff ff mov %edx,-0xe4(%ebp)
- 101f46: 83 bd 1c ff ff ff 00 cmpl $0x0,-0xe4(%ebp)
- 101f4d: 72 20 jb 101f6f <sprintfr+0x897>
- 101f4f: 83 bd 1c ff ff ff 00 cmpl $0x0,-0xe4(%ebp)
- 101f56: 77 0c ja 101f64 <sprintfr+0x88c>
- 101f58: 81 bd 18 ff ff ff 00 cmpl $0x90000,-0xe8(%ebp)
- 101f5f: 00 09 00
- 101f62: 76 0b jbe 101f6f <sprintfr+0x897>
- 101f64: 81 45 d0 00 00 06 00 addl $0x60000,-0x30(%ebp)
- 101f6b: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00000) > 0x900000)BCD+=0x600000;
- 101f6f: 8b 45 d0 mov -0x30(%ebp),%eax
- 101f72: 89 c2 mov %eax,%edx
- 101f74: 81 e2 00 00 f0 01 and $0x1f00000,%edx
- 101f7a: 89 95 10 ff ff ff mov %edx,-0xf0(%ebp)
- 101f80: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101f83: 89 c2 mov %eax,%edx
- 101f85: 83 e2 00 and $0x0,%edx
- 101f88: 89 95 14 ff ff ff mov %edx,-0xec(%ebp)
- 101f8e: 83 bd 14 ff ff ff 00 cmpl $0x0,-0xec(%ebp)
- 101f95: 72 20 jb 101fb7 <sprintfr+0x8df>
- 101f97: 83 bd 14 ff ff ff 00 cmpl $0x0,-0xec(%ebp)
- 101f9e: 77 0c ja 101fac <sprintfr+0x8d4>
- 101fa0: 81 bd 10 ff ff ff 00 cmpl $0x900000,-0xf0(%ebp)
- 101fa7: 00 90 00
- 101faa: 76 0b jbe 101fb7 <sprintfr+0x8df>
- 101fac: 81 45 d0 00 00 60 00 addl $0x600000,-0x30(%ebp)
- 101fb3: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
- 101fb7: 8b 45 d0 mov -0x30(%ebp),%eax
- 101fba: 89 c2 mov %eax,%edx
- 101fbc: 81 e2 00 00 00 1f and $0x1f000000,%edx
- 101fc2: 89 95 08 ff ff ff mov %edx,-0xf8(%ebp)
- 101fc8: 8b 45 d4 mov -0x2c(%ebp),%eax
- 101fcb: 89 c2 mov %eax,%edx
- 101fcd: 83 e2 00 and $0x0,%edx
- 101fd0: 89 95 0c ff ff ff mov %edx,-0xf4(%ebp)
- 101fd6: 83 bd 0c ff ff ff 00 cmpl $0x0,-0xf4(%ebp)
- 101fdd: 72 20 jb 101fff <sprintfr+0x927>
- 101fdf: 83 bd 0c ff ff ff 00 cmpl $0x0,-0xf4(%ebp)
- 101fe6: 77 0c ja 101ff4 <sprintfr+0x91c>
- 101fe8: 81 bd 08 ff ff ff 00 cmpl $0x9000000,-0xf8(%ebp)
- 101fef: 00 00 09
- 101ff2: 76 0b jbe 101fff <sprintfr+0x927>
- 101ff4: 81 45 d0 00 00 00 06 addl $0x6000000,-0x30(%ebp)
- 101ffb: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
- 101fff: 8b 45 d0 mov -0x30(%ebp),%eax
- 102002: 89 c2 mov %eax,%edx
- 102004: 81 e2 00 00 00 f0 and $0xf0000000,%edx
- 10200a: 89 95 00 ff ff ff mov %edx,-0x100(%ebp)
- 102010: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102013: 89 c2 mov %eax,%edx
- 102015: 83 e2 01 and $0x1,%edx
- 102018: 89 95 04 ff ff ff mov %edx,-0xfc(%ebp)
- 10201e: 83 bd 04 ff ff ff 00 cmpl $0x0,-0xfc(%ebp)
- 102025: 72 20 jb 102047 <sprintfr+0x96f>
- 102027: 83 bd 04 ff ff ff 00 cmpl $0x0,-0xfc(%ebp)
- 10202e: 77 0c ja 10203c <sprintfr+0x964>
- 102030: 81 bd 00 ff ff ff 00 cmpl $0x90000000,-0x100(%ebp)
- 102037: 00 00 90
- 10203a: 76 0b jbe 102047 <sprintfr+0x96f>
- 10203c: 81 45 d0 00 00 00 60 addl $0x60000000,-0x30(%ebp)
- 102043: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
- 102047: 8b 45 d0 mov -0x30(%ebp),%eax
- 10204a: 89 c2 mov %eax,%edx
- 10204c: 83 e2 00 and $0x0,%edx
- 10204f: 89 95 f8 fe ff ff mov %edx,-0x108(%ebp)
- 102055: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102058: 89 c2 mov %eax,%edx
- 10205a: 83 e2 1f and $0x1f,%edx
- 10205d: 89 95 fc fe ff ff mov %edx,-0x104(%ebp)
- 102063: 83 bd fc fe ff ff 09 cmpl $0x9,-0x104(%ebp)
- 10206a: 72 1a jb 102086 <sprintfr+0x9ae>
- 10206c: 83 bd fc fe ff ff 09 cmpl $0x9,-0x104(%ebp)
- 102073: 77 09 ja 10207e <sprintfr+0x9a6>
- 102075: 83 bd f8 fe ff ff 00 cmpl $0x0,-0x108(%ebp)
- 10207c: 76 08 jbe 102086 <sprintfr+0x9ae>
- 10207e: 83 45 d0 00 addl $0x0,-0x30(%ebp)
- 102082: 83 55 d4 06 adcl $0x6,-0x2c(%ebp)
- if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
- 102086: 8b 45 d0 mov -0x30(%ebp),%eax
- 102089: 89 c2 mov %eax,%edx
- 10208b: 83 e2 00 and $0x0,%edx
- 10208e: 89 95 f0 fe ff ff mov %edx,-0x110(%ebp)
- 102094: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102097: 89 c2 mov %eax,%edx
- 102099: 81 e2 f0 01 00 00 and $0x1f0,%edx
- 10209f: 89 95 f4 fe ff ff mov %edx,-0x10c(%ebp)
- 1020a5: 81 bd f4 fe ff ff 90 cmpl $0x90,-0x10c(%ebp)
- 1020ac: 00 00 00
- 1020af: 72 1d jb 1020ce <sprintfr+0x9f6>
- 1020b1: 81 bd f4 fe ff ff 90 cmpl $0x90,-0x10c(%ebp)
- 1020b8: 00 00 00
- 1020bb: 77 09 ja 1020c6 <sprintfr+0x9ee>
- 1020bd: 83 bd f0 fe ff ff 00 cmpl $0x0,-0x110(%ebp)
- 1020c4: 76 08 jbe 1020ce <sprintfr+0x9f6>
- 1020c6: 83 45 d0 00 addl $0x0,-0x30(%ebp)
- 1020ca: 83 55 d4 60 adcl $0x60,-0x2c(%ebp)
- arg = (long) arg;
- BCD = 0;
- stelle = 0x80000000;
- if(arg&stelle){ vorflag = 1;arg&=0x7fffffff;arg--; arg^=0x7fffffff; }
- else vorflag = 0;
- for(j=0;j<32;j++){
- 1020ce: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 1020d2: 83 7d e4 1f cmpl $0x1f,-0x1c(%ebp)
- 1020d6: 0f 8e 10 fd ff ff jle 101dec <sprintfr+0x714>
- if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
- if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
- if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
- if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
- }
- b[0] = (BCD&0x0f000000000)>>36;
- 1020dc: 8b 45 d0 mov -0x30(%ebp),%eax
- 1020df: 89 c2 mov %eax,%edx
- 1020e1: 83 e2 00 and $0x0,%edx
- 1020e4: 89 95 e8 fe ff ff mov %edx,-0x118(%ebp)
- 1020ea: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1020ed: 89 c2 mov %eax,%edx
- 1020ef: 81 e2 f0 00 00 00 and $0xf0,%edx
- 1020f5: 89 95 ec fe ff ff mov %edx,-0x114(%ebp)
- 1020fb: 8b 85 e8 fe ff ff mov -0x118(%ebp),%eax
- 102101: 8b 95 ec fe ff ff mov -0x114(%ebp),%edx
- 102107: 89 d0 mov %edx,%eax
- 102109: 31 d2 xor %edx,%edx
- 10210b: c1 e8 04 shr $0x4,%eax
- 10210e: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (BCD&0x0f00000000)>>32;
- 102111: 8b 45 d0 mov -0x30(%ebp),%eax
- 102114: 89 c2 mov %eax,%edx
- 102116: 83 e2 00 and $0x0,%edx
- 102119: 89 95 e0 fe ff ff mov %edx,-0x120(%ebp)
- 10211f: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102122: 89 c2 mov %eax,%edx
- 102124: 83 e2 0f and $0xf,%edx
- 102127: 89 95 e4 fe ff ff mov %edx,-0x11c(%ebp)
- 10212d: 8b 85 e0 fe ff ff mov -0x120(%ebp),%eax
- 102133: 8b 95 e4 fe ff ff mov -0x11c(%ebp),%edx
- 102139: 89 d0 mov %edx,%eax
- 10213b: 31 d2 xor %edx,%edx
- 10213d: 88 45 bb mov %al,-0x45(%ebp)
- b[2] = (BCD&0x0f0000000)>>28;
- 102140: 8b 45 d0 mov -0x30(%ebp),%eax
- 102143: 89 c2 mov %eax,%edx
- 102145: 81 e2 00 00 00 f0 and $0xf0000000,%edx
- 10214b: 89 95 d8 fe ff ff mov %edx,-0x128(%ebp)
- 102151: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102154: 89 c2 mov %eax,%edx
- 102156: 83 e2 00 and $0x0,%edx
- 102159: 89 95 dc fe ff ff mov %edx,-0x124(%ebp)
- 10215f: 8b 85 d8 fe ff ff mov -0x128(%ebp),%eax
- 102165: 8b 95 dc fe ff ff mov -0x124(%ebp),%edx
- 10216b: 0f ac d0 1c shrd $0x1c,%edx,%eax
- 10216f: c1 ea 1c shr $0x1c,%edx
- 102172: 88 45 bc mov %al,-0x44(%ebp)
- b[3] = (BCD&0x0f000000)>>24;
- 102175: 8b 45 d0 mov -0x30(%ebp),%eax
- 102178: 89 c2 mov %eax,%edx
- 10217a: 81 e2 00 00 00 0f and $0xf000000,%edx
- 102180: 89 95 d0 fe ff ff mov %edx,-0x130(%ebp)
- 102186: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102189: 89 c2 mov %eax,%edx
- 10218b: 83 e2 00 and $0x0,%edx
- 10218e: 89 95 d4 fe ff ff mov %edx,-0x12c(%ebp)
- 102194: 8b 85 d0 fe ff ff mov -0x130(%ebp),%eax
- 10219a: 8b 95 d4 fe ff ff mov -0x12c(%ebp),%edx
- 1021a0: 0f ac d0 18 shrd $0x18,%edx,%eax
- 1021a4: c1 ea 18 shr $0x18,%edx
- 1021a7: 88 45 bd mov %al,-0x43(%ebp)
- b[4] = (BCD&0x0f00000)>>20;
- 1021aa: 8b 45 d0 mov -0x30(%ebp),%eax
- 1021ad: 89 c2 mov %eax,%edx
- 1021af: 81 e2 00 00 f0 00 and $0xf00000,%edx
- 1021b5: 89 95 c8 fe ff ff mov %edx,-0x138(%ebp)
- 1021bb: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1021be: 89 c2 mov %eax,%edx
- 1021c0: 83 e2 00 and $0x0,%edx
- 1021c3: 89 95 cc fe ff ff mov %edx,-0x134(%ebp)
- 1021c9: 8b 85 c8 fe ff ff mov -0x138(%ebp),%eax
- 1021cf: 8b 95 cc fe ff ff mov -0x134(%ebp),%edx
- 1021d5: 0f ac d0 14 shrd $0x14,%edx,%eax
- 1021d9: c1 ea 14 shr $0x14,%edx
- 1021dc: 88 45 be mov %al,-0x42(%ebp)
- b[5] = (BCD&0x0f0000)>>16;
- 1021df: 8b 45 d0 mov -0x30(%ebp),%eax
- 1021e2: 89 c2 mov %eax,%edx
- 1021e4: 81 e2 00 00 0f 00 and $0xf0000,%edx
- 1021ea: 89 95 c0 fe ff ff mov %edx,-0x140(%ebp)
- 1021f0: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1021f3: 89 c2 mov %eax,%edx
- 1021f5: 83 e2 00 and $0x0,%edx
- 1021f8: 89 95 c4 fe ff ff mov %edx,-0x13c(%ebp)
- 1021fe: 8b 85 c0 fe ff ff mov -0x140(%ebp),%eax
- 102204: 8b 95 c4 fe ff ff mov -0x13c(%ebp),%edx
- 10220a: 0f ac d0 10 shrd $0x10,%edx,%eax
- 10220e: c1 ea 10 shr $0x10,%edx
- 102211: 88 45 bf mov %al,-0x41(%ebp)
- b[6] = (BCD&0x0f000)>>12;
- 102214: 8b 45 d0 mov -0x30(%ebp),%eax
- 102217: 89 c2 mov %eax,%edx
- 102219: 81 e2 00 f0 00 00 and $0xf000,%edx
- 10221f: 89 95 b8 fe ff ff mov %edx,-0x148(%ebp)
- 102225: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102228: 89 c2 mov %eax,%edx
- 10222a: 83 e2 00 and $0x0,%edx
- 10222d: 89 95 bc fe ff ff mov %edx,-0x144(%ebp)
- 102233: 8b 85 b8 fe ff ff mov -0x148(%ebp),%eax
- 102239: 8b 95 bc fe ff ff mov -0x144(%ebp),%edx
- 10223f: 0f ac d0 0c shrd $0xc,%edx,%eax
- 102243: c1 ea 0c shr $0xc,%edx
- 102246: 88 45 c0 mov %al,-0x40(%ebp)
- b[7] = (BCD&0x0f00)>>8;
- 102249: 8b 45 d0 mov -0x30(%ebp),%eax
- 10224c: 89 c2 mov %eax,%edx
- 10224e: 81 e2 00 0f 00 00 and $0xf00,%edx
- 102254: 89 95 b0 fe ff ff mov %edx,-0x150(%ebp)
- 10225a: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10225d: 89 c2 mov %eax,%edx
- 10225f: 83 e2 00 and $0x0,%edx
- 102262: 89 95 b4 fe ff ff mov %edx,-0x14c(%ebp)
- 102268: 8b 85 b0 fe ff ff mov -0x150(%ebp),%eax
- 10226e: 8b 95 b4 fe ff ff mov -0x14c(%ebp),%edx
- 102274: 0f ac d0 08 shrd $0x8,%edx,%eax
- 102278: c1 ea 08 shr $0x8,%edx
- 10227b: 88 45 c1 mov %al,-0x3f(%ebp)
- b[8] = (BCD&0x0f0)>>4;
- 10227e: 8b 45 d0 mov -0x30(%ebp),%eax
- 102281: 89 c2 mov %eax,%edx
- 102283: 81 e2 f0 00 00 00 and $0xf0,%edx
- 102289: 89 95 a8 fe ff ff mov %edx,-0x158(%ebp)
- 10228f: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102292: 89 c2 mov %eax,%edx
- 102294: 83 e2 00 and $0x0,%edx
- 102297: 89 95 ac fe ff ff mov %edx,-0x154(%ebp)
- 10229d: 8b 85 a8 fe ff ff mov -0x158(%ebp),%eax
- 1022a3: 8b 95 ac fe ff ff mov -0x154(%ebp),%edx
- 1022a9: 0f ac d0 04 shrd $0x4,%edx,%eax
- 1022ad: c1 ea 04 shr $0x4,%edx
- 1022b0: 88 45 c2 mov %al,-0x3e(%ebp)
- b[9] = (BCD&0x0f);
- 1022b3: 8b 45 d0 mov -0x30(%ebp),%eax
- 1022b6: 83 e0 0f and $0xf,%eax
- 1022b9: 88 45 c3 mov %al,-0x3d(%ebp)
- nullflag = 1;
- 1022bc: c6 45 da 01 movb $0x1,-0x26(%ebp)
- if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
- 1022c0: 80 7d db 00 cmpb $0x0,-0x25(%ebp)
- 1022c4: 74 0d je 1022d3 <sprintfr+0xbfb>
- 1022c6: 8b 45 e8 mov -0x18(%ebp),%eax
- 1022c9: 03 45 c4 add -0x3c(%ebp),%eax
- 1022cc: c6 00 2d movb $0x2d,(%eax)
- 1022cf: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- for(j=0;j<10;j++){
- 1022d3: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 1022da: eb 35 jmp 102311 <sprintfr+0xc39>
- if(! (b[j] == 0 && nullflag)){
- 1022dc: 8d 45 ba lea -0x46(%ebp),%eax
- 1022df: 03 45 e4 add -0x1c(%ebp),%eax
- 1022e2: 0f b6 00 movzbl (%eax),%eax
- 1022e5: 84 c0 test %al,%al
- 1022e7: 75 06 jne 1022ef <sprintfr+0xc17>
- 1022e9: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 1022ed: 75 1e jne 10230d <sprintfr+0xc35>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- 1022ef: 8b 45 e8 mov -0x18(%ebp),%eax
- 1022f2: 89 c2 mov %eax,%edx
- 1022f4: 03 55 c4 add -0x3c(%ebp),%edx
- 1022f7: 8d 45 ba lea -0x46(%ebp),%eax
- 1022fa: 03 45 e4 add -0x1c(%ebp),%eax
- 1022fd: 0f b6 00 movzbl (%eax),%eax
- 102300: 83 c0 30 add $0x30,%eax
- 102303: 88 02 mov %al,(%edx)
- 102305: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- nullflag = 0;
- 102309: c6 45 da 00 movb $0x0,-0x26(%ebp)
- b[8] = (BCD&0x0f0)>>4;
- b[9] = (BCD&0x0f);
- nullflag = 1;
- if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
- for(j=0;j<10;j++){
- 10230d: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 102311: 83 7d e4 09 cmpl $0x9,-0x1c(%ebp)
- 102315: 7e c5 jle 1022dc <sprintfr+0xc04>
- if(! (b[j] == 0 && nullflag)){
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag = 0;
- }
- }
- if(nullflag) rs[z++] = NULL;// 48 - ASCII null
- 102317: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 10231b: 74 0d je 10232a <sprintfr+0xc52>
- 10231d: 8b 45 e8 mov -0x18(%ebp),%eax
- 102320: 03 45 c4 add -0x3c(%ebp),%eax
- 102323: c6 00 30 movb $0x30,(%eax)
- 102326: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- i++;
- 10232a: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- break;
- 10232e: e9 51 05 00 00 jmp 102884 <sprintfr+0x11ac>
- case 'u'://*******************Unsigned (long)
- case 'U'://*********************************
- arg = (unsigned long) arg;
- BCD = 0;
- 102333: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
- 10233a: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp)
- stelle = 0x80000000;
- 102341: c7 45 cc 00 00 00 80 movl $0x80000000,-0x34(%ebp)
- for(j=0;j<32;j++){
- 102348: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 10234f: e9 e6 02 00 00 jmp 10263a <sprintfr+0xf62>
- BCD<<=1;
- 102354: 8b 45 d0 mov -0x30(%ebp),%eax
- 102357: 8b 55 d4 mov -0x2c(%ebp),%edx
- 10235a: 0f a4 c2 01 shld $0x1,%eax,%edx
- 10235e: 01 c0 add %eax,%eax
- 102360: 89 45 d0 mov %eax,-0x30(%ebp)
- 102363: 89 55 d4 mov %edx,-0x2c(%ebp)
- if(arg & stelle)BCD++;
- 102366: 8b 45 c8 mov -0x38(%ebp),%eax
- 102369: 23 45 cc and -0x34(%ebp),%eax
- 10236c: 85 c0 test %eax,%eax
- 10236e: 74 08 je 102378 <sprintfr+0xca0>
- 102370: 83 45 d0 01 addl $0x1,-0x30(%ebp)
- 102374: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- stelle>>=1;
- 102378: d1 6d cc shrl -0x34(%ebp)
- if((BCD & 0x1f) > 0x9)BCD+=0x6;
- 10237b: 8b 45 d0 mov -0x30(%ebp),%eax
- 10237e: 89 c2 mov %eax,%edx
- 102380: 83 e2 1f and $0x1f,%edx
- 102383: 89 95 a0 fe ff ff mov %edx,-0x160(%ebp)
- 102389: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10238c: 89 c2 mov %eax,%edx
- 10238e: 83 e2 00 and $0x0,%edx
- 102391: 89 95 a4 fe ff ff mov %edx,-0x15c(%ebp)
- 102397: 83 bd a4 fe ff ff 00 cmpl $0x0,-0x15c(%ebp)
- 10239e: 72 1a jb 1023ba <sprintfr+0xce2>
- 1023a0: 83 bd a4 fe ff ff 00 cmpl $0x0,-0x15c(%ebp)
- 1023a7: 77 09 ja 1023b2 <sprintfr+0xcda>
- 1023a9: 83 bd a0 fe ff ff 09 cmpl $0x9,-0x160(%ebp)
- 1023b0: 76 08 jbe 1023ba <sprintfr+0xce2>
- 1023b2: 83 45 d0 06 addl $0x6,-0x30(%ebp)
- 1023b6: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0) > 0x90)BCD+=0x60;
- 1023ba: 8b 45 d0 mov -0x30(%ebp),%eax
- 1023bd: 89 c2 mov %eax,%edx
- 1023bf: 81 e2 f0 01 00 00 and $0x1f0,%edx
- 1023c5: 89 95 98 fe ff ff mov %edx,-0x168(%ebp)
- 1023cb: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1023ce: 89 c2 mov %eax,%edx
- 1023d0: 83 e2 00 and $0x0,%edx
- 1023d3: 89 95 9c fe ff ff mov %edx,-0x164(%ebp)
- 1023d9: 83 bd 9c fe ff ff 00 cmpl $0x0,-0x164(%ebp)
- 1023e0: 72 1d jb 1023ff <sprintfr+0xd27>
- 1023e2: 83 bd 9c fe ff ff 00 cmpl $0x0,-0x164(%ebp)
- 1023e9: 77 0c ja 1023f7 <sprintfr+0xd1f>
- 1023eb: 81 bd 98 fe ff ff 90 cmpl $0x90,-0x168(%ebp)
- 1023f2: 00 00 00
- 1023f5: 76 08 jbe 1023ff <sprintfr+0xd27>
- 1023f7: 83 45 d0 60 addl $0x60,-0x30(%ebp)
- 1023fb: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00) > 0x900)BCD+=0x600;
- 1023ff: 8b 45 d0 mov -0x30(%ebp),%eax
- 102402: 89 c2 mov %eax,%edx
- 102404: 81 e2 00 1f 00 00 and $0x1f00,%edx
- 10240a: 89 95 90 fe ff ff mov %edx,-0x170(%ebp)
- 102410: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102413: 89 c2 mov %eax,%edx
- 102415: 83 e2 00 and $0x0,%edx
- 102418: 89 95 94 fe ff ff mov %edx,-0x16c(%ebp)
- 10241e: 83 bd 94 fe ff ff 00 cmpl $0x0,-0x16c(%ebp)
- 102425: 72 20 jb 102447 <sprintfr+0xd6f>
- 102427: 83 bd 94 fe ff ff 00 cmpl $0x0,-0x16c(%ebp)
- 10242e: 77 0c ja 10243c <sprintfr+0xd64>
- 102430: 81 bd 90 fe ff ff 00 cmpl $0x900,-0x170(%ebp)
- 102437: 09 00 00
- 10243a: 76 0b jbe 102447 <sprintfr+0xd6f>
- 10243c: 81 45 d0 00 06 00 00 addl $0x600,-0x30(%ebp)
- 102443: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
- 102447: 8b 45 d0 mov -0x30(%ebp),%eax
- 10244a: 89 c2 mov %eax,%edx
- 10244c: 81 e2 00 f0 01 00 and $0x1f000,%edx
- 102452: 89 95 88 fe ff ff mov %edx,-0x178(%ebp)
- 102458: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10245b: 89 c2 mov %eax,%edx
- 10245d: 83 e2 00 and $0x0,%edx
- 102460: 89 95 8c fe ff ff mov %edx,-0x174(%ebp)
- 102466: 83 bd 8c fe ff ff 00 cmpl $0x0,-0x174(%ebp)
- 10246d: 72 20 jb 10248f <sprintfr+0xdb7>
- 10246f: 83 bd 8c fe ff ff 00 cmpl $0x0,-0x174(%ebp)
- 102476: 77 0c ja 102484 <sprintfr+0xdac>
- 102478: 81 bd 88 fe ff ff 00 cmpl $0x9000,-0x178(%ebp)
- 10247f: 90 00 00
- 102482: 76 0b jbe 10248f <sprintfr+0xdb7>
- 102484: 81 45 d0 00 60 00 00 addl $0x6000,-0x30(%ebp)
- 10248b: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0000) > 0x90000)BCD+=0x60000;
- 10248f: 8b 45 d0 mov -0x30(%ebp),%eax
- 102492: 89 c2 mov %eax,%edx
- 102494: 81 e2 00 00 1f 00 and $0x1f0000,%edx
- 10249a: 89 95 80 fe ff ff mov %edx,-0x180(%ebp)
- 1024a0: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1024a3: 89 c2 mov %eax,%edx
- 1024a5: 83 e2 00 and $0x0,%edx
- 1024a8: 89 95 84 fe ff ff mov %edx,-0x17c(%ebp)
- 1024ae: 83 bd 84 fe ff ff 00 cmpl $0x0,-0x17c(%ebp)
- 1024b5: 72 20 jb 1024d7 <sprintfr+0xdff>
- 1024b7: 83 bd 84 fe ff ff 00 cmpl $0x0,-0x17c(%ebp)
- 1024be: 77 0c ja 1024cc <sprintfr+0xdf4>
- 1024c0: 81 bd 80 fe ff ff 00 cmpl $0x90000,-0x180(%ebp)
- 1024c7: 00 09 00
- 1024ca: 76 0b jbe 1024d7 <sprintfr+0xdff>
- 1024cc: 81 45 d0 00 00 06 00 addl $0x60000,-0x30(%ebp)
- 1024d3: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00000) > 0x900000)BCD+=0x600000;
- 1024d7: 8b 45 d0 mov -0x30(%ebp),%eax
- 1024da: 89 c2 mov %eax,%edx
- 1024dc: 81 e2 00 00 f0 01 and $0x1f00000,%edx
- 1024e2: 89 95 78 fe ff ff mov %edx,-0x188(%ebp)
- 1024e8: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1024eb: 89 c2 mov %eax,%edx
- 1024ed: 83 e2 00 and $0x0,%edx
- 1024f0: 89 95 7c fe ff ff mov %edx,-0x184(%ebp)
- 1024f6: 83 bd 7c fe ff ff 00 cmpl $0x0,-0x184(%ebp)
- 1024fd: 72 20 jb 10251f <sprintfr+0xe47>
- 1024ff: 83 bd 7c fe ff ff 00 cmpl $0x0,-0x184(%ebp)
- 102506: 77 0c ja 102514 <sprintfr+0xe3c>
- 102508: 81 bd 78 fe ff ff 00 cmpl $0x900000,-0x188(%ebp)
- 10250f: 00 90 00
- 102512: 76 0b jbe 10251f <sprintfr+0xe47>
- 102514: 81 45 d0 00 00 60 00 addl $0x600000,-0x30(%ebp)
- 10251b: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
- 10251f: 8b 45 d0 mov -0x30(%ebp),%eax
- 102522: 89 c2 mov %eax,%edx
- 102524: 81 e2 00 00 00 1f and $0x1f000000,%edx
- 10252a: 89 95 70 fe ff ff mov %edx,-0x190(%ebp)
- 102530: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102533: 89 c2 mov %eax,%edx
- 102535: 83 e2 00 and $0x0,%edx
- 102538: 89 95 74 fe ff ff mov %edx,-0x18c(%ebp)
- 10253e: 83 bd 74 fe ff ff 00 cmpl $0x0,-0x18c(%ebp)
- 102545: 72 20 jb 102567 <sprintfr+0xe8f>
- 102547: 83 bd 74 fe ff ff 00 cmpl $0x0,-0x18c(%ebp)
- 10254e: 77 0c ja 10255c <sprintfr+0xe84>
- 102550: 81 bd 70 fe ff ff 00 cmpl $0x9000000,-0x190(%ebp)
- 102557: 00 00 09
- 10255a: 76 0b jbe 102567 <sprintfr+0xe8f>
- 10255c: 81 45 d0 00 00 00 06 addl $0x6000000,-0x30(%ebp)
- 102563: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
- 102567: 8b 45 d0 mov -0x30(%ebp),%eax
- 10256a: 89 c2 mov %eax,%edx
- 10256c: 81 e2 00 00 00 f0 and $0xf0000000,%edx
- 102572: 89 95 68 fe ff ff mov %edx,-0x198(%ebp)
- 102578: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10257b: 89 c2 mov %eax,%edx
- 10257d: 83 e2 01 and $0x1,%edx
- 102580: 89 95 6c fe ff ff mov %edx,-0x194(%ebp)
- 102586: 83 bd 6c fe ff ff 00 cmpl $0x0,-0x194(%ebp)
- 10258d: 72 20 jb 1025af <sprintfr+0xed7>
- 10258f: 83 bd 6c fe ff ff 00 cmpl $0x0,-0x194(%ebp)
- 102596: 77 0c ja 1025a4 <sprintfr+0xecc>
- 102598: 81 bd 68 fe ff ff 00 cmpl $0x90000000,-0x198(%ebp)
- 10259f: 00 00 90
- 1025a2: 76 0b jbe 1025af <sprintfr+0xed7>
- 1025a4: 81 45 d0 00 00 00 60 addl $0x60000000,-0x30(%ebp)
- 1025ab: 83 55 d4 00 adcl $0x0,-0x2c(%ebp)
- if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
- 1025af: 8b 45 d0 mov -0x30(%ebp),%eax
- 1025b2: 89 c2 mov %eax,%edx
- 1025b4: 83 e2 00 and $0x0,%edx
- 1025b7: 89 95 60 fe ff ff mov %edx,-0x1a0(%ebp)
- 1025bd: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1025c0: 89 c2 mov %eax,%edx
- 1025c2: 83 e2 1f and $0x1f,%edx
- 1025c5: 89 95 64 fe ff ff mov %edx,-0x19c(%ebp)
- 1025cb: 83 bd 64 fe ff ff 09 cmpl $0x9,-0x19c(%ebp)
- 1025d2: 72 1a jb 1025ee <sprintfr+0xf16>
- 1025d4: 83 bd 64 fe ff ff 09 cmpl $0x9,-0x19c(%ebp)
- 1025db: 77 09 ja 1025e6 <sprintfr+0xf0e>
- 1025dd: 83 bd 60 fe ff ff 00 cmpl $0x0,-0x1a0(%ebp)
- 1025e4: 76 08 jbe 1025ee <sprintfr+0xf16>
- 1025e6: 83 45 d0 00 addl $0x0,-0x30(%ebp)
- 1025ea: 83 55 d4 06 adcl $0x6,-0x2c(%ebp)
- if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
- 1025ee: 8b 45 d0 mov -0x30(%ebp),%eax
- 1025f1: 89 c2 mov %eax,%edx
- 1025f3: 83 e2 00 and $0x0,%edx
- 1025f6: 89 95 58 fe ff ff mov %edx,-0x1a8(%ebp)
- 1025fc: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1025ff: 89 c2 mov %eax,%edx
- 102601: 81 e2 f0 01 00 00 and $0x1f0,%edx
- 102607: 89 95 5c fe ff ff mov %edx,-0x1a4(%ebp)
- 10260d: 81 bd 5c fe ff ff 90 cmpl $0x90,-0x1a4(%ebp)
- 102614: 00 00 00
- 102617: 72 1d jb 102636 <sprintfr+0xf5e>
- 102619: 81 bd 5c fe ff ff 90 cmpl $0x90,-0x1a4(%ebp)
- 102620: 00 00 00
- 102623: 77 09 ja 10262e <sprintfr+0xf56>
- 102625: 83 bd 58 fe ff ff 00 cmpl $0x0,-0x1a8(%ebp)
- 10262c: 76 08 jbe 102636 <sprintfr+0xf5e>
- 10262e: 83 45 d0 00 addl $0x0,-0x30(%ebp)
- 102632: 83 55 d4 60 adcl $0x60,-0x2c(%ebp)
- case 'u'://*******************Unsigned (long)
- case 'U'://*********************************
- arg = (unsigned long) arg;
- BCD = 0;
- stelle = 0x80000000;
- for(j=0;j<32;j++){
- 102636: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 10263a: 83 7d e4 1f cmpl $0x1f,-0x1c(%ebp)
- 10263e: 0f 8e 10 fd ff ff jle 102354 <sprintfr+0xc7c>
- if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
- if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
- if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
- if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
- }
- b[0] = (BCD&0x0f000000000)>>36;
- 102644: 8b 45 d0 mov -0x30(%ebp),%eax
- 102647: 89 c2 mov %eax,%edx
- 102649: 83 e2 00 and $0x0,%edx
- 10264c: 89 95 50 fe ff ff mov %edx,-0x1b0(%ebp)
- 102652: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102655: 89 c2 mov %eax,%edx
- 102657: 81 e2 f0 00 00 00 and $0xf0,%edx
- 10265d: 89 95 54 fe ff ff mov %edx,-0x1ac(%ebp)
- 102663: 8b 85 50 fe ff ff mov -0x1b0(%ebp),%eax
- 102669: 8b 95 54 fe ff ff mov -0x1ac(%ebp),%edx
- 10266f: 89 d0 mov %edx,%eax
- 102671: 31 d2 xor %edx,%edx
- 102673: c1 e8 04 shr $0x4,%eax
- 102676: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (BCD&0x0f00000000)>>32;
- 102679: 8b 45 d0 mov -0x30(%ebp),%eax
- 10267c: 89 c2 mov %eax,%edx
- 10267e: 83 e2 00 and $0x0,%edx
- 102681: 89 95 48 fe ff ff mov %edx,-0x1b8(%ebp)
- 102687: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10268a: 89 c2 mov %eax,%edx
- 10268c: 83 e2 0f and $0xf,%edx
- 10268f: 89 95 4c fe ff ff mov %edx,-0x1b4(%ebp)
- 102695: 8b 85 48 fe ff ff mov -0x1b8(%ebp),%eax
- 10269b: 8b 95 4c fe ff ff mov -0x1b4(%ebp),%edx
- 1026a1: 89 d0 mov %edx,%eax
- 1026a3: 31 d2 xor %edx,%edx
- 1026a5: 88 45 bb mov %al,-0x45(%ebp)
- b[2] = (BCD&0x0f0000000)>>28;
- 1026a8: 8b 45 d0 mov -0x30(%ebp),%eax
- 1026ab: 89 c2 mov %eax,%edx
- 1026ad: 81 e2 00 00 00 f0 and $0xf0000000,%edx
- 1026b3: 89 95 40 fe ff ff mov %edx,-0x1c0(%ebp)
- 1026b9: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1026bc: 89 c2 mov %eax,%edx
- 1026be: 83 e2 00 and $0x0,%edx
- 1026c1: 89 95 44 fe ff ff mov %edx,-0x1bc(%ebp)
- 1026c7: 8b 85 40 fe ff ff mov -0x1c0(%ebp),%eax
- 1026cd: 8b 95 44 fe ff ff mov -0x1bc(%ebp),%edx
- 1026d3: 0f ac d0 1c shrd $0x1c,%edx,%eax
- 1026d7: c1 ea 1c shr $0x1c,%edx
- 1026da: 88 45 bc mov %al,-0x44(%ebp)
- b[3] = (BCD&0x0f000000)>>24;
- 1026dd: 8b 45 d0 mov -0x30(%ebp),%eax
- 1026e0: 89 c2 mov %eax,%edx
- 1026e2: 81 e2 00 00 00 0f and $0xf000000,%edx
- 1026e8: 89 95 38 fe ff ff mov %edx,-0x1c8(%ebp)
- 1026ee: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1026f1: 89 c2 mov %eax,%edx
- 1026f3: 83 e2 00 and $0x0,%edx
- 1026f6: 89 95 3c fe ff ff mov %edx,-0x1c4(%ebp)
- 1026fc: 8b 85 38 fe ff ff mov -0x1c8(%ebp),%eax
- 102702: 8b 95 3c fe ff ff mov -0x1c4(%ebp),%edx
- 102708: 0f ac d0 18 shrd $0x18,%edx,%eax
- 10270c: c1 ea 18 shr $0x18,%edx
- 10270f: 88 45 bd mov %al,-0x43(%ebp)
- b[4] = (BCD&0x0f00000)>>20;
- 102712: 8b 45 d0 mov -0x30(%ebp),%eax
- 102715: 89 c2 mov %eax,%edx
- 102717: 81 e2 00 00 f0 00 and $0xf00000,%edx
- 10271d: 89 95 30 fe ff ff mov %edx,-0x1d0(%ebp)
- 102723: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102726: 89 c2 mov %eax,%edx
- 102728: 83 e2 00 and $0x0,%edx
- 10272b: 89 95 34 fe ff ff mov %edx,-0x1cc(%ebp)
- 102731: 8b 85 30 fe ff ff mov -0x1d0(%ebp),%eax
- 102737: 8b 95 34 fe ff ff mov -0x1cc(%ebp),%edx
- 10273d: 0f ac d0 14 shrd $0x14,%edx,%eax
- 102741: c1 ea 14 shr $0x14,%edx
- 102744: 88 45 be mov %al,-0x42(%ebp)
- b[5] = (BCD&0x0f0000)>>16;
- 102747: 8b 45 d0 mov -0x30(%ebp),%eax
- 10274a: 89 c2 mov %eax,%edx
- 10274c: 81 e2 00 00 0f 00 and $0xf0000,%edx
- 102752: 89 95 28 fe ff ff mov %edx,-0x1d8(%ebp)
- 102758: 8b 45 d4 mov -0x2c(%ebp),%eax
- 10275b: 89 c2 mov %eax,%edx
- 10275d: 83 e2 00 and $0x0,%edx
- 102760: 89 95 2c fe ff ff mov %edx,-0x1d4(%ebp)
- 102766: 8b 85 28 fe ff ff mov -0x1d8(%ebp),%eax
- 10276c: 8b 95 2c fe ff ff mov -0x1d4(%ebp),%edx
- 102772: 0f ac d0 10 shrd $0x10,%edx,%eax
- 102776: c1 ea 10 shr $0x10,%edx
- 102779: 88 45 bf mov %al,-0x41(%ebp)
- b[6] = (BCD&0x0f000)>>12;
- 10277c: 8b 45 d0 mov -0x30(%ebp),%eax
- 10277f: 89 c2 mov %eax,%edx
- 102781: 81 e2 00 f0 00 00 and $0xf000,%edx
- 102787: 89 95 20 fe ff ff mov %edx,-0x1e0(%ebp)
- 10278d: 8b 45 d4 mov -0x2c(%ebp),%eax
- 102790: 89 c2 mov %eax,%edx
- 102792: 83 e2 00 and $0x0,%edx
- 102795: 89 95 24 fe ff ff mov %edx,-0x1dc(%ebp)
- 10279b: 8b 85 20 fe ff ff mov -0x1e0(%ebp),%eax
- 1027a1: 8b 95 24 fe ff ff mov -0x1dc(%ebp),%edx
- 1027a7: 0f ac d0 0c shrd $0xc,%edx,%eax
- 1027ab: c1 ea 0c shr $0xc,%edx
- 1027ae: 88 45 c0 mov %al,-0x40(%ebp)
- b[7] = (BCD&0x0f00)>>8;
- 1027b1: 8b 45 d0 mov -0x30(%ebp),%eax
- 1027b4: 89 c2 mov %eax,%edx
- 1027b6: 81 e2 00 0f 00 00 and $0xf00,%edx
- 1027bc: 89 95 18 fe ff ff mov %edx,-0x1e8(%ebp)
- 1027c2: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1027c5: 89 c2 mov %eax,%edx
- 1027c7: 83 e2 00 and $0x0,%edx
- 1027ca: 89 95 1c fe ff ff mov %edx,-0x1e4(%ebp)
- 1027d0: 8b 85 18 fe ff ff mov -0x1e8(%ebp),%eax
- 1027d6: 8b 95 1c fe ff ff mov -0x1e4(%ebp),%edx
- 1027dc: 0f ac d0 08 shrd $0x8,%edx,%eax
- 1027e0: c1 ea 08 shr $0x8,%edx
- 1027e3: 88 45 c1 mov %al,-0x3f(%ebp)
- b[8] = (BCD&0x0f0)>>4;
- 1027e6: 8b 45 d0 mov -0x30(%ebp),%eax
- 1027e9: 89 c2 mov %eax,%edx
- 1027eb: 81 e2 f0 00 00 00 and $0xf0,%edx
- 1027f1: 89 95 10 fe ff ff mov %edx,-0x1f0(%ebp)
- 1027f7: 8b 45 d4 mov -0x2c(%ebp),%eax
- 1027fa: 89 c2 mov %eax,%edx
- 1027fc: 83 e2 00 and $0x0,%edx
- 1027ff: 89 95 14 fe ff ff mov %edx,-0x1ec(%ebp)
- 102805: 8b 85 10 fe ff ff mov -0x1f0(%ebp),%eax
- 10280b: 8b 95 14 fe ff ff mov -0x1ec(%ebp),%edx
- 102811: 0f ac d0 04 shrd $0x4,%edx,%eax
- 102815: c1 ea 04 shr $0x4,%edx
- 102818: 88 45 c2 mov %al,-0x3e(%ebp)
- b[9] = (BCD&0x0f);
- 10281b: 8b 45 d0 mov -0x30(%ebp),%eax
- 10281e: 83 e0 0f and $0xf,%eax
- 102821: 88 45 c3 mov %al,-0x3d(%ebp)
- nullflag = 1;
- 102824: c6 45 da 01 movb $0x1,-0x26(%ebp)
- for(j=0;j<10;j++){
- 102828: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 10282f: eb 35 jmp 102866 <sprintfr+0x118e>
- if(! (b[j] == 0 && nullflag)){
- 102831: 8d 45 ba lea -0x46(%ebp),%eax
- 102834: 03 45 e4 add -0x1c(%ebp),%eax
- 102837: 0f b6 00 movzbl (%eax),%eax
- 10283a: 84 c0 test %al,%al
- 10283c: 75 06 jne 102844 <sprintfr+0x116c>
- 10283e: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 102842: 75 1e jne 102862 <sprintfr+0x118a>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- 102844: 8b 45 e8 mov -0x18(%ebp),%eax
- 102847: 89 c2 mov %eax,%edx
- 102849: 03 55 c4 add -0x3c(%ebp),%edx
- 10284c: 8d 45 ba lea -0x46(%ebp),%eax
- 10284f: 03 45 e4 add -0x1c(%ebp),%eax
- 102852: 0f b6 00 movzbl (%eax),%eax
- 102855: 83 c0 30 add $0x30,%eax
- 102858: 88 02 mov %al,(%edx)
- 10285a: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- nullflag = 0;
- 10285e: c6 45 da 00 movb $0x0,-0x26(%ebp)
- b[7] = (BCD&0x0f00)>>8;
- b[8] = (BCD&0x0f0)>>4;
- b[9] = (BCD&0x0f);
- nullflag = 1;
- for(j=0;j<10;j++){
- 102862: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 102866: 83 7d e4 09 cmpl $0x9,-0x1c(%ebp)
- 10286a: 7e c5 jle 102831 <sprintfr+0x1159>
- if(! (b[j] == 0 && nullflag)){
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag = 0;
- }
- }
- if(nullflag) rs[z++] = NULL;// 48 - ASCII null
- 10286c: 80 7d da 00 cmpb $0x0,-0x26(%ebp)
- 102870: 74 0d je 10287f <sprintfr+0x11a7>
- 102872: 8b 45 e8 mov -0x18(%ebp),%eax
- 102875: 03 45 c4 add -0x3c(%ebp),%eax
- 102878: c6 00 30 movb $0x30,(%eax)
- 10287b: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- i++;
- 10287f: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- break;
- 102883: 90 nop
- }
- break;
- 102884: e9 ba 00 00 00 jmp 102943 <sprintfr+0x126b>
- case 'c'://******************************** Char
- case 'C'://*************************************
- rs[z++] = (uint8_t) arg;
- 102889: 8b 45 e8 mov -0x18(%ebp),%eax
- 10288c: 89 c2 mov %eax,%edx
- 10288e: 03 55 c4 add -0x3c(%ebp),%edx
- 102891: 8b 45 c8 mov -0x38(%ebp),%eax
- 102894: 88 02 mov %al,(%edx)
- 102896: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- break;
- 10289a: e9 a4 00 00 00 jmp 102943 <sprintfr+0x126b>
- case 'b'://******************************** 8-Bit wert in hex
- case 'B'://**************************************************
- arg = (uint8_t) arg;
- 10289f: 8b 45 c8 mov -0x38(%ebp),%eax
- 1028a2: 0f b6 c0 movzbl %al,%eax
- 1028a5: 89 45 c8 mov %eax,-0x38(%ebp)
- b[0] = (arg & 0xf0)>>4;
- 1028a8: 8b 45 c8 mov -0x38(%ebp),%eax
- 1028ab: 25 f0 00 00 00 and $0xf0,%eax
- 1028b0: c1 f8 04 sar $0x4,%eax
- 1028b3: 88 45 ba mov %al,-0x46(%ebp)
- b[1] = (arg & 0x0f);
- 1028b6: 8b 45 c8 mov -0x38(%ebp),%eax
- 1028b9: 83 e0 0f and $0xf,%eax
- 1028bc: 88 45 bb mov %al,-0x45(%ebp)
- for (j = 0; j < 2; j++){
- 1028bf: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
- 1028c6: eb 47 jmp 10290f <sprintfr+0x1237>
- if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
- 1028c8: 8d 45 ba lea -0x46(%ebp),%eax
- 1028cb: 03 45 e4 add -0x1c(%ebp),%eax
- 1028ce: 0f b6 00 movzbl (%eax),%eax
- 1028d1: 3c 09 cmp $0x9,%al
- 1028d3: 7e 1c jle 1028f1 <sprintfr+0x1219>
- 1028d5: 8b 45 e8 mov -0x18(%ebp),%eax
- 1028d8: 89 c2 mov %eax,%edx
- 1028da: 03 55 c4 add -0x3c(%ebp),%edx
- 1028dd: 8d 45 ba lea -0x46(%ebp),%eax
- 1028e0: 03 45 e4 add -0x1c(%ebp),%eax
- 1028e3: 0f b6 00 movzbl (%eax),%eax
- 1028e6: 83 c0 37 add $0x37,%eax
- 1028e9: 88 02 mov %al,(%edx)
- 1028eb: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- 1028ef: eb 1a jmp 10290b <sprintfr+0x1233>
- else rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
- 1028f1: 8b 45 e8 mov -0x18(%ebp),%eax
- 1028f4: 89 c2 mov %eax,%edx
- 1028f6: 03 55 c4 add -0x3c(%ebp),%edx
- 1028f9: 8d 45 ba lea -0x46(%ebp),%eax
- 1028fc: 03 45 e4 add -0x1c(%ebp),%eax
- 1028ff: 0f b6 00 movzbl (%eax),%eax
- 102902: 83 c0 30 add $0x30,%eax
- 102905: 88 02 mov %al,(%edx)
- 102907: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- case 'b'://******************************** 8-Bit wert in hex
- case 'B'://**************************************************
- arg = (uint8_t) arg;
- b[0] = (arg & 0xf0)>>4;
- b[1] = (arg & 0x0f);
- for (j = 0; j < 2; j++){
- 10290b: 83 45 e4 01 addl $0x1,-0x1c(%ebp)
- 10290f: 83 7d e4 01 cmpl $0x1,-0x1c(%ebp)
- 102913: 7e b3 jle 1028c8 <sprintfr+0x11f0>
- if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
- else rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
- }
- break;
- 102915: eb 2c jmp 102943 <sprintfr+0x126b>
- case '%':
- rs[z++] = '%';
- 102917: 8b 45 e8 mov -0x18(%ebp),%eax
- 10291a: 03 45 c4 add -0x3c(%ebp),%eax
- 10291d: c6 00 25 movb $0x25,(%eax)
- 102920: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- break;
- 102924: eb 1d jmp 102943 <sprintfr+0x126b>
- default:
- rs[z++] = s[i];
- 102926: 8b 45 e8 mov -0x18(%ebp),%eax
- 102929: 89 c2 mov %eax,%edx
- 10292b: 03 55 c4 add -0x3c(%ebp),%edx
- 10292e: 8b 45 ec mov -0x14(%ebp),%eax
- 102931: 03 45 08 add 0x8(%ebp),%eax
- 102934: 0f b6 00 movzbl (%eax),%eax
- 102937: 88 02 mov %al,(%edx)
- 102939: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- break;
- 10293d: eb 04 jmp 102943 <sprintfr+0x126b>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag =0;
- }
- }
- if(nullflag) rs[z++] = NULL;
- break;
- 10293f: 90 nop
- 102940: eb 01 jmp 102943 <sprintfr+0x126b>
- rs[z++] = b[j] + NULL;// 48 - ASCII null
- nullflag = 0;
- }
- }
- if(nullflag) rs[z++] = NULL;
- break;
- 102942: 90 nop
- break;
- default:
- rs[z++] = s[i];
- break;
- }
- i++;
- 102943: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- 102947: eb 17 jmp 102960 <sprintfr+0x1288>
- }else{
- rs[z++] = s[i];
- 102949: 8b 45 e8 mov -0x18(%ebp),%eax
- 10294c: 89 c2 mov %eax,%edx
- 10294e: 03 55 c4 add -0x3c(%ebp),%edx
- 102951: 8b 45 ec mov -0x14(%ebp),%eax
- 102954: 03 45 08 add 0x8(%ebp),%eax
- 102957: 0f b6 00 movzbl (%eax),%eax
- 10295a: 88 02 mov %al,(%edx)
- 10295c: 83 45 e8 01 addl $0x1,-0x18(%ebp)
- long arg;
- char *rs, b[10],bs;
- ///\p s eingabestring \p rs ausgabestring
- ///\p i eingabestringzähler \p z ausgabestringzähler
- ///\p j allgemeiner schleifenzähler \p ai argumentzähler
- for(i=0,z=0;s[i] != '\0';i++){
- 102960: 83 45 ec 01 addl $0x1,-0x14(%ebp)
- 102964: 8b 45 ec mov -0x14(%ebp),%eax
- 102967: 03 45 08 add 0x8(%ebp),%eax
- 10296a: 0f b6 00 movzbl (%eax),%eax
- 10296d: 84 c0 test %al,%al
- 10296f: 0f 85 89 ed ff ff jne 1016fe <sprintfr+0x26>
- i++;
- }else{
- rs[z++] = s[i];
- }
- }
- rs[z] = '\0';
- 102975: 8b 45 e8 mov -0x18(%ebp),%eax
- 102978: 03 45 c4 add -0x3c(%ebp),%eax
- 10297b: c6 00 00 movb $0x0,(%eax)
- return rs;
- 10297e: 8b 45 c4 mov -0x3c(%ebp),%eax
- }
- 102981: 81 c4 e4 01 00 00 add $0x1e4,%esp
- 102987: 5b pop %ebx
- 102988: 5e pop %esi
- 102989: 5f pop %edi
- 10298a: 5d pop %ebp
- 10298b: c3 ret
- 0010298c <sprintf>:
- int sprintf(char *ret,char *string,...){
- 10298c: 55 push %ebp
- 10298d: 89 e5 mov %esp,%ebp
- 10298f: 83 ec 18 sub $0x18,%esp
- long *args = ((long*)&string) + 1;
- 102992: 8d 45 0c lea 0xc(%ebp),%eax
- 102995: 83 c0 04 add $0x4,%eax
- 102998: 89 45 fc mov %eax,-0x4(%ebp)
- *ret = sprintfr(string,args);
- 10299b: 8b 45 0c mov 0xc(%ebp),%eax
- 10299e: 8b 55 fc mov -0x4(%ebp),%edx
- 1029a1: 89 54 24 04 mov %edx,0x4(%esp)
- 1029a5: 89 04 24 mov %eax,(%esp)
- 1029a8: e8 2b ed ff ff call 1016d8 <sprintfr>
- 1029ad: 89 c2 mov %eax,%edx
- 1029af: 8b 45 08 mov 0x8(%ebp),%eax
- 1029b2: 88 10 mov %dl,(%eax)
- return 0;
- 1029b4: b8 00 00 00 00 mov $0x0,%eax
- }
- 1029b9: c9 leave
- 1029ba: c3 ret
- 1029bb: 90 nop
- 001029bc <strlen>:
- *
- * (C) Copyright 2011-2012 Michael Sippel
- */
- /* ---------- Stringlänge ermitteln ------------------- */
- int strlen(char *s){
- 1029bc: 55 push %ebp
- 1029bd: 89 e5 mov %esp,%ebp
- 1029bf: 83 ec 10 sub $0x10,%esp
- int i;
- for(i=0;s!='\0';s++,i++);
- 1029c2: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
- 1029c9: eb 08 jmp 1029d3 <strlen+0x17>
- 1029cb: 83 45 08 01 addl $0x1,0x8(%ebp)
- 1029cf: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 1029d3: 83 7d 08 00 cmpl $0x0,0x8(%ebp)
- 1029d7: 75 f2 jne 1029cb <strlen+0xf>
- return(i);
- 1029d9: 8b 45 fc mov -0x4(%ebp),%eax
- }
- 1029dc: c9 leave
- 1029dd: c3 ret
- 001029de <cut>:
- /* ---------- String in `os1' und `os2' zerschneiden -- */
- void cut(char *s,int stelle,char *os1,char *os2){
- 1029de: 55 push %ebp
- 1029df: 89 e5 mov %esp,%ebp
- 1029e1: 83 ec 10 sub $0x10,%esp
- int i = 0;
- 1029e4: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
- while(i<stelle) {*os1++ = *s++;i++;}
- 1029eb: eb 17 jmp 102a04 <cut+0x26>
- 1029ed: 8b 45 08 mov 0x8(%ebp),%eax
- 1029f0: 0f b6 10 movzbl (%eax),%edx
- 1029f3: 8b 45 10 mov 0x10(%ebp),%eax
- 1029f6: 88 10 mov %dl,(%eax)
- 1029f8: 83 45 10 01 addl $0x1,0x10(%ebp)
- 1029fc: 83 45 08 01 addl $0x1,0x8(%ebp)
- 102a00: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102a04: 8b 45 fc mov -0x4(%ebp),%eax
- 102a07: 3b 45 0c cmp 0xc(%ebp),%eax
- 102a0a: 7c e1 jl 1029ed <cut+0xf>
- os1[i] = '\0';
- 102a0c: 8b 45 fc mov -0x4(%ebp),%eax
- 102a0f: 03 45 10 add 0x10(%ebp),%eax
- 102a12: c6 00 00 movb $0x0,(%eax)
- while(*s !='\0') {*os2++ = *s++;}
- 102a15: eb 13 jmp 102a2a <cut+0x4c>
- 102a17: 8b 45 08 mov 0x8(%ebp),%eax
- 102a1a: 0f b6 10 movzbl (%eax),%edx
- 102a1d: 8b 45 14 mov 0x14(%ebp),%eax
- 102a20: 88 10 mov %dl,(%eax)
- 102a22: 83 45 14 01 addl $0x1,0x14(%ebp)
- 102a26: 83 45 08 01 addl $0x1,0x8(%ebp)
- 102a2a: 8b 45 08 mov 0x8(%ebp),%eax
- 102a2d: 0f b6 00 movzbl (%eax),%eax
- 102a30: 84 c0 test %al,%al
- 102a32: 75 e3 jne 102a17 <cut+0x39>
- os2[i] = '\0';
- 102a34: 8b 45 fc mov -0x4(%ebp),%eax
- 102a37: 03 45 14 add 0x14(%ebp),%eax
- 102a3a: c6 00 00 movb $0x0,(%eax)
- }
- 102a3d: c9 leave
- 102a3e: c3 ret
- 00102a3f <insert>:
- /* ---------- `is' an `stelle' in String einfügen ----- */
- void insert(char *s,int stelle,char *is){
- 102a3f: 55 push %ebp
- 102a40: 89 e5 mov %esp,%ebp
- 102a42: 83 ec 20 sub $0x20,%esp
- int i,j;
- char *bufferU = 0,*buffer = 0;
- 102a45: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
- 102a4c: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp)
- cut(s,stelle,bufferU,buffer);
- 102a53: 8b 45 f0 mov -0x10(%ebp),%eax
- 102a56: 89 44 24 0c mov %eax,0xc(%esp)
- 102a5a: 8b 45 f4 mov -0xc(%ebp),%eax
- 102a5d: 89 44 24 08 mov %eax,0x8(%esp)
- 102a61: 8b 45 0c mov 0xc(%ebp),%eax
- 102a64: 89 44 24 04 mov %eax,0x4(%esp)
- 102a68: 8b 45 08 mov 0x8(%ebp),%eax
- 102a6b: 89 04 24 mov %eax,(%esp)
- 102a6e: e8 6b ff ff ff call 1029de <cut>
- for(i=0,j=stelle;i<strlen(is);i++,j++)s[j] = is[i];
- 102a73: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
- 102a7a: 8b 45 0c mov 0xc(%ebp),%eax
- 102a7d: 89 45 f8 mov %eax,-0x8(%ebp)
- 102a80: eb 19 jmp 102a9b <insert+0x5c>
- 102a82: 8b 45 f8 mov -0x8(%ebp),%eax
- 102a85: 03 45 08 add 0x8(%ebp),%eax
- 102a88: 8b 55 fc mov -0x4(%ebp),%edx
- 102a8b: 03 55 10 add 0x10(%ebp),%edx
- 102a8e: 0f b6 12 movzbl (%edx),%edx
- 102a91: 88 10 mov %dl,(%eax)
- 102a93: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102a97: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- 102a9b: 8b 45 10 mov 0x10(%ebp),%eax
- 102a9e: 89 04 24 mov %eax,(%esp)
- 102aa1: e8 16 ff ff ff call 1029bc <strlen>
- 102aa6: 3b 45 fc cmp -0x4(%ebp),%eax
- 102aa9: 7f d7 jg 102a82 <insert+0x43>
- for(i=0;buffer[i]!='\0';i++,j++)s[j] = buffer[i];
- 102aab: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
- 102ab2: eb 19 jmp 102acd <insert+0x8e>
- 102ab4: 8b 45 f8 mov -0x8(%ebp),%eax
- 102ab7: 03 45 08 add 0x8(%ebp),%eax
- 102aba: 8b 55 fc mov -0x4(%ebp),%edx
- 102abd: 03 55 f0 add -0x10(%ebp),%edx
- 102ac0: 0f b6 12 movzbl (%edx),%edx
- 102ac3: 88 10 mov %dl,(%eax)
- 102ac5: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102ac9: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- 102acd: 8b 45 fc mov -0x4(%ebp),%eax
- 102ad0: 03 45 f0 add -0x10(%ebp),%eax
- 102ad3: 0f b6 00 movzbl (%eax),%eax
- 102ad6: 84 c0 test %al,%al
- 102ad8: 75 da jne 102ab4 <insert+0x75>
- }
- 102ada: c9 leave
- 102adb: c3 ret
- 00102adc <replace>:
- /* ---------- `rs' an `stelle' im String ersetzen ----- */
- void replace(char *s,int stelle, char *rs){
- 102adc: 55 push %ebp
- 102add: 89 e5 mov %esp,%ebp
- 102adf: 83 ec 10 sub $0x10,%esp
- int i,j;
- for(i=stelle,j=0;rs[j]!='\0';i++,j++)s[i]=rs[j];
- 102ae2: 8b 45 0c mov 0xc(%ebp),%eax
- 102ae5: 89 45 fc mov %eax,-0x4(%ebp)
- 102ae8: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp)
- 102aef: eb 19 jmp 102b0a <replace+0x2e>
- 102af1: 8b 45 fc mov -0x4(%ebp),%eax
- 102af4: 03 45 08 add 0x8(%ebp),%eax
- 102af7: 8b 55 f8 mov -0x8(%ebp),%edx
- 102afa: 03 55 10 add 0x10(%ebp),%edx
- 102afd: 0f b6 12 movzbl (%edx),%edx
- 102b00: 88 10 mov %dl,(%eax)
- 102b02: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102b06: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- 102b0a: 8b 45 f8 mov -0x8(%ebp),%eax
- 102b0d: 03 45 10 add 0x10(%ebp),%eax
- 102b10: 0f b6 00 movzbl (%eax),%eax
- 102b13: 84 c0 test %al,%al
- 102b15: 75 da jne 102af1 <replace+0x15>
- s[i] = '\0';
- 102b17: 8b 45 fc mov -0x4(%ebp),%eax
- 102b1a: 03 45 08 add 0x8(%ebp),%eax
- 102b1d: c6 00 00 movb $0x0,(%eax)
- }
- 102b20: c9 leave
- 102b21: c3 ret
- 00102b22 <strcpy>:
- /* ---------- String kopiern -------------------------- */
- void strcpy(char *ziel,char *quelle){
- 102b22: 55 push %ebp
- 102b23: 89 e5 mov %esp,%ebp
- while(*ziel++ = *quelle++);
- 102b25: 90 nop
- 102b26: 8b 45 0c mov 0xc(%ebp),%eax
- 102b29: 0f b6 10 movzbl (%eax),%edx
- 102b2c: 8b 45 08 mov 0x8(%ebp),%eax
- 102b2f: 88 10 mov %dl,(%eax)
- 102b31: 8b 45 08 mov 0x8(%ebp),%eax
- 102b34: 0f b6 00 movzbl (%eax),%eax
- 102b37: 84 c0 test %al,%al
- 102b39: 0f 95 c0 setne %al
- 102b3c: 83 45 08 01 addl $0x1,0x8(%ebp)
- 102b40: 83 45 0c 01 addl $0x1,0xc(%ebp)
- 102b44: 84 c0 test %al,%al
- 102b46: 75 de jne 102b26 <strcpy+0x4>
- }
- 102b48: 5d pop %ebp
- 102b49: c3 ret
- 00102b4a <concat>:
- /* ---------- Strings zusammenfügen ------------------- */
- char* concat(char *s1,...){
- 102b4a: 55 push %ebp
- 102b4b: 89 e5 mov %esp,%ebp
- 102b4d: 83 ec 14 sub $0x14,%esp
- char *ret;
- char *str = (char*)&s1;
- 102b50: 8d 45 08 lea 0x8(%ebp),%eax
- 102b53: 89 45 f8 mov %eax,-0x8(%ebp)
- int i;
- for(i=0;i<strlen(str);i++){
- 102b56: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
- 102b5d: eb 17 jmp 102b76 <concat+0x2c>
- *ret++ = *str++;
- 102b5f: 8b 45 f8 mov -0x8(%ebp),%eax
- 102b62: 0f b6 10 movzbl (%eax),%edx
- 102b65: 8b 45 fc mov -0x4(%ebp),%eax
- 102b68: 88 10 mov %dl,(%eax)
- 102b6a: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102b6e: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- /* ---------- Strings zusammenfügen ------------------- */
- char* concat(char *s1,...){
- char *ret;
- char *str = (char*)&s1;
- int i;
- for(i=0;i<strlen(str);i++){
- 102b72: 83 45 f4 01 addl $0x1,-0xc(%ebp)
- 102b76: 8b 45 f8 mov -0x8(%ebp),%eax
- 102b79: 89 04 24 mov %eax,(%esp)
- 102b7c: e8 3b fe ff ff call 1029bc <strlen>
- 102b81: 3b 45 f4 cmp -0xc(%ebp),%eax
- 102b84: 7f d9 jg 102b5f <concat+0x15>
- *ret++ = *str++;
- }
- return *ret;
- 102b86: 8b 45 fc mov -0x4(%ebp),%eax
- 102b89: 0f b6 00 movzbl (%eax),%eax
- 102b8c: 0f be c0 movsbl %al,%eax
- }
- 102b8f: c9 leave
- 102b90: c3 ret
- 102b91: 90 nop
- 102b92: 90 nop
- 102b93: 90 nop
- 00102b94 <scroll>:
- #include <console/param.h>
- #include "variables.h"
- /* ----------- Bildschirm scrollen -------------------- */
- void scroll(int rows){
- 102b94: 55 push %ebp
- 102b95: 89 e5 mov %esp,%ebp
- 102b97: 53 push %ebx
- 102b98: 83 ec 20 sub $0x20,%esp
- int i,
- scrollsamples = VIDEOTEXT_WIDTH * rows, // Anzahl der Zeichen die nach oben gescrollt werden
- 102b9b: 8b 55 08 mov 0x8(%ebp),%edx
- 102b9e: 89 d0 mov %edx,%eax
- 102ba0: c1 e0 02 shl $0x2,%eax
- 102ba3: 01 d0 add %edx,%eax
- 102ba5: c1 e0 04 shl $0x4,%eax
- 102ba8: 89 45 f4 mov %eax,-0xc(%ebp)
- movesamples = VIDEOTEXT_SAMPLES - scrollsamples,// Anzahl der Zeichen die nach oben bewegt werden müssen
- 102bab: b8 d0 07 00 00 mov $0x7d0,%eax
- 102bb0: 2b 45 f4 sub -0xc(%ebp),%eax
- 102bb3: 89 45 f0 mov %eax,-0x10(%ebp)
- scrollsamplesColor= scrollsamples * 2, // Anzahl der Zeichen + Farbe die gescrollt werden
- 102bb6: 8b 45 f4 mov -0xc(%ebp),%eax
- 102bb9: 01 c0 add %eax,%eax
- 102bbb: 89 45 ec mov %eax,-0x14(%ebp)
- movesamplesColor= movesamples * 2; // Anzahl der Zeichen + Farbe die bewegt werden müssen
- 102bbe: 8b 45 f0 mov -0x10(%ebp),%eax
- 102bc1: 01 c0 add %eax,%eax
- 102bc3: 89 45 e8 mov %eax,-0x18(%ebp)
- textpos -= scrollsamples; // Textposition zurückschieben
- 102bc6: a1 18 6f 10 00 mov 0x106f18,%eax
- 102bcb: 2b 45 f4 sub -0xc(%ebp),%eax
- 102bce: a3 18 6f 10 00 mov %eax,0x106f18
- for(i = 0; i < movesamplesColor; i++)
- 102bd3: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp)
- 102bda: eb 26 jmp 102c02 <scroll+0x6e>
- video[i] = video[i + scrollsamplesColor];
- 102bdc: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102be2: 8b 45 f8 mov -0x8(%ebp),%eax
- 102be5: 01 c2 add %eax,%edx
- 102be7: 8b 0d e8 46 10 00 mov 0x1046e8,%ecx
- 102bed: 8b 45 ec mov -0x14(%ebp),%eax
- 102bf0: 8b 5d f8 mov -0x8(%ebp),%ebx
- 102bf3: 8d 04 03 lea (%ebx,%eax,1),%eax
- 102bf6: 8d 04 01 lea (%ecx,%eax,1),%eax
- 102bf9: 0f b6 00 movzbl (%eax),%eax
- 102bfc: 88 02 mov %al,(%edx)
- scrollsamples = VIDEOTEXT_WIDTH * rows, // Anzahl der Zeichen die nach oben gescrollt werden
- movesamples = VIDEOTEXT_SAMPLES - scrollsamples,// Anzahl der Zeichen die nach oben bewegt werden müssen
- scrollsamplesColor= scrollsamples * 2, // Anzahl der Zeichen + Farbe die gescrollt werden
- movesamplesColor= movesamples * 2; // Anzahl der Zeichen + Farbe die bewegt werden müssen
- textpos -= scrollsamples; // Textposition zurückschieben
- for(i = 0; i < movesamplesColor; i++)
- 102bfe: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- 102c02: 8b 45 f8 mov -0x8(%ebp),%eax
- 102c05: 3b 45 e8 cmp -0x18(%ebp),%eax
- 102c08: 7c d2 jl 102bdc <scroll+0x48>
- video[i] = video[i + scrollsamplesColor];
- for (; i < VIDEO_SAMPLES_WITH_COLOR; i++)
- 102c0a: eb 13 jmp 102c1f <scroll+0x8b>
- video[i] = 0;
- 102c0c: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102c12: 8b 45 f8 mov -0x8(%ebp),%eax
- 102c15: 8d 04 02 lea (%edx,%eax,1),%eax
- 102c18: c6 00 00 movb $0x0,(%eax)
- movesamplesColor= movesamples * 2; // Anzahl der Zeichen + Farbe die bewegt werden müssen
- textpos -= scrollsamples; // Textposition zurückschieben
- for(i = 0; i < movesamplesColor; i++)
- video[i] = video[i + scrollsamplesColor];
- for (; i < VIDEO_SAMPLES_WITH_COLOR; i++)
- 102c1b: 83 45 f8 01 addl $0x1,-0x8(%ebp)
- 102c1f: 81 7d f8 9f 0f 00 00 cmpl $0xf9f,-0x8(%ebp)
- 102c26: 7e e4 jle 102c0c <scroll+0x78>
- video[i] = 0;
- }
- 102c28: 83 c4 20 add $0x20,%esp
- 102c2b: 5b pop %ebx
- 102c2c: 5d pop %ebp
- 102c2d: c3 ret
- 00102c2e <clearScreen>:
- /* ---------- Bilschim löschen ------------------------ */
- void clearScreen(void){
- 102c2e: 55 push %ebp
- 102c2f: 89 e5 mov %esp,%ebp
- 102c31: 83 ec 10 sub $0x10,%esp
- textpos = 0;
- 102c34: c7 05 18 6f 10 00 00 movl $0x0,0x106f18
- 102c3b: 00 00 00
- color = 0x07;
- 102c3e: c7 05 e4 46 10 00 07 movl $0x7,0x1046e4
- 102c45: 00 00 00
- int i;
- for (i = 0; i < 4000; i++){
- 102c48: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
- 102c4f: eb 13 jmp 102c64 <clearScreen+0x36>
- video[i] = 0;
- 102c51: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102c57: 8b 45 fc mov -0x4(%ebp),%eax
- 102c5a: 8d 04 02 lea (%edx,%eax,1),%eax
- 102c5d: c6 00 00 movb $0x0,(%eax)
- /* ---------- Bilschim löschen ------------------------ */
- void clearScreen(void){
- textpos = 0;
- color = 0x07;
- int i;
- for (i = 0; i < 4000; i++){
- 102c60: 83 45 fc 01 addl $0x1,-0x4(%ebp)
- 102c64: 81 7d fc 9f 0f 00 00 cmpl $0xf9f,-0x4(%ebp)
- 102c6b: 7e e4 jle 102c51 <clearScreen+0x23>
- video[i] = 0;
- }
- }
- 102c6d: c9 leave
- 102c6e: c3 ret
- 102c6f: 90 nop
- 00102c70 <outb>:
- #define _PORTIO_H
- #include <stdint.h>
- /* ---------- 8-Bit daten an 16-Bit port -------------- */
- static inline void outb(uint16_t port, uint8_t data){
- 102c70: 55 push %ebp
- 102c71: 89 e5 mov %esp,%ebp
- 102c73: 83 ec 08 sub $0x8,%esp
- 102c76: 8b 55 08 mov 0x8(%ebp),%edx
- 102c79: 8b 45 0c mov 0xc(%ebp),%eax
- 102c7c: 66 89 55 fc mov %dx,-0x4(%ebp)
- 102c80: 88 45 f8 mov %al,-0x8(%ebp)
- asm("outb %0, %1" : : "a" (data), "Nd" (port));
- 102c83: 0f b6 45 f8 movzbl -0x8(%ebp),%eax
- 102c87: 0f b7 55 fc movzwl -0x4(%ebp),%edx
- 102c8b: ee out %al,(%dx)
- }
- 102c8c: c9 leave
- 102c8d: c3 ret
- 00102c8e <displaycursor>:
- #include <portio.h>
- #include <stdint.h>
- #include <console/param.h>
- /* ---------- Cursor nach X,Y bewegen ----------------- */
- void displaycursor(uint8_t col, uint8_t row){
- 102c8e: 55 push %ebp
- 102c8f: 89 e5 mov %esp,%ebp
- 102c91: 83 ec 20 sub $0x20,%esp
- 102c94: 8b 55 08 mov 0x8(%ebp),%edx
- 102c97: 8b 45 0c mov 0xc(%ebp),%eax
- 102c9a: 88 55 ec mov %dl,-0x14(%ebp)
- 102c9d: 88 45 e8 mov %al,-0x18(%ebp)
- uint16_t tmp;
- tmp = row * VIDEOTEXT_WIDTH + col;
- 102ca0: 0f b6 55 e8 movzbl -0x18(%ebp),%edx
- 102ca4: 89 d0 mov %edx,%eax
- 102ca6: c1 e0 02 shl $0x2,%eax
- 102ca9: 01 d0 add %edx,%eax
- 102cab: c1 e0 04 shl $0x4,%eax
- 102cae: 89 c2 mov %eax,%edx
- 102cb0: 0f b6 45 ec movzbl -0x14(%ebp),%eax
- 102cb4: 8d 04 02 lea (%edx,%eax,1),%eax
- 102cb7: 66 89 45 fe mov %ax,-0x2(%ebp)
- outb(0x3D4,14);
- 102cbb: c7 44 24 04 0e 00 00 movl $0xe,0x4(%esp)
- 102cc2: 00
- 102cc3: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102cca: e8 a1 ff ff ff call 102c70 <outb>
- outb(0x3D5,tmp >> 8);
- 102ccf: 0f b7 45 fe movzwl -0x2(%ebp),%eax
- 102cd3: 66 c1 e8 08 shr $0x8,%ax
- 102cd7: 0f b6 c0 movzbl %al,%eax
- 102cda: 89 44 24 04 mov %eax,0x4(%esp)
- 102cde: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102ce5: e8 86 ff ff ff call 102c70 <outb>
- outb(0x3D4,15);
- 102cea: c7 44 24 04 0f 00 00 movl $0xf,0x4(%esp)
- 102cf1: 00
- 102cf2: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102cf9: e8 72 ff ff ff call 102c70 <outb>
- outb(0x3D5,tmp);
- 102cfe: 0f b7 45 fe movzwl -0x2(%ebp),%eax
- 102d02: 0f b6 c0 movzbl %al,%eax
- 102d05: 89 44 24 04 mov %eax,0x4(%esp)
- 102d09: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102d10: e8 5b ff ff ff call 102c70 <outb>
- }
- 102d15: c9 leave
- 102d16: c3 ret
- 00102d17 <movecursorto>:
- /* ----------- Cursor bewegen ------------------------- */
- void movecursorto(uint16_t pos){
- 102d17: 55 push %ebp
- 102d18: 89 e5 mov %esp,%ebp
- 102d1a: 83 ec 0c sub $0xc,%esp
- 102d1d: 8b 45 08 mov 0x8(%ebp),%eax
- 102d20: 66 89 45 fc mov %ax,-0x4(%ebp)
- outb(0x3D4,14);
- 102d24: c7 44 24 04 0e 00 00 movl $0xe,0x4(%esp)
- 102d2b: 00
- 102d2c: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102d33: e8 38 ff ff ff call 102c70 <outb>
- outb(0x3D5,pos >> 8);
- 102d38: 0f b7 45 fc movzwl -0x4(%ebp),%eax
- 102d3c: 66 c1 e8 08 shr $0x8,%ax
- 102d40: 0f b6 c0 movzbl %al,%eax
- 102d43: 89 44 24 04 mov %eax,0x4(%esp)
- 102d47: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102d4e: e8 1d ff ff ff call 102c70 <outb>
- outb(0x3D4,15);
- 102d53: c7 44 24 04 0f 00 00 movl $0xf,0x4(%esp)
- 102d5a: 00
- 102d5b: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102d62: e8 09 ff ff ff call 102c70 <outb>
- outb(0x3D5,pos);
- 102d67: 0f b7 45 fc movzwl -0x4(%ebp),%eax
- 102d6b: 0f b6 c0 movzbl %al,%eax
- 102d6e: 89 44 24 04 mov %eax,0x4(%esp)
- 102d72: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102d79: e8 f2 fe ff ff call 102c70 <outb>
- }
- 102d7e: c9 leave
- 102d7f: c3 ret
- 00102d80 <removecursor>:
- /* ----------- Cursor löschen ------------------------- */
- void removecursor(void){
- 102d80: 55 push %ebp
- 102d81: 89 e5 mov %esp,%ebp
- 102d83: 83 ec 08 sub $0x8,%esp
- outb(0x3D4,14);
- 102d86: c7 44 24 04 0e 00 00 movl $0xe,0x4(%esp)
- 102d8d: 00
- 102d8e: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102d95: e8 d6 fe ff ff call 102c70 <outb>
- outb(0x3D5,0x07);
- 102d9a: c7 44 24 04 07 00 00 movl $0x7,0x4(%esp)
- 102da1: 00
- 102da2: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102da9: e8 c2 fe ff ff call 102c70 <outb>
- outb(0x3D4,15);
- 102dae: c7 44 24 04 0f 00 00 movl $0xf,0x4(%esp)
- 102db5: 00
- 102db6: c7 04 24 d4 03 00 00 movl $0x3d4,(%esp)
- 102dbd: e8 ae fe ff ff call 102c70 <outb>
- outb(0x3D5,0xD0);
- 102dc2: c7 44 24 04 d0 00 00 movl $0xd0,0x4(%esp)
- 102dc9: 00
- 102dca: c7 04 24 d5 03 00 00 movl $0x3d5,(%esp)
- 102dd1: e8 9a fe ff ff call 102c70 <outb>
- 102dd6: c9 leave
- 102dd7: c3 ret
- 00102dd8 <print>:
- #include <console/param.h>
- #include "variables.h"
- /* ---------- Einfache Ausgabefunktion `print' -------- */
- void print(char* string){
- 102dd8: 55 push %ebp
- 102dd9: 89 e5 mov %esp,%ebp
- 102ddb: 83 ec 28 sub $0x28,%esp
- int i;
- for (i = 0; string[i] != '\0'; i++,textpos++) {
- 102dde: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
- 102de5: eb 5d jmp 102e44 <print+0x6c>
- if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
- 102de7: a1 18 6f 10 00 mov 0x106f18,%eax
- 102dec: 3d cf 07 00 00 cmp $0x7cf,%eax
- 102df1: 7e 0c jle 102dff <print+0x27>
- 102df3: c7 04 24 01 00 00 00 movl $0x1,(%esp)
- 102dfa: e8 95 fd ff ff call 102b94 <scroll>
- video[textpos * 2] = string[i];
- 102dff: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102e05: a1 18 6f 10 00 mov 0x106f18,%eax
- 102e0a: 01 c0 add %eax,%eax
- 102e0c: 01 c2 add %eax,%edx
- 102e0e: 8b 45 f4 mov -0xc(%ebp),%eax
- 102e11: 03 45 08 add 0x8(%ebp),%eax
- 102e14: 0f b6 00 movzbl (%eax),%eax
- 102e17: 88 02 mov %al,(%edx)
- video[textpos * 2 + 1] = color;
- 102e19: a1 e8 46 10 00 mov 0x1046e8,%eax
- 102e1e: 8b 15 18 6f 10 00 mov 0x106f18,%edx
- 102e24: 01 d2 add %edx,%edx
- 102e26: 83 c2 01 add $0x1,%edx
- 102e29: 8d 14 10 lea (%eax,%edx,1),%edx
- 102e2c: a1 e4 46 10 00 mov 0x1046e4,%eax
- 102e31: 88 02 mov %al,(%edx)
- #include "variables.h"
- /* ---------- Einfache Ausgabefunktion `print' -------- */
- void print(char* string){
- int i;
- for (i = 0; string[i] != '\0'; i++,textpos++) {
- 102e33: 83 45 f4 01 addl $0x1,-0xc(%ebp)
- 102e37: a1 18 6f 10 00 mov 0x106f18,%eax
- 102e3c: 83 c0 01 add $0x1,%eax
- 102e3f: a3 18 6f 10 00 mov %eax,0x106f18
- 102e44: 8b 45 f4 mov -0xc(%ebp),%eax
- 102e47: 03 45 08 add 0x8(%ebp),%eax
- 102e4a: 0f b6 00 movzbl (%eax),%eax
- 102e4d: 84 c0 test %al,%al
- 102e4f: 75 96 jne 102de7 <print+0xf>
- if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
- video[textpos * 2] = string[i];
- video[textpos * 2 + 1] = color;
- }
- }
- 102e51: c9 leave
- 102e52: c3 ret
- 00102e53 <printchar>:
- /* ---------- Einzelne Buchstaben an X,Y ausgeben ----- */
- void printchar(char *chr, int chrcolor, int x, int y){
- 102e53: 55 push %ebp
- 102e54: 89 e5 mov %esp,%ebp
- 102e56: 83 ec 10 sub $0x10,%esp
- int off = 2 * (y * VIDEOTEXT_WIDTH + x); // berechnen der Adresse
- 102e59: 8b 55 14 mov 0x14(%ebp),%edx
- 102e5c: 89 d0 mov %edx,%eax
- 102e5e: c1 e0 02 shl $0x2,%eax
- 102e61: 01 d0 add %edx,%eax
- 102e63: c1 e0 04 shl $0x4,%eax
- 102e66: 03 45 10 add 0x10(%ebp),%eax
- 102e69: 01 c0 add %eax,%eax
- 102e6b: 89 45 fc mov %eax,-0x4(%ebp)
- video[off] = chr; // setzen des zeichens
- 102e6e: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102e74: 8b 45 fc mov -0x4(%ebp),%eax
- 102e77: 01 c2 add %eax,%edx
- 102e79: 8b 45 08 mov 0x8(%ebp),%eax
- 102e7c: 88 02 mov %al,(%edx)
- video[off+1] = chrcolor; // setzen des attributebyte
- 102e7e: a1 e8 46 10 00 mov 0x1046e8,%eax
- 102e83: 8b 55 fc mov -0x4(%ebp),%edx
- 102e86: 83 c2 01 add $0x1,%edx
- 102e89: 8d 14 10 lea (%eax,%edx,1),%edx
- 102e8c: 8b 45 0c mov 0xc(%ebp),%eax
- 102e8f: 88 02 mov %al,(%edx)
- }
- 102e91: c9 leave
- 102e92: c3 ret
- 00102e93 <putchar>:
- /* ------------ ein Buchstabe ------------------------- */
- int putchar(char c){
- 102e93: 55 push %ebp
- 102e94: 89 e5 mov %esp,%ebp
- 102e96: 83 ec 04 sub $0x4,%esp
- 102e99: 8b 45 08 mov 0x8(%ebp),%eax
- 102e9c: 88 45 fc mov %al,-0x4(%ebp)
- video[textpos * 2] = c;
- 102e9f: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102ea5: a1 18 6f 10 00 mov 0x106f18,%eax
- 102eaa: 01 c0 add %eax,%eax
- 102eac: 01 c2 add %eax,%edx
- 102eae: 0f b6 45 fc movzbl -0x4(%ebp),%eax
- 102eb2: 88 02 mov %al,(%edx)
- video[textpos * 2 + 1] = color;
- 102eb4: a1 e8 46 10 00 mov 0x1046e8,%eax
- 102eb9: 8b 15 18 6f 10 00 mov 0x106f18,%edx
- 102ebf: 01 d2 add %edx,%edx
- 102ec1: 83 c2 01 add $0x1,%edx
- 102ec4: 8d 14 10 lea (%eax,%edx,1),%edx
- 102ec7: a1 e4 46 10 00 mov 0x1046e4,%eax
- 102ecc: 88 02 mov %al,(%edx)
- ++textpos;
- 102ece: a1 18 6f 10 00 mov 0x106f18,%eax
- 102ed3: 83 c0 01 add $0x1,%eax
- 102ed6: a3 18 6f 10 00 mov %eax,0x106f18
- return 0;
- 102edb: b8 00 00 00 00 mov $0x0,%eax
- }
- 102ee0: c9 leave
- 102ee1: c3 ret
- 00102ee2 <puts>:
- /* ---------- Ausgabefunktion mit Zeilenumbruch uvm. -- */
- int puts(char *string){
- 102ee2: 55 push %ebp
- 102ee3: 89 e5 mov %esp,%ebp
- 102ee5: 83 ec 28 sub $0x28,%esp
- int i;
- for (i = 0; string[i] != '\0'; i++){
- 102ee8: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
- 102eef: e9 ce 00 00 00 jmp 102fc2 <puts+0xe0>
- if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
- 102ef4: a1 18 6f 10 00 mov 0x106f18,%eax
- 102ef9: 3d cf 07 00 00 cmp $0x7cf,%eax
- 102efe: 7e 0c jle 102f0c <puts+0x2a>
- 102f00: c7 04 24 01 00 00 00 movl $0x1,(%esp)
- 102f07: e8 88 fc ff ff call 102b94 <scroll>
- if(string[i] == '\n'){
- 102f0c: 8b 45 f4 mov -0xc(%ebp),%eax
- 102f0f: 03 45 08 add 0x8(%ebp),%eax
- 102f12: 0f b6 00 movzbl (%eax),%eax
- 102f15: 3c 0a cmp $0xa,%al
- 102f17: 75 3b jne 102f54 <puts+0x72>
- while(++textpos % VIDEOTEXT_WIDTH != 0);
- 102f19: 90 nop
- 102f1a: a1 18 6f 10 00 mov 0x106f18,%eax
- 102f1f: 83 c0 01 add $0x1,%eax
- 102f22: a3 18 6f 10 00 mov %eax,0x106f18
- 102f27: 8b 0d 18 6f 10 00 mov 0x106f18,%ecx
- 102f2d: ba 67 66 66 66 mov $0x66666667,%edx
- 102f32: 89 c8 mov %ecx,%eax
- 102f34: f7 ea imul %edx
- 102f36: c1 fa 05 sar $0x5,%edx
- 102f39: 89 c8 mov %ecx,%eax
- 102f3b: c1 f8 1f sar $0x1f,%eax
- 102f3e: 29 c2 sub %eax,%edx
- 102f40: 89 d0 mov %edx,%eax
- 102f42: c1 e0 02 shl $0x2,%eax
- 102f45: 01 d0 add %edx,%eax
- 102f47: c1 e0 04 shl $0x4,%eax
- 102f4a: 89 ca mov %ecx,%edx
- 102f4c: 29 c2 sub %eax,%edx
- 102f4e: 85 d2 test %edx,%edx
- 102f50: 75 c8 jne 102f1a <puts+0x38>
- 102f52: eb 6a jmp 102fbe <puts+0xdc>
- }else if(string[i] == '\t'){
- 102f54: 8b 45 f4 mov -0xc(%ebp),%eax
- 102f57: 03 45 08 add 0x8(%ebp),%eax
- 102f5a: 0f b6 00 movzbl (%eax),%eax
- 102f5d: 3c 09 cmp $0x9,%al
- 102f5f: 75 1c jne 102f7d <puts+0x9b>
- while(++textpos % TABULATOR_WIDTH != 0);
- 102f61: 90 nop
- 102f62: a1 18 6f 10 00 mov 0x106f18,%eax
- 102f67: 83 c0 01 add $0x1,%eax
- 102f6a: a3 18 6f 10 00 mov %eax,0x106f18
- 102f6f: a1 18 6f 10 00 mov 0x106f18,%eax
- 102f74: 83 e0 07 and $0x7,%eax
- 102f77: 85 c0 test %eax,%eax
- 102f79: 75 e7 jne 102f62 <puts+0x80>
- 102f7b: eb 41 jmp 102fbe <puts+0xdc>
- }else{
- video[textpos * 2] = string[i];
- 102f7d: 8b 15 e8 46 10 00 mov 0x1046e8,%edx
- 102f83: a1 18 6f 10 00 mov 0x106f18,%eax
- 102f88: 01 c0 add %eax,%eax
- 102f8a: 01 c2 add %eax,%edx
- 102f8c: 8b 45 f4 mov -0xc(%ebp),%eax
- 102f8f: 03 45 08 add 0x8(%ebp),%eax
- 102f92: 0f b6 00 movzbl (%eax),%eax
- 102f95: 88 02 mov %al,(%edx)
- video[textpos * 2 + 1] = color;
- 102f97: a1 e8 46 10 00 mov 0x1046e8,%eax
- 102f9c: 8b 15 18 6f 10 00 mov 0x106f18,%edx
- 102fa2: 01 d2 add %edx,%edx
- 102fa4: 83 c2 01 add $0x1,%edx
- 102fa7: 8d 14 10 lea (%eax,%edx,1),%edx
- 102faa: a1 e4 46 10 00 mov 0x1046e4,%eax
- 102faf: 88 02 mov %al,(%edx)
- ++textpos;
- 102fb1: a1 18 6f 10 00 mov 0x106f18,%eax
- 102fb6: 83 c0 01 add $0x1,%eax
- 102fb9: a3 18 6f 10 00 mov %eax,0x106f18
- return 0;
- }
- /* ---------- Ausgabefunktion mit Zeilenumbruch uvm. -- */
- int puts(char *string){
- int i;
- for (i = 0; string[i] != '\0'; i++){
- 102fbe: 83 45 f4 01 addl $0x1,-0xc(%ebp)
- 102fc2: 8b 45 f4 mov -0xc(%ebp),%eax
- 102fc5: 03 45 08 add 0x8(%ebp),%eax
- 102fc8: 0f b6 00 movzbl (%eax),%eax
- 102fcb: 84 c0 test %al,%al
- 102fcd: 0f 85 21 ff ff ff jne 102ef4 <puts+0x12>
- video[textpos * 2] = string[i];
- video[textpos * 2 + 1] = color;
- ++textpos;
- }
- }
- return 0;
- 102fd3: b8 00 00 00 00 mov $0x0,%eax
- }
- 102fd8: c9 leave
- 102fd9: c3 ret
- 00102fda <printf>:
- /* ---------- Das formatierte `printf' ---------------- */
- int printf(char *string,...){
- 102fda: 55 push %ebp
- 102fdb: 89 e5 mov %esp,%ebp
- 102fdd: 83 ec 28 sub $0x28,%esp
- long *args = ((long*)&string) + 1;
- 102fe0: 8d 45 08 lea 0x8(%ebp),%eax
- 102fe3: 83 c0 04 add $0x4,%eax
- 102fe6: 89 45 f4 mov %eax,-0xc(%ebp)
- string = sprintfr(string,args);
- 102fe9: 8b 45 08 mov 0x8(%ebp),%eax
- 102fec: 8b 55 f4 mov -0xc(%ebp),%edx
- 102fef: 89 54 24 04 mov %edx,0x4(%esp)
- 102ff3: 89 04 24 mov %eax,(%esp)
- 102ff6: e8 dd e6 ff ff call 1016d8 <sprintfr>
- 102ffb: 89 45 08 mov %eax,0x8(%ebp)
- puts(string);
- 102ffe: 8b 45 08 mov 0x8(%ebp),%eax
- 103001: 89 04 24 mov %eax,(%esp)
- 103004: e8 d9 fe ff ff call 102ee2 <puts>
- return 0;
- 103009: b8 00 00 00 00 mov $0x0,%eax
- }
- 10300e: c9 leave
- 10300f: c3 ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement