qq_45642161 2022-12-07 20:11 采纳率: 0%
浏览 15

linux64下汇编的long型的大小

问题遇到的现象和发生背景

我初学汇编,我在写linux下的c语言汇编发现一个问题,没搞懂
在linux64下,long型为8字节,想使用movq指令将定义的变量存进寄存器,但发现结果不对,查看内存发现好像是存的是4字节,所以movq指令存了错误的数

img

用代码块功能插入代码,请勿粘贴截图
#(V – (X * Y + Z -540)) /X
.data
X : .long  200
Y : .long  500 
Z : .long  400 
V : .long  790
.text # 代码段声明 
.global _start # 指定入口函数 
_start: 
#X*Y
movq Y, %rax
movq X, %rbx
imulq %rbx 
#?+Z
movq Z, %rcx;
addq %rax, %rcx
#?-540
movq $540, %rax
subq %rax, %rcx
#V-?
movq V, %rax
subq %rcx, %rax
#?/X
movq $0xffffffffffffffff, %rdx #将%edx初始化为符号
idivq %rbx
movl $0,%ebx # 参数一:退出代码 
movl $1,%eax # 系统调用号(sys_exit) 
int $0x80 # 调用内核功能
我的解答思路和尝试过的方法

我也尝试写了个.c文件汇编成.s文件,但太长了看不懂,我猜测是有什么指令会根据系统把long变成8位吗,等大佬

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-12-08 13:22
    关注

    long不一定是8字节

    评论

报告相同问题?

问题事件

  • 创建了问题 12月7日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,