当前位置: 首页 > 知识库问答 >
问题:

什么汇编指令对应于这样的c语言局部变量赋值?[副本]

田兴朝
2023-03-14

我正在学习计算机体系结构,我正在考虑什么汇编指令对应于这个简单的作业:


int main () {

 int local_test = 10;

}

考虑到STORE指令将某些内容从寄存器存储到RAM,而LOAD指令将一些内容从RAM加载到寄存器,那么local_test使用的汇编指令是什么?

    < li >我知道这可能取决于CPU,所以请随意给出具体机器的具体示例

共有1个答案

申宜
2023-03-14

首先,在你展示的代码中没有任何赋值。声明中的< code>=表示初始值设定项。

其次,由于您不对产生程序输出的值做任何事情,任何像样的编译器都会消除它,并且根本不会产生任何输出。

然而,假设你没有使用这个值,而是用它作为函数的返回值。在这种情况下,在大多数体系结构中,永远不会使用RAM,因为函数返回值在寄存器中。在ARM上,输出只是< code>movs r0,10以将值放入返回寄存器。

或者,假设您添加了一行以将值复制到外部变量。在许多架构上,输出仍然是相同的,只不过是将立即数写入寄存器所必需的。之后会有一条存储指令写入外部变量,但这相当于后面的一行代码,而不是您所问的那行代码。

 类似资料:
  • 我正在努力学习汇编语言。我注意到它与Java等高级编程语言完全不同。 因此,我了解到数据传输指令遵循以下语法: 我将其视为换句话说,将值分配给内存。 我在《数据段声明》一书中看到了一个示例。 怎么会有 我会很感激任何解释。 谢谢

  • 本文向大家介绍汇编语言 跳转指令与C语言的条件分支,包括了汇编语言 跳转指令与C语言的条件分支的使用技巧和注意事项,需要的朋友参考一下 跳转指令 跳转指令也是一个组的指令,称为j组。其中jmp为无条件跳转,其余为条件跳转 上图为j组指令,可结合条件码访问指令加深理解 在机器指令水平上理解如何对跳转指令编码 如上图,通过反汇编软件得到机器指令与汇编语言,其中左边为机器指令编码,右边为对应汇编语言含义

  • 和 C 语言一样,按照变量的作用域,我们可以把变量划分为局部变量和全局变量 Go 语言中局部变量的概念以及全局变量的概念和C语言一模一样 局部变量: 定义在函数内部的变量以及函数的形参称为局部变量 作用域:从定义哪一行开始直到与其所在的代码块结束 生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域 全局变量: 定义在函数外面的变量称为全局变量 作用域范围:从定义哪行开始直

  • 本文向大家介绍什么是汇编语言,包括了什么是汇编语言的使用技巧和注意事项,需要的朋友参考一下  汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器

  • 我想知道以下内容: 是否有可能创建一组小的组装指令,这些指令一起可以完成所有可能的操作?或者可能会有不同的问题,关于任何架构,必须有哪些组装说明? (例如,Jump和Add是做任何事情所必需的) 我希望你们能帮助我! 提供一些背景信息:我正在尝试为我的编译器设计一种中间语言,我想使用尽可能少的指令(稍后可以用一堆这些指令代替特定架构的复杂指令)。但是当然,IL本身应该是可移植的。

  • 指针变量保存的是地址,而地址本质上是一个整数,所以指针变量可以进行部分运算,例如加法、减法、比较等,请看下面的代码: 运行结果: 从运算结果可以看出:pa、pb、pc 每次加 1,它们的地址分别增加 4、8、1,正好是 int、double、char 类型的长度;减 2 时,地址分别减少 8、16、2,正好是 int、double、char 类型长度的 2 倍。 这很奇怪,指针变量加减运算的结果跟