gpt4 book ai didi

linux - 在 32 位系统中对 64 位字的操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:15 25 4
gpt4 key购买 nike

我是新来的,就像我是 assembly 新手一样。我希望你能帮助我开始。我正在使用 32 位 (i686) Ubuntu 使用 gcc 编译器在汇编中编写程序。

我知道通用寄存器最大为 32 位(4 字节),但是当我必须对 64 位数字进行操作时怎么办? Intel 的指令说高位存储在 %edx 中,低位存储在 %eax 中伟大的...那么我该如何处理这个 2-registers 号码呢?我必须将 64 位 dec 转换为 hex,然后将其保存到内存并显示在屏幕上。

如何在程序开头的.data段中生成64位四字?

编辑:当我在 C 中定义全局变量 llu (long long unsigned) 并编译成程序集时:

.data
a:
.long <low bits>
.long <high bits>

是参数在栈中倒着存还是别的原因?

最佳答案

  1. 编写一个简单的 C 程序,使用 long long 数字(有Linux/ix86 上的 64 位)。
  2. 使用 gcc -S t.c 将该程序编译成程序集。
  3. 研究生成的程序集。
  4. 修改您的程序以执行更复杂的操作,然后重复步骤 2 和 3。

经过几次迭代,您应该能够很好地掌握在 assembly 中需要做什么。

关于linux - 在 32 位系统中对 64 位字的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9917096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com