小编Dux*_*uxa的帖子

x86程序集指针

希望这不是一个愚蠢的问题,但我试图围绕汇编指针.

究竟有什么区别:

mov eax, ebx
Run Code Online (Sandbox Code Playgroud)

mov [eax], ebx
Run Code Online (Sandbox Code Playgroud)

何时应该dword ptr [eax]使用?

另外,当我尝试这样做时,mov eax, [ebx]我得到一个编译错误,为什么会这样?

x86 assembly pointers

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

将批输出对齐到列中

我有一个批处理文件,它接受可变长度的变量.例如输出是这样的:

%name% - %size% - %percentage% - %percentMIN% - %percentMAX%
%name% - %size% - %percentage% - %percentMIN% - %percentMAX%
%name% - %size% - %percentage% - %percentMIN% - %percentMAX%
%name% - %size% - %percentage% - %percentMIN% - %percentMAX%
%name% - %size% - %percentage% - %percentMIN% - %percentMAX%
Run Code Online (Sandbox Code Playgroud)

因为前两列的长度不同,所以输出会查看所有位置.批处理文件中是否有任何方法使列对齐?我做了一些研究,看起来有一种方法可以通过用空格填充一堆字符来实现它吗?但这似乎不起作用?还有其他办法吗?

text cmd batch-file alignment

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

如何递归地复制文件,重命名文件但在Bash中保留相同的扩展名?

我有一个包含成千上万种不同文件类型的文件夹。我想将它们全部复制到一个新文件夹(Copy1),但也将它们全部重命名为$ RANDOM,但保留扩展名不变。我意识到我可以写一行指定要查找的扩展名和命名方式,但是必须有一种动态地进行扩展的方法,因为至少有100种文件类型,将来可能还会更多。

到目前为止,我有以下内容:

find ./ -name '*.*' -type f -exec bash -c 'cp "$1" "${1/\/123_//_$RANDOM}"' -- {} \;
Run Code Online (Sandbox Code Playgroud)

但这会将随机数放在扩展名之后,并且还将所有数字都放在同一文件夹中。我不知道如何做以下两件事:

1-保留所有路径,但将其保留在新的根文件夹中(Copy1)

2-如何将名称命名为$ RANDOM.extension,而不是.extension。$ RANDOM

PS-$ RANDOM是指实际随机生成的数字。我对保持文件夹结构感兴趣,因此每个目录最多只能处理数百个文件,但是所有目录/文件都需要重命名为$ RANDOM。查看我需要做什么的另一种方法。将所有内容或Folder1及其所有子目录和文件复制到Folder2(其中Fodler2是$ RANDOM名称),然后将所有文件夹和文件重命名为随机名称,但保留所有扩展名。

编辑:好的,我想出了如何重命名和保留扩展名。但是我有一个问题,它会将所有文件都转储到运行脚本的根目录中。如何将它们保存在各自的文件夹中?我使用的命令是:

find ./ -name '*.*' -type f -exec bash -c 'mv "$1" $RANDOM.${1##*.}' -- {} \;
Run Code Online (Sandbox Code Playgroud)

谢谢!

bash find cp

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

x86汇编如何在递归中保持更新的变量?

伪代码如下:

function(param1, param2, param3)

mov eax, param1
mov ebx, param2
mov ecx, param3

//a bunch of stuff is done here
//I need to call recursevely so I can do

dec ebx //ebx--
inc ecx //ecx++

push ecx
push ebx
push eax

call function //Needs to call itself with decremented/incremented values

mov edi, eax

pop eax
pop ebx
pop ecx
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我以递归方式调用函数mov时,如果我在mov块之前从堆栈中复制它们,那么在开始时初始化所需的指令将覆盖修改后的值.相反,如果我在mov块之后执行它,那么我的初始化阶段将把垃圾数据放入那些寄存器,因为栈不会有任何数据(它实际上可能只是崩溃,因为在开始时没有堆栈)....

它对我来说是一种鸡肉和鸡蛋的情况....任何提示?

recursion x86 assembly stack

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

如何以编程方式将Linux符号链接移动到C中的其他文件系统(副本)?

named()C函数在整个文件系统中均不起作用。因此,我可以通过打开副本,读取它们并将它们写入新副本然后取消链接来通过副本移动文件。但是我很难使它与符号链接一起使用。(这个想法是移动一个文件夹,其中包含一堆其他文件/文件夹/符号链接等)。基本上在C中实现mv命令。

open(file, O_RDONLY)
while ((c = read(source_descriptor, buf, SIZE)) > 0){
        write(d, buf, c);
}
unlink file;
Run Code Online (Sandbox Code Playgroud)

适用于普通文件(我还有另一个功能可以正常处理目录)。但是每当它到达一个符号链接时,我都会感到恐惧,吐出这样的文件或目录

我可以通过d_type来检测它是否是一个符号链接,但是我不确定一旦有符号链接就如何读取/复制它,因为普通文件复制似乎不适用于符号链接,因为open()拒绝打开它们。

c symlink

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

包括iostream中断uint32_t定义(C)

编辑:请忽略这个问题.我意识到我是一个白痴,非常友好和乐于助人的人指出iostream不是C而是C++库.

我遇到了一个非常奇怪的问题.

我有一个完全工作的程序(大约1000行).我需要

#include <iostream> 
Run Code Online (Sandbox Code Playgroud)

当我这样做时,uint32_t的typedef会中断.

它被定义为这样

typedef unsigned __int32 uint32_t;
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2017.这是它给出的错误

\ vc\tools\msvc\14.15.26726\include\cstdlib(19):错误C2061:语法错误:标识符'noexcept'

当我将鼠标悬停在现在的下划线uint32_t时,会出现以下情况:

uint32_t变量"uint32_t"不是类型名称

评论这条线

#include <iostream>
Run Code Online (Sandbox Code Playgroud)

该程序按预期编译和运行.

是什么赋予了?

边题.我使用uint32_t的原因是为了保证我的变量是32位长,因为我正在进行大量的位操作.使用unsigned int会安全吗?

这是我包括的所有内容的列表:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iostream>

typedef unsigned __int32 uint32_t;
Run Code Online (Sandbox Code Playgroud)

c iostream uint32-t

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

标签 统计

assembly ×2

c ×2

x86 ×2

alignment ×1

bash ×1

batch-file ×1

cmd ×1

cp ×1

find ×1

iostream ×1

pointers ×1

recursion ×1

stack ×1

symlink ×1

text ×1

uint32-t ×1