빌드 폴더 구조 :
.
├── arm (i kept this one empty, see similar x86 folder)
├── hal
│ ├── flags.py
│ ├── __init__.py
│ └── registers.py
├── x86
│ ├── flags.py
│ ├── __init__.py
│ └── registers.py
└── 8086.py
이 arm
폴더 안에 당신의 ARM 모듈을 넣어 86 모듈 x86
폴더 등등.
트리에서 hal
폴더로 표시되는 병렬 폴더에 하드웨어 상위 클래스를 넣으십시오. hal
폴더에있는 일반 모듈과 동일한 이름을 가진 각각의 아치 (각 폴더에있는)에 대해 특정 모듈을 가지고 있음을 알 수 있습니다 (그러나 이는 단지 제안 일뿐입니다).
상위 폴더에 8086.py
과 같은 파일로 하드웨어를 빌드하십시오.
from x86 import Ax, Bx, ZF # only the classes you need
ax = Ax()
bx = Bx()
# build your remaining CPU...
샘플 hal/flags.py
의 :
class ZeroFlag():
pass
샘플 hal/registers.py
의 :
class Register:
pass
샘플 hal/__init__.py
의 :
from hal.registers import Register
from hal.flags import ZeroFlag
코드의 샘플 각 이제
x86/__init__.py
from .registers import *
from .flags import *
의 x86/flags.py
from hal import ZeroFlag
class ZF(ZeroFlag):
pass
샘플
from hal import Register
class Ax(Register):
pass
class Bx(Register):
pass
x86/registers.py
의 샘플의
샘플은 특정 모듈을 상속 hal
에서 일반적인 클래스를 정의 할 수 있습니다 아치. 최상위 폴더 모듈에서는 이러한 특성을 가져 와서 CPU 또는 하드웨어를 만들 수 있습니다.
__init__.py
파일의 중요성에 주목하십시오. 폴더를 패키지로 변환합니다. __init__
도 패키지 가져 오기에서 실행되므로 가져 오기 프로그램에서 사용할 수있게하려는 모든 패키지 모듈을 지정할 수 있습니다. 이 목록은 수입업자가 모든 이름을 가져 오도록 강요하지 않는다는 점에 유의하십시오. 원하는 것만 지정할 수 있습니다.
파일이 많으면 __init__.py
파일에 코드를 넣으면 수동으로 작성하는 대신 가져 오기를 자동화 할 수 있습니다.