
    g%                         d dl Z d dlmZ d dlmZmZmZmZmZ d dl	m
Z
 d dlmZ defdZdefdZded	ed
edz  fdZdee
z  dz  dedz  d
edz  fdZdS )    N)Literal)ModRegRMAddressingModeScaleIndexByte	ThreeBitsget_register_code)Register)EffectiveAddresseffective_addressc                     t          t          j        | j                            }|dk    s|dk    s|dk    s|dk    r|S d S )Nr            )roundmathlog2scale)r   r   s     M/media/seanl/Data/Files/Programming/Python/URCL/urclelf/./x86/encoding/sib.pycalculate_sib_scaler      sJ    $)-34455EzzUaZZ5A::! 2<    c                     | j         t          j        k    r	| j        dS | j        d S t	          | j                  }|dk    rd S |S N   )baser	   ESPindexr   )r   r   s     r   calculate_sib_indexr      sR    --2C2I2Qq&t/566EzztLr   modreturnc                 <    | j         dS t          | j                   S )N   )r   r   )r   r   s     r   calculate_sib_baser"      s"    %q.3444r   
mod_reg_rmc                    |d S |j         t          j        k    r|j        dk    sd S t	          | t
                    sd S t          |           }t          |           }t          | |j                   }|||d S t          |||          S r   )
r   r   DIRECTrm
isinstancer
   r   r   r"   r   )r   r#   r   r   r   s        r   calculate_sibr(   %   s    tNn333
8J8Jt')9:: t 122E 122E/@@D}t%---r   )r   typingr   x86.encoding.machiner   r   r   r   r   x86.registerr	   x86.asmr
   r   r   r"   r(    r   r   <module>r.      s#          g g g g g g g g g g g g g g ! ! ! ! ! ! $ $ $ $ $ $+;    
+; 
 
 
 
5*: 5 5T]`dTd 5 5 5 5.%5%@4%G .U]`dUd .iwz~i~ . . . . . .r   