问题标签 [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.
assembly - x64 计算向前跳跃
如果你有一条向前跳转的指令,有没有办法计算偏移地址,或者你只是在第二次通过时计算绝对跳转?
像这样:
在这种情况下,编译器是否只使用绝对跳转?我的意思是可以在这样的简单情况下计算偏移量,但是随着标签的增多,它的成本会成倍增加,更不用说相互嵌套的跳转和标签了......
assembly - 在ARM cortex m0中,第一条指令是什么?
我正在尝试学习使用 cortex m0 处理器。我有一个 stm32f0 开发板,可以让我查看每个地址的每一位并轻松上传新的二进制文件。我一直在阅读大量有关许多规则和功能的手册,但仍然不知道程序计数器在重置时从哪里开始,它期望什么类型的参数,我什至不知道如何编写诸如 add 之类的东西或二进制形式的 str/ldr。我读过的手册中是否遗漏了这些基本知识?
它说 m0 有一个完整的降序堆栈,但似乎表明起点在另一端(0x00000000)。如果向量表也可以用外行的术语来解释,那就太好了。
c - 文件的机器代码(可执行文件)?
如何访问可执行文件的机器代码(二进制文件)?
细节
- 我在 Ubuntu (Linux) 上
- 我想访问 .exe 文件的机器代码(二进制文件)(文件遵循 PE 格式)
- 我正在使用 C 来实现
c - __interceptor_strchr 做什么?
我的函数在此机器指令之后立即崩溃(由于堆栈溢出):
做什么__interceptor_strchr(char const*, int)
?
c - 该机器代码如何防止缓冲区溢出?
以下是三个不同 .s 文件的一部分。.c 文件已使用三个不同的选项进行编译:
- -fno-inline -fstack-protector-strong,
- -fno-inline -fsanitize=地址,
- -fno-inline -fno-stack-protector -zexecstack。
以下是 .s 文件的内容:
谁能告诉我这些代码如何防止缓冲区溢出?
machine-language - 机器语言的语法是否因机器而异?
我有一个关于机器语言的问题。如果我编写一个程序,使用机器语言打印“Hello World”,我的语法会根据我正在编写代码的机器而有所不同。
assembly - 机器语言中加减法的基本帮助
我目前正在开始学习机器语言和汇编。我正在处理的程序相当简单,只是十进制和十六进制数的基本加减法,但由于某种原因,我无法得到实际答案。
免责声明:是的,这是一项大学作业。不,我不想让你为我做这件事。我向我的教授寻求帮助,但他的解释只会让我更加困惑 - 所以我希望 stackoverflow 社区可以帮助澄清我的错误在哪里,以便我可以修复它。
我在模拟 H1 和 V1 计算机的 Windows 平台上的“sim”中运行它,所以它是一个模拟环境。
这是日志文件:
所以,这应该做的是:
45(10) + 45(16) - 13(10) - 13(16) + b(16) + (-5)(10)
(10) 是 base10, (16) 是十六进制。为了我自己的理智,当我将这些值输入到程序中时,我将它们转换为 base10 以保持它们的一致性(每个数字旁边的 t 告诉编译器使用 base10)。
这是我对其工作原理的理解:
我告诉它加载内存插槽 10(是的,我知道我在这里浪费了很多内存),我将其设置为初始值 45。然后我在插槽 11 中添加 45,在 12 中减去 13,在 19 中13(十六进制中 13 的十进制形式),14 中的 11,然后 15 中的 -5。然后我将这些全部存储在插槽 16 中。
接下来,在停止程序之前,我以十六进制和十进制形式打印存储在内存插槽 16 中的数字。
到目前为止,我在这一切上都是正确的吗?还是我在某个地方出错了?这就是我很好奇的地方。
现在我的结果是 43,但如果我的数学是正确的,实际的结束数字应该是 59。
任何帮助将不胜感激!
loops - 汇编语言中由 * 组成的三角形的用户控制网格大小
输入网格大小 (1-9):3
这是我到目前为止的代码:
此代码有效并打印三角形。然而,它进入了一个无限循环,而不是打印网格大小为 3。如果我将代码“N .FILL M”更改为“N .FILL 3”,它将打印出网格大小为 3。任何帮助将不胜感激。谢谢
assembly - 指令集架构是二进制(不可读)还是人类可读的?
- 如果我是正确的,ISA 是机器语言中的一组指令。那么指令是 ISA 0/1 二进制序列吗?
为什么我看到 ISA 中的说明是书中人类可读的文字?
ISA 中表示指令的人类可读单词是否与 ISA 汇编语言中使用的助记符相同?
ISA 中指令的人类可读文字是 ISA 的一部分吗?
如果是,是否有一个翻译过程可以将 ISA 中的人类可读指令翻译成机器语言,就像汇编程序将汇编语言翻译成机器语言一样?
谢谢。
assembly - 将 PEP/8 汇编伪操作转换为十六进制机器语言
我正在阅读教科书Computer Systems 4th Edition。下面的问题是在 Pep/8 虚拟计算机的上下文中。在练习中,我得到了这个问题:
将以下汇编语言伪操作转换为十六进制机器语言:
- .ASCII "熊\x00"
- .BYTE 0xF8
- .WORD 790
我试图将这些值转换为十六进制,但我无法理解教科书对该过程的解释,而且我觉得这本书没有给出太多解释。
对于第一个答案,我认为这是在 ASCII 转换表中的简单查找:
42 65 61 72 00
本练习的答案如下:
- 42 65 61 72 00
- F8
- 0316
尽管知道这些答案,但我不知道如何获得 2 和 3 的答案