
    g                         d dl mZ d dlmZ d dlZe G d d                      Z G d dej                  Ze G d d	                      Zd
ed         defdZ	dS )    )	dataclass)LiteralNc                   <    e Zd ZU eed<   ed         ed<   defdZdS )RegisterTypename)          @   sizereturnc                     | j         S N)r   selfs    I/media/seanl/Data/Files/Programming/Python/URCL/urclelf/./x86/register.py__str__zRegisterType.__str__
   s
    y    N)__name__
__module____qualname__str__annotations__r   r    r   r   r   r      sK         
III
-
          r   r   c                      e Zd Z edd          Z edd          Z edd          Z edd          Z ed	d          Z ed
d          Z	 edd          Z
 edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z ed d          Z ed!d          Z  ed"d          Z! ed#d          Z" ed$d          Z# ed%d          Z$ ed&d          Z% ed'd          Z& ed(d          Z' ed)d          Z( ed*d          Z) ed+d          Z* ed,d          Z+ ed-d          Z, ed.d          Z- ed/d          Z. ed0d          Z/ ed1d          Z0 ed2d          Z1 ed3d          Z2 ed4d          Z3 ed5d          Z4 ed6d          Z5 ed7d          Z6 ed8d          Z7 ed9d          Z8 ed:d          Z9 ed;d          Z: ed<d          Z; ed=d          Z< ed>d          Z= ed?d          Z> ed@d          Z? edAd          Z@ edBd          ZA edCd          ZB edDd          ZC edEd          ZD edFd          ZE edGd          ZF edHd          ZGeHdIeIfdJ            ZJdK ZKdLS )MRegisteralr   axr	   eaxr
   raxr   blbxebxrbxclcxecxrcxdldxedxrdxahsplspesprspchbplbpebprbpdhsilsiesirsibhdildiedirdir8lr8wr8dr8r9lr9wr9dr9r10lr10wr10dr10r11lr11wr11dr11r12lr12wr12dr12r13lr13wr13dr13r14lr14wr14dr14r15lr15wr15dr15r   c                 f    t           D ](}|j        j        |                                 k    r|c S )d S r   )r   valuer   lower)r   registers     r   	from_namezRegister.from_nameT   sA      	  	 H~"djjll22 3	  	 r   c                 *    t          | j                  S r   )r   rb   r   s    r   r   zRegister.__str__Z   s    4:r   N)Lr   r   r   r   ALAXEAXRAXBLBXEBXRBXCLCXECXRCXDLDXEDXRDXAHSPLSPESPRSPCHBPLBPEBPRBPDHSILSIESIRSIBHDILDIEDIRDIR8LR8WR8DR8R9LR9WR9DR9R10LR10WR10DR10R11LR11WR11DR11R12LR12WR12DR12R13LR13WR13DR13R14LR14WR14DR14R15LR15WR15DR15staticmethodr   re   r   r   r   r   r   r      s       	dA		B	dB		B
,ub
!
!C
,ub
!
!C	dA		B	dB		B
,ub
!
!C
,ub
!
!C	dA		B	dB		B
,ub
!
!C
,ub
!
!C	dA		B	dB		B
,ub
!
!C
,ub
!
!C	dA		B
,ua
 
 C	dB		B
,ub
!
!C
,ub
!
!C	dA		B
,ua
 
 C	dB		B
,ub
!
!C
,ub
!
!C	dA		B
,ua
 
 C	dB		B
,ub
!
!C
,ub
!
!C	dA		B
,ua
 
 C	dB		B
,ub
!
!C
,ub
!
!C
,ua
 
 C
,ub
!
!C
,ub
!
!C	dB		B
,ua
 
 C
,ub
!
!C
,ub
!
!C	dB		B<""D<##D<##D
,r
"
"C<""D<##D<##D
,r
"
"C<""D<##D<##D
,r
"
"C<""D<##D<##D
,r
"
"C<""D<##D<##D
,r
"
"C<""D<##D<##D
,r
"
"C         \ 
    r   r   c                   `    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   d	S )
GeneralRegistersabcdr/   r4   r>   r9   N)r   r   r   r   r   r   r   r   r   r   ]   sX         KKKKKKKKKKKKLLLLLLLLLLLLLLr   r   bits)r
   r   r   c           
         | dk    rft          t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	                  S t          t          j
        t          j        t          j        t          j        t          j        t          j        t          j        t          j                  S )Nr   )r   r   rj   rn   rr   rv   r{   r   r   r   ri   rm   rq   ru   rz   r   r   r   )r   s    r   get_registersr   h   s    rzzLLLLLLLL	
 	
 		
  LLLLLLLL	
 	
 		
r   )
dataclassesr   typingr   enumr   Enumr   r   r   r   r   r   <module>r      s    ! ! ! ! ! !       
       N N N N Nty N N N`        
 
,< 
 
 
 
 
 
r   