首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果我将定义为字节的字值大小移动到32位寄存器,就好像它是dword定义的一样,会发生什么?

如果我将定义为字节的字值大小移动到32位寄存器,就好像它是dword定义的一样,会发生什么?
EN

Stack Overflow用户
提问于 2019-03-14 20:49:48
回答 2查看 152关注 0票数 1

代码如下:

代码语言:javascript
运行
AI代码解释
复制
;NASM

section .data
a dw 0xDEAD

section .text 
...
mov eax, dword [a + 1]
; eax now equals 0xDE
...

那么,这是如何工作的呢?汇编语言知道,如果我移动的字节比定义的多,那么它只会在更高的位上加零?或者这段代码只为我工作,通常它是未定义的行为或诸如此类的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-14 22:41:05

即使你的计算机变成了一片冒烟的废墟,那也是为汇编而“定义”的。mov eax, dword [a + 1]中的“类型转换”dword只是通知汇编器您知道自己在做什么,并且不想收到警告或错误。在目标文件中,类型消失了,处理器不知道您移动的字节数比定义的多。

处理器从地址a+1读取4个字节,并且存在随机或非随机的值DE 00 00 00。这些零是怎么到那里的无关紧要。可能是NASM将文本段对齐,也可能是操作系统为数据段请求了一整页(4096字节)并用零填充了其余部分,也可能是文本段以零开始,因为入口点在后面。程序的行为也有可能在某一时刻随机改变。

TLDR:不要这样做!

票数 1
EN

Stack Overflow用户

发布于 2019-03-15 16:17:28

代码语言:javascript
运行
AI代码解释
复制
a dw 0xDEAD

告知汇编程序存储2个字节(DW -定义字(16位),btw - DB =8位,DD=32bit)并使用a指向它。因为(我敢打赌)你使用的是x86-64机器,所以它是“小端”的,这意味着它首先存储从最低有效字节开始的多字节值,所以在内存中,你的0xDEAD值将像这样存储:首先是0xAD,然后是0xDE。由于您的数据段肯定填充为16字节的倍数(例如),因此它很可能是用零填充的。现在,如果我们假设你的数据段是16个字节-前2个定义你的a变量-其余的将是零。

现在数据段看起来像这样(假设0填充到16字节)(不带0x前缀的十六进制值):

代码语言:javascript
运行
AI代码解释
复制
AD, DE, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0
    ^
     \__ (a+1) points here at DE

通过编写dword ptr [a + 1],您告诉汇编器以从地址a+1抓取dword (4字节)的方式对此类机器代码指令进行编码。这些将是字节: DE,0,0,0,因为(正如我前面所说的) x86是低端的,如果读取为4字节值,这4个字节意味着0x00000DE,因此EAX等于这个值。

当然,您的数据段可能不是16字节,但可能是整个页面的长度,但这是没有意义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55171752

复制
相关文章
Python:matplotlib绘制条形图
条形图,也称柱状图,看起来像直方图,但完是两码事。条形图根据不同的x值,为每个x指定一个高度y,画一个一定宽度的条形;而直方图是对数据集进行区间划分,为每个区间画条形。
py3study
2020/01/16
1.4K0
Python:matplotlib绘制条形图
matplotlib 柱状图/条形图
bar()函数用来绘制柱状图(垂向的),barh()函数用来绘制条形图(水平的)。
用户6021899
2019/08/14
1.9K0
matplotlib动画制作(2)—气泡图与条形图
本公众号致力于python数据分析和可视化,不定期发布技术内容。点击上方"python数据可视化之美"关注我的公众号,原创文章将会第一时间推送,如有建议,可添加微信交流或私信留言。
python数据可视化之路
2023/10/25
2260
matplotlib动画制作(2)—气泡图与条形图
Matplotlib配置图例legend()设置透明和并排显示
下面我们将以加利福尼亚州所有城市的数据(提取码666)为例来绘图,最终效果是将绘制出各个城市的位置,同时以城市面积大小来使用不同大小的圆表示
汀丶人工智能
2022/12/21
1.7K0
Matplotlib配置图例legend()设置透明和并排显示
数据可视化-Matplotlib读取csv文件生成条形图表
今天我们学习使用Matplotlib创建条形图表,非常适合展示每个类别对应的总值方式显示数据,将学习从csv文件中加载数据,并将数据进行条形图表的方式展示,csv文件内容为统计8万多人日常工作中使用的编程语言,我们来用图形展示最流行的top 15编程排名图表。
XXXX-user
2019/08/05
4.7K0
数据可视化-Matplotlib读取csv文件生成条形图表
ggplot2优雅对并排条形图添加显著性标记
❝本节来介绍如何使用「rstatix」来进行统计分析,并使用「ggpubr」来添加显著性标记,下面通过一个小例子来进行展示;本次使用R内置数据集; 加载R包 library(tidyverse) library(rstatix) library(ggpubr) 统计分析 stat.test <- iris %>% pivot_longer(-Species) %>% filter(Species !="versicolor") %>% mutate(group=str_sub(na
R语言数据分析指南
2022/09/21
1.6K0
ggplot2优雅对并排条形图添加显著性标记
条形图以及分组条形图
写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。
生信喵实验柴
2022/10/25
6350
条形图以及分组条形图
Pandas绘图功能
可视化是用来探索性数据分析最强大的工具之一。Pandas库包含基本的绘图功能,可以让你创建各种绘图。Pandas中的绘图是在matplotlib之上构建的,如果你很熟悉matplotlib你会惊奇地发现他们的绘图风格是一样的。
用户3577892
2020/11/12
1.8K0
python绘制条形柱状图_Python柱状图
条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长度与它所对应的变量数值呈一定比例。
全栈程序员站长
2022/11/15
2.1K0
python绘制条形柱状图_Python柱状图
Python数据可视化:Matplotlib 直方图、箱线图、条形图、热图、折线图、散点图。。。
使用Python进行数据分析,数据的可视化是数据分析结果最好的展示方式,这里从Analytic Vidhya中找到的相关数据,进行一系列图形的展示,从中得到更多的经验。        强烈推荐:Analytic Vidhya
用户7886150
2021/01/17
1.2K0
条形图、带标签的条形图、有间隙的条形图。
import numpy as np import matplotlib.pyplot as plt labels = ['G1', 'G2', 'G3', 'G4', 'G5'] men_means = [20, 35, 30, 35, 27] women_means = [25, 32, 34, 20, 25] men_std = [2, 3, 4, 1, 2] women_std = [3, 5, 2, 3, 3] width = 0.35 # the width of the ba
裴来凡
2022/05/28
1K0
条形图、带标签的条形图、有间隙的条形图。
matplotlib - matplotlib 教程
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
量子态的沐子呓
2019/12/25
4.7K0
matplotlib - matplotlib 教程
R语言 | 条形图绘制
本次内容介绍条形图的绘制,包括基本条形图、簇状条形图、频数条形图、堆积条形图、百分比条形图。
生信real
2022/03/29
2.3K0
R语言 | 条形图绘制
matplotlib入门
MATlAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、量化金融与风险管理、机器人,控制系统等领域。MATLAB在数值计算方面首屈一指,也是使用最广泛的科研绘图软件之一。优点:编程效率高 便于矩阵计算。缺点:循环效率低 封装性不好。
用户2225445
2022/11/12
4.4K0
matplotlib入门
5个快速而简单的数据可视化方法和Python代码
数据可视化是数据科学家工作的重要组成部分。在项目的早期阶段,你通常会进行探索性数据分析(EDA),以获得对数据的一些见解。创建可视化确实有助于使事情更清晰和更容易理解,特别是对于更大的、高维的数据集。在项目接近尾声时,以一种清晰、简洁和引人注目的方式展示最终结果是非常重要的,这样你的受众(通常是非技术客户)就更加容易理解。
AI算法与图像处理
2019/05/22
2.1K0
【MATLAB】进阶绘图 ( Bar 条形图 | bar 函数 | bar3 函数 | Bar 条形图样式 | 堆叠条形图 | 水平条形图 | barh 函数 )
bar 函数参考文档 : https://ww2.mathworks.cn/help/matlab/ref/bar.html
韩曙亮
2023/03/29
6.1K0
【MATLAB】进阶绘图 ( Bar 条形图 | bar 函数 | bar3 函数 | Bar 条形图样式 | 堆叠条形图 | 水平条形图 | barh 函数 )
归并排序
归并排序
Java架构师必看
2021/04/30
7800
归并排序
归并排序
归并排序将两个有序的排列归并为一个有序的排列。 归并算法都基于归并这个简单的操作,即将两个有序的数组归并成一个更大的有序数组。很快人们就根据这个操作发明了一种简单的递归排序算法:归并排序。要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来:你将会看到,归并排序最 吸引人的性质是它能够保证将任意长度为,的数组排序所需时间和,成正比;它的主要缺点则是它所需的额外空间。简单的归并排序如图所示。
SakuraTears
2022/01/13
5350
归并排序
归并排序
归并排序,采用分治法。首先采用递归,把数组分成一小段有序,然后再把有序的数组一一合并。 首先看看,把有序的二个数组,合成一个的算法。 package day20180406; public class GuibingDem { public static void main(String[] args) { int[] test1= {1,3,5}; int[] test2= {-8,8,16,26,88}; int[] c=new in
热心的社会主义接班人
2018/04/27
8200
点击加载更多

相似问题

熊猫每年DateTimeIndex的大致频率

133

每年的SQL频率计数重置

11

个别事件按每年的频率划分

32

绘图频率表

11

计算值在数据框列中出现的频率

149
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档