Abhishek Singh
2018-11-01 16:51:38 UTC
Hello Everyone,
I wanted to introduce a new implementation for Mov Instruction using R11
register, my new opcodes are placed in two_byte.isa and I have duplicated
'mov' functionality present in files move.py and ldstop.isa.
My question is: I understand how to decode opcode for example if the new
opcode is '0x11'
take top 5 bits and then 3 bits to write a case function in two_byte.isa
I am not understanding, how should I make sure it uses REX format same as
MOV?
For example:
In the case of 8 bits:
*41* 8a 03 mov (%r11),%al
*41* 0f xx 03 new_mov (%r11),%al
In the case of 16*: *
*66 41* 8b 03 mov (%r11),%ax
*66 41* 0f xx 03 new_mov (%r11),%ax
In the case of 32*: *
*41* 8b 03 mov (%r11),%eax
*41* 0f xx 03 new_mov (%r11),%eax
In the case of 64*: *
*49* 8b 03 mov (%r11),%rax
*49* 0f xx 03 new_mov (%r11),%rax
***Numbers in bold are REX bits, xx are new opcodes.
Gabe or anyone who has any information on this?
Best regards,
Abhishek
I wanted to introduce a new implementation for Mov Instruction using R11
register, my new opcodes are placed in two_byte.isa and I have duplicated
'mov' functionality present in files move.py and ldstop.isa.
My question is: I understand how to decode opcode for example if the new
opcode is '0x11'
take top 5 bits and then 3 bits to write a case function in two_byte.isa
I am not understanding, how should I make sure it uses REX format same as
MOV?
For example:
In the case of 8 bits:
*41* 8a 03 mov (%r11),%al
*41* 0f xx 03 new_mov (%r11),%al
In the case of 16*: *
*66 41* 8b 03 mov (%r11),%ax
*66 41* 0f xx 03 new_mov (%r11),%ax
In the case of 32*: *
*41* 8b 03 mov (%r11),%eax
*41* 0f xx 03 new_mov (%r11),%eax
In the case of 64*: *
*49* 8b 03 mov (%r11),%rax
*49* 0f xx 03 new_mov (%r11),%rax
***Numbers in bold are REX bits, xx are new opcodes.
Gabe or anyone who has any information on this?
Best regards,
Abhishek