Skip to content

Commit

Permalink
Merge branch 'main' into implementation-of-opcode-function
Browse files Browse the repository at this point in the history
  • Loading branch information
cheng-alvin committed Dec 31, 2024
2 parents 7f1f751 + fbde84b commit 8095c68
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.

0 comments on commit 8095c68

Please sign in to comment.