小编Luc*_*nis的帖子

什么是ESP和EBP寄存器?

我发现ESP寄存器是当前的堆栈指针,而EBP是当前堆栈帧的基本指针.但是,我不明白这些定义(我刚开始学习如何在汇编程序中编写代码).

据我所知,ESP指向堆栈本身,EBP指向堆栈顶部的任何东西.但这些只是我的猜测而且很可能是不正确的.否则,如下所述的声明是什么意思?

MOV EBP, ESP    
Run Code Online (Sandbox Code Playgroud)

编辑:我认为上面的陈述是我书的错字.我认为它应该是EBX而不是EBP

x86 assembly callstack stack-frame

33
推荐指数
4
解决办法
5万
查看次数

使用nohup调用时,为什么以下bash脚本无法正常工作?

像下面这样的脚本:

#!/bin/bash

function hello {

        echo "Hello World"

}

hello
Run Code Online (Sandbox Code Playgroud)

会工作正常,但当我用nohup称呼它

nohup ./myScript.sh 
Run Code Online (Sandbox Code Playgroud)

该脚本不再有效,并打印以下内容:

./myScript.sh: 5: ./myScript.sh: function: not found
Hello World
./myScript.sh: 9: ./myScript.sh: Syntax error: "}" unexpected
Run Code Online (Sandbox Code Playgroud)

我知道使用nohup这个脚本是没有意义的,因为它运行得相当快,但我有另一个脚本需要几个小时才能运行,我已经在其中使用了该函数语法.有没有办法来解决这个问题?

bash shell nohup

3
推荐指数
1
解决办法
1066
查看次数

标准化数组是什么意思?

我需要将包含0到1024之间的值的数组标准化为包含0到255之间的值的数组。我正在用Java执行此操作,但我想了解“标准化数组”而不是要求确切的代码到底意味着什么。

java arrays normalize

2
推荐指数
1
解决办法
1万
查看次数

如何将python程序插入bash脚本?

我有一个小的python程序,它解析文本文件并将输出写入另一个文件.目前,我正在写一个bash脚本来多次调用这个程序,它看起来像:

for i in $(seq 1 100); do

          python /home/Documents/myProgram.py myTextFile$i

done
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想知道是否有可能在bash脚本文件中包含python程序,所以当另一个用户运行脚本时,他们不需要在他们的内存中有python程序; 即,是否可以将python程序复制并粘贴到bash脚本中并从脚本本身运行?

python bash heredoc

2
推荐指数
2
解决办法
1135
查看次数

有没有一种算法可以手动将十六进制的二进制补码转换为十进制?

假设我有十六进制 A41B 的二进制补码形式,我想将其转换为十进制。通常,我会将其转换为二进制,翻转所有位,加一,然后将其转换为十进制并输入正确的符号(正数或负数)。有没有更快的方法来手动完成此操作?

binary hex

1
推荐指数
1
解决办法
1万
查看次数

以下用于添加到内存引用的字节说明符在 NASM 汇编器中有什么作用?

以下代码

section .data

Snippet db "KANGAROO"

section .text

global_start

_start:

mov ebx, Snippet
add byte [ebx], 32
Run Code Online (Sandbox Code Playgroud)

将 32 添加到 BX 中的内存地址所指的数字。但是,add 后的字节说明符是什么?我的书说这意味着我们只向 EBX 中的内存地址写入一个字节。但我不太明白这意味着什么(我是汇编程序的初学者)。将一个字节写入内存地址是什么意思?写入多于一个字节是什么意思?

assembly nasm

0
推荐指数
1
解决办法
1715
查看次数

对 linux 进行 sys_read 系统调用会在寄存器 eax 中放入什么?

当在汇编器中进行系统调用sys_read(int80h,eax中的值为3)时,调用后寄存器eax中将存储什么?是读取的字符串中的字符数吗?

assembly nasm

0
推荐指数
1
解决办法
6538
查看次数

有没有办法计算寄存器使用NASM保存的字节数?

假设寄存器EAX仅保持字符'a',因此AL将保持61(此数字为十六进制,61为'a'的ASCII值).有没有办法使用NASM知道EAX只保存1个字节的数据?我想将这个号码存储在另一个寄存器中,比如EBX,并做类似的事情

cmp EBX, 1 je do_something_if_EAX_has_1_byte

编辑:正如其中一个答案所述,我的问题更好的名称是:"如何判断EAX存储的值是否可以用1个字节表示?"

assembly nasm

0
推荐指数
1
解决办法
480
查看次数

标签 统计

assembly ×4

nasm ×3

bash ×2

arrays ×1

binary ×1

callstack ×1

heredoc ×1

hex ×1

java ×1

nohup ×1

normalize ×1

python ×1

shell ×1

stack-frame ×1

x86 ×1