当前位置: 首页 > 面试题库 >

x86 ASM Linux-使用.bss部分

狄英哲
2023-03-14
问题内容

我希望这些问题很简单:(NASM编译器,Linux,x86 Intel语法)

第1部分:

我试图弄清楚如何使用Assembly程序的.bss部分来找到一种将值(例如,从操作(+-* /)的值)存储到声明的变量的方法。例如:

section .bss

variable:  resb 50                                       ;Imaginary buffer

section .text

add 10,1                                                 ;Operation
;move the result into variable

因此,我知道有可能使用内核intterupt来读取用户输入(但这涉及字符串),但是有没有办法将此值复制到 变量
变量中,以便以后使用?这会容易得多而不是必须要在堆栈中上下推和弹出两件事。

第2部分:

有没有办法删除.bss部分中变量的值?换句话说,如果我想在.bss变量中存储一个新值,如何在变量中已有的字符/值不与新值混合的情况下进行操作?

谢谢


问题答案:
section .bss

variable: resb 4

…该符号variable现在指向该.bss部分中4个字节的存储地址(即足以存储32位值)。

section .text
...
mov eax, 123
mov [variable], eax

…将eax寄存器设置为123,然后将的值存储eax在符号所指向的位置variable

mov eax, [variable]

…将当前存储在由寻址的位置中的值读variableeax寄存器。

mov eax, 456
mov [variable], eax

…存储一个新值,覆盖前一个值。



 类似资料:
  • BSS

    BSS 是一个基于 jabdp 的客户订单管理系统案例。   简版 BSS 是集销售和客户等业务管理为一体,融合了办公自动化和智能化理念的系统。它应用了新一代的 B/S 架构,帮助企业快速、准确应对市场变化,支持企业稳定、安全、成熟的长期可持续性发展;同时满足企业决策者和管理者随时了解内部信息的需求,它以浏览器为软件界面,图形化的导航式操作,提供方便快捷、高效率的实时动态信息交互,提高管理水平、优

  • 在我们基于GCC的C嵌入式系统中,我们使用和选项来允许链接器在链接最终可执行文件时删除未使用的(未引用的)部分。多年来这一直很有效。 在同一系统中,大多数数据结构和缓冲区都是静态分配的(通常是文件作用域的-变量)。 当然,我们有bug,有时是很糟糕的bug,我们希望快速排除缓冲区溢出的可能性。 我们的一个想法是在每个bss节和data节之间放置金丝雀--每个bss节只表示一个符号(因为)。就像编译

  • 本文向大家介绍ELF的bss段?相关面试题,主要包含被问及ELF的bss段?时的应答技巧和注意事项,需要的朋友参考一下 ELF是Linux系统下的一种可执行可链接文件的格式,而bss段则是用于存放程序中未初始化的全局变量和静态局部变量。

  • 问题内容: 我知道的是,全局变量和静态变量存储在段中,而未初始化的数据存储在段中。我不明白的是,为什么我们有专用于未初始化变量的段?如果未初始化的变量在运行时分配了值,那么该变量是否仅仍存在于段中? 在以下程序中, 在段中,并且在段中;那是对的吗?如果我的理解是错误的,请纠正我。 另外,请考虑以下程序, 问题答案: 原因是减小程序大小。想象一下,您的C程序在嵌入式系统上运行,其中代码和所有常量都保

  • 我有网址列表。我正在尝试从这些api中使用jsondata。下面是我尝试过的代码,但我得到了Mono.flatMapMany- 如果我使用. block(),我将为这些api获取jsonData,但问题是当我使用. block()时它变得同步。我希望它是异步的。有人能帮我吗? 提前谢谢。

  • Fabric 是一个 Python 下类似于 Makefiles 的工具,但是能够在远程服务器上 执行命令。如果您有一个良好配置过的 Python 软件包 (大型应用) 且 对“配置”概念的理解良好,那么在外部服务器上部署 Flask 应用将会非常容易。 开始之前,请先检查如下列表中的事项是否都已经满足了: 在本地已经安装了 Fabric 1.0 。即这个教程完成时, Fabric 的最新版本。