【发布时间】:2012-03-28 23:03:59
【问题描述】:
如果能解释一下使用 printf、nasm 和 gcc 编译的以下示例中发生了什么,我将不胜感激。 为什么“sud”只印在屏幕上?我也不明白,为什么当我将“push 'sud'”与“push 'sudo'”交换时,屏幕上会显示“sudobor”? 有人可以解释一下为什么我需要推动 esp 吗?它是一个空值,它必须位于 printf 中字符串的末尾吗? 提前谢谢。
这是 string.s 文件:
section .data
section .text
global start
extern printf
start:
push ebp
mov ebp, esp
push 'bor'
push 'sud'
push esp
call printf
mov esp, ebp
pop dword ebp
ret
这是c文件:
#include <stdio.h>
#include <stdlib.h>
extern void start();
int main(void) {
start();
}
【问题讨论】: