diff --git a/TODO.txt b/TODO.txt index 1b12693..7e0f8c3 100644 --- a/TODO.txt +++ b/TODO.txt @@ -27,3 +27,58 @@ SYSCALL: for long mode interrupts. - ✅ MOVZX: Move with zero-extension (padding). https://docs.google.com/document/d/1bm9lxVyAk2qogOF9ujERyRcSwXkpKxLW8IWVU8FuMyE/edit?usp=sharing + +More instructions: +Data Movement Instructions +XCHG: Exchange data between registers or memory. +MOVSX/MOVZX: Move with sign/zero extension. +BSWAP: Byte swap (useful for endian conversion). +CMOVcc: Conditional move based on flags (e.g., CMOVZ, CMOVNZ). +Arithmetic and Logic Instructions +ADC, SBB: Add/subtract with carry/borrow. +IMUL, IDIV: Signed multiplication and division. +SHL, SHR, SAR, ROL, ROR: Shift and rotate operations. +NEG: Two’s complement negation. +TEST: Perform bitwise AND and set flags without storing the result. +Control Flow Instructions +LOOP, LOOPE, LOOPNE: Loop with optional condition checking. +JC, JNC: Jump on carry/no carry. +JA, JAE, JB, JBE: Unsigned comparisons for jumps. +JG, JGE, JL, JLE: Signed comparisons for jumps. +Stack Instructions +ENTER, LEAVE: Set up and tear down stack frames for procedures. +POPF, PUSHF: Push/pop flags register. +String Manipulation Instructions +REP, REPE, REPNE: Repeat prefix for string operations. +MOVS, MOVSB, MOVSW, MOVSD: Move strings (byte, word, doubleword). +LODS, LODSB, LODSW, LODSD: Load strings. +STOS, STOSB, STOSW, STOSD: Store strings. +SCAS, SCASB, SCASW, SCASD: Scan strings. +CMPS, CMPSB, CMPSW, CMPSD: Compare strings. +Bit Manipulation Instructions +BT, BTS, BTR, BTC: Bit test and set/reset/clear/flip. +BSF, BSR: Bit scan forward/reverse. +ROL, ROR, RCL, RCR: Rotate bits (logical or through carry). +Floating-Point Instructions +FLD, FST, FSTP: Load/store floating-point values. +FADD, FSUB, FMUL, FDIV: Basic floating-point arithmetic. +FCOM, FCOMP: Compare floating-point values. +FSIN, FCOS, FSQRT, FABS: Floating-point trigonometric and other math operations. +Input/Output Instructions +INS, OUTS: String input/output operations. +Flag Control Instructions +LAHF, SAHF: Load/store lower part of flags register. +SETcc: Set a register based on flags (e.g., SETZ, SETNZ). +Miscellaneous Instructions +CPUID: Query CPU information. +RDTSC: Read time-stamp counter. +HLT: Halt the processor (already done). +WAIT/FWAIT: Wait for floating-point operation to complete. +XLAT: Translate byte in AL using a table. +System-Level Instructions +LGDT, SGDT: Load/store global descriptor table. +LIDT, SIDT: Load/store interrupt descriptor table. +LTR, STR: Load/store task register. +INVLPG: Invalidate a page in the TLB. +RDMSR, WRMSR: Read/write model-specific registers. +CLFLUSH: Cache line flush. \ No newline at end of file