问题标签 [machine-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
202 浏览

binary - 可以立即将程序计数器移动到遥远的内存地址吗?

我正在尝试调整一个程序来计算文件中字符的出现次数,以存储匹配发生在遥远内存位置的十六进制地址列表。代码:

所以我的程序从内存地址 x3000 开始。我想开始在 x300B 处处理列表的指令集(在“增量 R2”指令下方)。麻烦的是,我想从 x3500 开始列表,但我不知道有一种“有效”的方法可以到达那里。

我最初的计划是使用加载间接 (LDI) 指令,但由于符号扩展,9 位偏移量最多只能允许 x00FF = 0000 0000 1111 1111 的偏移量,这只能让我从 x300C(x300B 与程序计数器递增)到 x310B。

我想出的唯一真正的“解决方法”是使用加载有效地址 (LEA) 指令将地址 x310B 存储在寄存器中(比如 R5),然后将值 x00FF 存储在 R6 中,并重复将 R6 添加到 R5直到我到达 x3408(这需要 3 个 ADD 指令),此时我将值 x0092 存储在 R6 中,将其添加到 R5,我最终在 R5 中有 x3500。

到那时,剩下的就很简单了(将 R3 存储在(R5 + 计数器)中,这会将当前匹配的地址放入列表中的适当“位置”)

我实际上还没有这样做,因为我上面描述的获取 x3500 的整个方法看起来真的很麻烦和笨拙。我无法摆脱这样一种感觉,即必须有一种更好、更快的方法来同时移动这么多内存地址。

Is it possible to move from x300C to x3500 in a single instruction? Even two would be better than what I've currently got.

0 投票
1 回答
204 浏览

printing - TRAP 保持打印相同的值 lc3

所以我正在编写一个程序(使用 LC-3 ISA 机器语言,虽然我不确定这是否是特定类型机器语言代码的实际名称,但这只是我描述它的最佳方式。我是机器新手语言编程,所以我对 LC-3 的不同类型的机器语言代码不是很熟悉,我在其中显示字母出现在押韵(诗)和诗句中的次数。我应该使程序可以打印字母出现的次数(最多 99 次)。

一切都很好,除了最后一条指令是 TRAP x23(用于打印)。我使用了两次陷阱指令,以便可以打印出两位数(通过将计数除以 10 并将商和余数存储到寄存器中来获得)。这是代码:

在我使用寄存器 0 打印出余数(在 reg. 2 中)之前,我只用它打印出商,我使用以下代码尝试更改要打印的值(我认为 TRAP x23将打印最近调用的寄存器的值):

但它只打印了两次商,所以我尝试执行以下操作以查看是否有任何变化:

什么也没做。所以我开始相信 TRAP x23 只打印出 r0 的值,所以我将代码更改为:

但是控制台打印了商,旁边有一个空的轮廓框。

0 投票
1 回答
1107 浏览

lc3 - 给定LC-3的数据路径(如下提供),给出STORE DIRECT指令(ST SR,标号)的完整描述,如下

我已经尝试阅读这本书,但我不确定该怎么做。有人有想法吗?

我已经尝试阅读这本书,但我不确定该怎么做。 有人有想法吗?

0 投票
1 回答
982 浏览

assembly - 将 PDP-11 汇编语言编码/解码为二进制和十六进制?

我被分配了一项任务,我要为应用程序的编码和解码按钮编写 actionPreformed 方法,在该应用程序中,用户可以假设编码/解码 PDP-11 指令(仅限于ADD, SUB, MOV[B], CMP[B])。该应用程序应该能够获取 4 位十六进制数或 16 位二进制并将其解码为汇编,或输入其中一条汇编指令并将其编码为二进制/十六进制。

这对我来说都是新事物,我似乎无法思考如何做到这一点。有没有人有办法更简单地打破这个过程,或者有什么我应该从哪里开始的指针?我不太确定从哪里开始。谢谢!

0 投票
1 回答
317 浏览

python - 错误的输入形状()LabelEncode?

这是我在 jupyternotebook 中的代码,我很困惑为什么我会收到错误的输入形状错误。下面给出了我的代码中失败的行,通过打开数据集文件并用于拆分可能的输出类高于 50K 或低于或等于 50K。这个数据集有一个轻微的扭曲,因为每个数据点都是数字和字符串的混合

这是用于将字符串数据转换为数值数据

交叉验证数据

在单个数据实例上测试编码

我已经浏览了 sklearn 文档,但对我没有用,有什么帮助吗??

0 投票
1 回答
209 浏览

file - 如果系统执行文件的一部分是零填充的,会发生什么?

我在一些帖子/视频/文件中看到,它们被零填充以看起来比实际更大,或者符合某些文件系统实用程序用于移动文件的“相同文件大小”标准,主要是恶作剧程序或恶意软件.

但是我经常想,如果文件损坏会发生什么,并且会“加载”文件末尾大零填充空间中的下一组“指令”?

会不会有事?指令集是干什么用的0x0

0 投票
2 回答
1169 浏览

assembly - 在 x86 架构中更改指令的操作码是否可能,或者有多难?

例如,PUSH imm32具有操作码 68h。是否可以使用另一个数字,例如 69h,来“表示”这条指令(假设这个数字没有被其他指令使用)?

“表示”是指程序集中有 PUSH 指令的任何地方,69h 都会出现在二进制可执行文件中。当它最终被 CPU 取出并执行时,它将被转移回 68h。

我知道每个操作码都是根据 CPU 电路专门设计的,但是我是否可能只想使用另一个十六进制数字作为代理?

当然我不会对 CPU 做任何改变,我仍然希望指令在 x86 架构上执行。

更新:我为什么要问这个问题?

可能你知道 Return Oriented Attack,它故意曲解机器语言流,并利用标准库中有很多 C3(即 ret)。我最初的想法是,如果我们能够将返回的操作码从 C3 更改为其他代码,最好是 2 个字节,那么 ROA 将无法工作。我不是建筑领域的专家,我只是发现我的想法在现实中行不通。感谢您的所有回复。

0 投票
1 回答
31 浏览

assembly - 为什么这个循环的结果是 20 而不是 120?

为什么这个循环的结果是 20 而不是 120?

0 投票
1 回答
59 浏览

assembly - 我不理解这个汇编语言程序的用途(输入或输出是什么)

我从我的伙伴那里得到了这个汇编程序..我的老师提供了它。不幸的是我错过了..请有人告诉我这个程序的目的是什么(输入/输出或目标)

0 投票
1 回答
482 浏览

x86 - JMP 指令如何影响 8086 的工作?

我知道 8086 有一个 BIU 和一个 EU,这有助于对处理器进行流水线化。BIU 有一个 6 字节的预取队列,用于提取指令指针指向的地址之后的字节。现在,当要执行的指令是跳转到另一个位置的指令时,所有预取的 6 字节会发生什么情况?他们会被冲洗然后重新加载吗?(这会破坏处理器的流水线效率,不是吗?)