我是新来的,因为我是装配新手。我希望你能帮助我开始。 我正在使用32位(i686)Ubuntu使用gcc编译器在程序集中编写程序。
我知道通用寄存器最大为32位(4字节),但是当我必须操作64位数时呢?英特尔的指令称较高位存储在%edx中,较低位存储在%eax中 大... 那么我怎么能用这个2寄存器号做点什么呢?我必须将64位十进制转换为十六进制,然后将其保存到内存并显示在屏幕上。
如何在.data部分的程序开头制作64位四字?
编辑: 当我在C中定义全局变量llu(long long unsigned)并编译为汇编时,它做了:
.data
a:
.long <low bits>
.long <high bits>
这是因为参数会向后保存在堆栈中还是更多?
答案 0 :(得分:3)
long long
个数字的简单C程序(具有
Linux / ix86上的64位)。gcc -S t.c
将该程序编译为程序集。经过多次迭代后,您应该能够很好地处理组装中需要做的事情。
答案 1 :(得分:0)
当我在C中定义全局变量llu(long long unsigned)并编译为汇编时,它做了:
.data
a:
.long <low bits>
.long <high bits>
这是因为参数会向后保存在堆栈中还是更多?