1
8
你 能够 使用一组不同的符号来表示机器代码。但是没有人会打扰你,因为你不会得到太多。 ARM有一个名为ADD的指令。在ARM汇编程序中,“ADDR0,r0,#1”表示构成递增寄存器0指令的4字节机器代码。 无论您将该指令称为什么,都不能更改可用的指令集,而仍然将其称为ARM汇编程序。无论您将ADD操作称为“ADD”、“SUM”、“PLUS”还是“ADD”,它基本上都是相同的编程语言。因为如果每个人对所有事物都使用相同的名称,那么使用现有的引用就更容易了,所以情况就是这样。
|
2
4
你弄错了(或者可能是对的——很难从你的问题中分辨出来)。汇编语言是特定CP体系结构的二进制指令模式的符号(易于阅读)表示。人们偶尔会遇到对“portabe汇编程序”(Scott Nudds,有人吗?)的引用,但这些确实是稍微高级一点的语言。 |
3
3
Clozure Common Lisp . 它允许用Lisp编写内联汇编代码。以下定义了一个函数%safe get ptr,该函数用x86汇编程序表示法编写:
它仍在组装中。除此之外,还有许多语言具有低级结构,用于从内存或寄存器等设置/读取值。
|
4
2
汇编语言与目标系统的硬件体系结构密切相关。
它们还允许您以与机器内存体系结构(单片、分段、虚拟等)匹配的方式访问和操作内存。
话虽如此,最现代的芯片都在模拟古老的指令集,因此无论如何,你真的没有那么接近实际情况,而且,更好的C编译器知道底层的微体系结构(比如管道、每个周期执行多少整数指令等)因此,一个好的C编译器几乎总是比一般的汇编代码表现得更好! |
5
2
为了澄清关于Burroughs B5000和B6000系列机器的一些答案,没有汇编程序,因此也没有汇编语言编程。也完全没有链接加载器。单通道Algol编译器(由Donald Knuth编写)直接生成机器代码。《硬件参考手册》使用汇编程序员可以识别的助记符来描述指令,但这是我们最接近的。 您可以要求Algol编译器在编译期间将生成的代码与源代码内联打印。 |
6
1
与C混合的程序集被大量使用。一些CPU(如8052芯片)带有一种在ROM中烧录的高级语言。这些语言有特殊的语句,允许在较低级别上与硬件交互。 CPU系列通常被设计为使用相同的机器代码,这意味着相同的汇编语言。一个特定的CPU可能有更多的缓存、管道等,但在其他方面可以与同一系列中的其他CPU运行相同的机器代码。 因此,编译成一个CPU的软件将在所有CPU上运行。其中最流行的是i386指令集,它几乎为所有Windows机器提供了电源。有一个16位前置和一个64位后继。 |
7
1
最后,对于大多数现代操作系统,如Windows和Linux,应用程序运行在虚拟内存中,其中程序地址与物理地址不匹配,并且程序通常被拒绝访问硬件。当操作系统未授予硬件特定权限时,尝试访问硬件的代码将生成中断,返回操作系统并不再执行。 |
8
1
|
9
1
是的,只要你认为硬件是虚拟的,它就被调用了!第四堆栈机器的基本寄存器操作的机器代码为FORTH。但是,如果你模拟这个硬件,也许它很重要? http://www.greenarraychips.com/ 对于领先的优势和1984年的经典“思考”的利奥布罗迪,这可能会帮助你。。。即使你从不使用Forth。 |
10
0
你的问题是:
我很惊讶没有人提到 Register Transfer Language Verilog 或 VHDL . RTL不是一种编程语言 ,并且通常与硬件无关(程序集绝对不是无关的,它针对特定的体系结构)。 VHDL和Verilog是最常用于可编程逻辑的,我认为这符合“直接与硬件对话”的条件。软核通常在可编程逻辑中实现,因此您可以使用其中一个来实现(例如)ARM处理器,它本身可以在汇编中编程。。。。 有趣的东西。。。。让我希望我能回去&重新做我所有的EE/CE工作。。。。 |
Sudhanva c · 如何提高编码技能?[已关闭] 6 年前 |
hoffm · 为什么Ruby找不到调用方类中定义的常量? 7 年前 |
Thamme Gowda · “lambda”关键字的较短替代项? 7 年前 |
AlphaModder · 有没有带有“不寻常”访问修饰符的编程语言? 9 年前 |
lucasasecas · 有可能静态地使用动态语言吗? 10 年前 |
Eugenio Laghi · 仅由括号、加号和感叹号组成的语言 10 年前 |
dallin · 数组中的逗号运算符是否有名称? 10 年前 |