# Multiply 2 numbers. # # To run: # $ bootstrap/bootstrap translate ex14.subx -o ex14 # $ bootstrap/bootstrap run ex14 # Expected result: # $ echo $? # 6 == code # instruction effective address register displacement immediate # . op subop mod rm32 base index scale r32 # . 1-3 bytes 3 bits 2 bits 3 bits 3 bits 3 bits 2 bits 2 bits 0/1/2/4 bytes 0/1/2/4 bytes Entry: b8/copy-to-eax 1/imm32 b9/copy-to-ecx 2/imm32 bb/copy-to-ebx 3/imm32 69/multiply 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx 3/imm32 # ebx = ecx * 3 $exit: # exit(ebx) e8/call syscall_exit/disp32 # . . vim:nowrap:textwidth=0