gpt4 book ai didi

汇编 "mov"指令

转载 作者:行者123 更新时间:2023-12-04 02:27:21 27 4
gpt4 key购买 nike

我正在通过将 c 程序与其等价的汇编程序进行比较来学习汇编。

这是代码。

.file   "ex3.c"
.section .rodata
.LC0:
.string "I am %d years old.\n"
.LC1:
.string "I am %d inches tall.\n"
.text
.globl main
.type main, @function
main:
pushl %ebp //establish stack frame//
movl %esp, %ebp //move esp into ebp, all contents saved down stack//
andl $-16, %esp //16 from esp for local var space//
subl $32, %esp//stack frame reserving - 32 bytes//
movl $10, 24(%esp)
movl $72, 28(%esp)
movl 24(%esp), %eax
movl %eax, 4(%esp)
movl $.LC0, (%esp)
call printf
movl 28(%esp), %eax
movl %eax, 4(%esp)
movl $.LC1, (%esp)
call printf
movl $0, %eax
leave
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.8.2-19ubuntu1) 4.8.2"
.section .note.GNU-stack,"",@progbits

对于这一行:
movl    $10, 24(%esp)

如果我理解正确,那就是将 10 的值移动到 esp 寄存器中。但是24在做什么呢?我不认为它被移动到 esp 因为要移动的值用“$”表示(我认为)

最佳答案

movl $10,24(%esp)

意思是:将长度为 10 的十进制字面量(4 字节)移动到从( esp 寄存器加十进制 24)指向的地址开始的 4 字节内存位置——基本上它是一个局部变量。

关于汇编 "mov"指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746123/

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