问题描述
我正在尝试模仿sizeof
中C
中x86-assembly
中push
的行为,即从push
操作开始以字节为单位打印推入堆栈的数据大小使用write
系统调用指向当前堆栈指针(在edp
操作之后)。
我正在尝试通过在push
操作之前将堆栈指针的内存地址存储到ebp - esp
寄存器/基址指针中来实现这一点。然后减去eax
的值并在push
操作之后存储在eax
中。最后,我将stdout
整数值打印到section .text
global _start
_start:
; set the frame pointer to the beginning of the stack before-
; data is pushed.
mov ebp,esp
push byte 0x00 ; <- null terminating byte/string truncation
push 0x64636261 ; <- data
mov eax,ebp
sub eax,esp ; start of stack - end of stack = sizeof(data) stored in eax
mov edx,4
mov ecx,eax
mov ebx,1
mov eax,4
int 0x80
mov eax,1
int 0x80
例如:
nasm -f elf32 -g test.asm && ld -melf_i386 test.o -o test
编译为:
5
编译此代码时,我没有收到标准输出。
预期的标准输出是:
eax
我缺少什么或做错了什么?如何正确将字符串的大小(以字节为单位)存储在stdout
中,并将整数/大小打印为<div x-data="modal()" class="mt-6" x-cloak>
<template x-on:show-modal.window="isOpenModal = $event.detail.show; modalHeader = $event.detail.modalHeader; modalData = showData($event.detail.modalData); "></template>
<div class="absolute z-50 top-0 left-0 w-full h-full flex items-center justify-center bg-black bg-opacity-50" x-show="isOpenModal">
<div class="z-50 text-left bg-gray-200 px-4 shadow-xl rounded-lg mx-2 md:max-w-lg md:p-6 lg:p-8 md:mx-0 h-auto " >
<div class="flex justify-between">
<h2 id="modalHeader" class="text-2xl" x-text="modalHeader"> </h2>
</div>
<div class="w-full border border-gray-600 mt-4" ></div>
<div id="modalContent" class="text-lg w-auto" > </div>
</div>
</div>
</div>
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)