- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图将原始机器码字节作为 0 和 1 写入文本文件,并通过 BIOS 执行它。
然而,我在理解寻址、乘法、偏移、寻址、操作数和指令如何在组合排列中工作时遇到了一些问题,即 MOV AL, 07
之间的差异和 MOV BL, AL
.
我的意思是它在汇编中是有意义的,但是在机器代码中,获得参数的想法变得非常困难。
所以我想知道的是:我怎样才能更好地理解这一点?我发现没有任何教程可以准确地解释/描述数据传递、MMIO、寻址模式、算术等之间的组合相关性或连接中的指令中的 0 和 1。
在本站 http://ref.x86asm.net/coder32.html#x00它尝试,但我不明白这一点。
示例:假设我想将 5 移入 AL ...我是否将二进制文字“5”指定为与 AL/MOV 指令链接的二进制前缀中的操作码的一部分,或者我是否会为每个指定一个固定的二进制代码指令,不管值(value)?这就是我想知道的……如何理解机器代码的编写方式。
最佳答案
不幸的是,x86 编码复杂且不规则,理解它是一项艰巨的工作。编码的最佳“快速入门”是 sandpile.org 上的一组 HTML 页面(它很简洁,但非常全面)。
第一:http://sandpile.org/x86/opc_enc.htm - “指令编码”表显示了十几种指令编码方式。每行的白色单元格代表指令中的强制字节;根据操作码中较早出现的各种字段,以下灰色单元格是否存在(或不存在)。您应该查看以白色“0Fh”开头的行以及第一行。在同一页面的底部是出现在各种“扩展”操作码字段中的位字段 - 除了“modrm/sib”行(第一行)之外,您忽略了所有内容。
请注意,对于除第一行(1 字节操作码)之外的所有行,“mod r/m”字节必须跟在操作码之后(对于 1 字节操作码,这取决于指令)。这对大多数 2 参数指令的参数进行编码。表 http://sandpile.org/x86/opc_rm.htm含义:其中一个参数必须是寄存器,另一个参数可以是寄存器或内存间接(“reg”字段编码寄存器,“mod”和“r/m”字段编码另一个参数) .在操作码的其他地方通常还有一个“方向”位,指示参数的顺序。操作码还指示我们是在操纵,例如 AL、AX、EAX 或 RAX(即不同大小),还是扩展寄存器之一,这就是为什么每个 3 位字段被列为引用许多不同寄存器的原因。
在 modrm 中,如果“mod”位是“11”,那么“r/m”字段也指的是一个寄存器。否则,它通常指的是通过将命名寄存器添加到出现在 modrm 字节之后的(可选)位移(此常量为 0、1 或 4 个字节长,具体取决于“mod”位)而构造的内存地址。异常(exception)是当“r/m”位为“100”(即 0x4)时,通常将其命名为“SP”——在这种情况下,内存参数由紧跟在 modrm 字节之后的附加“sib”字节描述(任何 modrm 位移出现在同胞之后)。 SIB的编码见http://sandpile.org/x86/opc_sib.htm ,或从 modrm 页面单击。
最后,要了解方向和大小的来源,请查看一些操作码:http://sandpile.org/x86/opc_1.htm .前四个条目都是“ADD”,参数有两种不同的顺序,并且有两种不同的宽度。所以在这种情况下,指令的底部位是编码方向和宽度。
关于assembly - 如何根据实模式偏移和寻址确定 x86 机器操作码值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18646509/
我正在尝试从第 4 到 9 页以及第 12 和 13 页上的单元格中清除所有内容(包括图像)。我有以下代码,但它正在清除第 3-9 和 12-15 页中的内容,我不知道为什么。 有什么想法吗? Sub
有没有办法增加极坐标图刻度标签(θ)的填充/偏移? import matplotlib import numpy as np from matplotlib.pyplot import figure,
我正在调用本地 API 并尝试以分页 样式进行操作。我有 n 张图片,我想将它们分成 n/4 行(每行 4 张图片)。因此,我正在调用我的 API,images/count,offset。但不知何故,
我的问题解释起来有点棘手,但无论如何我都会尝试。我有两个水平选项卡,当您单击它们时,会打开一个文本框内容。当他们被点击时,我试图“关注”他们。我在网上找到了很多资料,但除了我在下面显示的这段代码外,没
所以我有一个 float 的 div,我需要它始终向右 200 像素,并填充窗口的其余部分。有没有某种跨浏览器兼容的方法,我可以在不借助 javascript 的情况下使宽度填满页面的其余部分? 最佳
我有以下片段 $('html,body').animate({scrollTop: $('#menu').offset().top}, 'slow'); 单击链接时,我希望浏览器从#menu div
我目前正在为我的应用程序使用 JASidePanel,并且我有一个 UITableViewcontroller 和一个 UIRefreshControl 作为它的 ViewController 之一。
给出以下代码: imshow(np.arange(16*16).reshape(16,16)) cb = colorbar() cb.set_label("Foo") cb.set_ticks([0,
我是编程新手,我认为 VBA 是一个很好的起点,因为我在 Excel 中做了很多工作。 我创建了一个宏,它从输入框中获取一个整数(我一直使用 2、3 和 4 来测试),并创建该数字的一组 4 层层次结
我在 PHP 中有一个 unix 时间戳: $timestamp = 1346300336; 然后我有一个我想要应用的时区的偏移量。基本上,我想应用偏移量并返回一个新的 unix 时间戳。偏移量遵循这
演示:http://jsfiddle.net/H45uY/6/ 我在这里想做的是将 的左上角设为跟随鼠标。代码在没有段落的情况下工作正常(请参阅上面的演示),但是当您添加段落时,被向上推,鼠标位于盒
假设我们有两个由无符号长(64 位)数组表示的位图。我想使用特定的移位(偏移)合并这两个位图。例如,将位图 1(较大)合并到位图 2(较小)中,起始偏移量为 3。偏移量 3 表示位图 1 的第 3 位
通过在 pageViewController 中实现 tableView,tableView 与其显示的内容不一致。对此最好的解决办法是什么? 最佳答案 如果您的 TableView 是 View C
我设置了一个在 nib 中显示地点信息的地点配置文件。当我在标准屏幕流程中推送此 View 时,它工作正常。但是,当我从另一个选项卡推送此 View 时,UINavigationBar 似乎抵消了它,
如果我想选择 5 条记录,我会这样做: SELECT * FROM mytable LIMIT 5 如果我想添加偏移量,我会这样做: SELECT * FROM mytable OFFSET 5 LI
我有一个应用程序,其中某些 View 需要全屏,而其他 View 不需要全屏。在某些情况下,我希望背景显示在状态栏下方,所以我在 View 加载时使用它来使 Activity 全屏显示: window
在下图中,我进行绘制,结果位于 A 点,就在我手指接触的地方。 如何使图像显示在实际触摸上方约 40pt。 (二) 我正在使用经典的 coreGraphic UITouch 代码,如下所示: - (v
只要键盘处于事件状态,我就会尝试偏移 UITextField,效果很好,直到我尝试了表情符号布局。有没有办法检测键盘输入的类型,以便找出高度差?谢谢 最佳答案 不是使用 UIKeyboardDidSh
这是我的 Swift 代码 (AppDelegate.swift): var window: UIWindow? var rootViewController :UIViewController? f
我有一个 div 作为绝对定位的 body 的直接子节点,其 css 属性定义如下: div[id^="Container"] { display: block; position: a
我是一名优秀的程序员,十分优秀!