希望这不是一个愚蠢的问题,但我试图围绕汇编指针.
究竟有什么区别:
mov eax, ebx
Run Code Online (Sandbox Code Playgroud)
和
mov [eax], ebx
Run Code Online (Sandbox Code Playgroud)
何时应该dword ptr [eax]使用?
另外,当我尝试这样做时,mov eax, [ebx]我得到一个编译错误,为什么会这样?
我有一个批处理文件,它接受可变长度的变量.例如输出是这样的:
%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)
因为前两列的长度不同,所以输出会查看所有位置.批处理文件中是否有任何方法使列对齐?我做了一些研究,看起来有一种方法可以通过用空格填充一堆字符来实现它吗?但这似乎不起作用?还有其他办法吗?
我有一个包含成千上万种不同文件类型的文件夹。我想将它们全部复制到一个新文件夹(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)
谢谢!
伪代码如下:
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块之后执行它,那么我的初始化阶段将把垃圾数据放入那些寄存器,因为栈不会有任何数据(它实际上可能只是崩溃,因为在开始时没有堆栈)....
它对我来说是一种鸡肉和鸡蛋的情况....任何提示?
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()拒绝打开它们。
编辑:请忽略这个问题.我意识到我是一个白痴,非常友好和乐于助人的人指出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)