2022. 2. 21. 19:29

x86은 encoding 자체가 너무 복잡하네요.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요 x86 opcode관련되서 이것저것 작성중입니다.

몇일 정도 encoding, decoding을 하면서 느낀건데요.

Direction bit, Redirection bit 이런게 적용되는 opcode는 하나의 그룹이네요.

MODRM 역시 적용되는 opcode도 하나의 그룹이네요.

마치 encoding 하는 방식의 룰 1개가 전체 적용되는게 아닌데,

참고자료에서 공통적으로 언급되는 bit encoding은 별 쓸모가 없어 보이네요.

http://sparksandflames.com/files/x86InstructionChart.html

 

Intel x86 Assembler Instruction Set Opcode Table

M The ModR/M byte may refer only to memory (for example, BOUND, LES, LDS, LSS, LFS, LGS, CMPXCHG8B).

sparksandflames.com

여기서 보시게 되면, opcode의 reg, memory 같은걸 지시문으로 명시 해놨습니다.

아래와 같은 Eb Gb 같은 형태를 번역해서 disassembler를 만들때 사용하면 될꺼 같습니다.

가장 효율적인건, lookuptable을 작성해서 매 opcode마다 읽어 들이던지,

위의 지시문 형태를 코드로 만들면 될꺼 같습니다.

감사합니다.