问题描述
我已经阅读了谷歌展示的关于 SIB 字节的每篇文章,以及 this video 和英特尔手册,但仍然有点不清楚。 This page 对以下内容特别有帮助:
import speech_recognition as sr
# get audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
print("Speak:")
audio = r.listen(source)
try:
print("You said ",r.recognize_google(audio))
except sr.UnkNownValueError:
print("Could not understand audio")
except sr.RequestError as e:
print("Could not request results; {0}".format(e))
哪里[ reg32 + eax*n ] MOD = 00
[ reg32 + ebx*n ]
[ reg32 + ecx*n ]
[ reg32 + edx*n ]
[ reg32 + ebP*n ]
[ reg32 + esi*n ]
[ reg32 + edi*n ]
[ disp + reg8 + eax*n ] MOD = 01
[ disp + reg8 + ebx*n ]
[ disp + reg8 + ecx*n ]
[ disp + reg8 + edx*n ]
[ disp + reg8 + ebP*n ]
[ disp + reg8 + esi*n ]
[ disp + reg8 + edi*n ]
[ disp + reg32 + eax*n ] MOD = 10
[ disp + reg32 + ebx*n ]
[ disp + reg32 + ecx*n ]
[ disp + reg32 + edx*n ]
[ disp + reg32 + ebP*n ]
[ disp + reg32 + esi*n ]
[ disp + reg32 + edi*n ]
[ disp + eax*n ] MOD = 00,and
[ disp + ebx*n ] BASE field = 101
[ disp + ecx*n ]
[ disp + edx*n ]
[ disp + ebP*n ]
[ disp + esi*n ]
[ disp + edi*n ]
。
根据我的理解(尽管似乎没有任何文档明确显示这一点),n = 1,2,4 or 8
是“基础”,reg
等是索引,而 eax
是“比例”因子,就像您在 JavaScript 中的数组中执行此操作一样:
n
缩放本质上允许您按倍数跳转,因此如果您的内存是基于字节的,但您的对象是 32 位,那么您可以使用比例因子 4 每 4 个字节跳转。那种类型的东西。
我在正确的轨道上吗?我还不能完全确定。
让我感到困惑的是位移。位移如何影响这里的方程?如果你把它画成一个 JavaScript 数组......在最后一批例子的情况下,比如 base[index * scale]
,没有 [ disp + eax*n ]
(我正在考虑的“基础”) .这是否意味着基数为0?另外,reg
可以是另一个寄存器,还是只能是静态硬编码值?最后,所有可以用作基址和索引的寄存器是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)