encode_basic/
encode_basic.rs

1extern crate x86asm;
2
3use std::io::Cursor;
4use x86asm::{InstructionWriter, Mnemonic, Mode, Operand, Reg};
5
6fn main() {
7    let buffer = Cursor::new(Vec::new());
8    let mut writer = InstructionWriter::new(buffer, Mode::Protected); 
9    
10    let bytes_written = 
11        writer.write2(Mnemonic::MOV, Operand::Direct(Reg::EAX), Operand::Literal32(10)).unwrap() + // mov eax, 10
12        writer.write2(Mnemonic::MOV, Operand::Direct(Reg::EBX), Operand::Literal32(20)).unwrap() + // mov ebx, 20
13        writer.write2(Mnemonic::ADD, Operand::Direct(Reg::EAX), Operand::Direct(Reg::EBX)).unwrap(); // add eax, ebx
14
15    print!("Output ({} bytes): ", bytes_written);
16    for byte in writer.get_inner_writer_ref().get_ref().iter() {
17        print!("{:02X} ", byte);
18    }
19    println!("");
20}