小编old*_*mer的帖子

C++指针访问类似于程序集

有时我在C++中看到不同的数组访问样式,并认为它可能与程序集寻址模式有关:

C++:

int * aa=new int[2];
0[aa]=15; //a little different than aa[0]
1[aa]=15;
aa[0]=15;
aa[1]=15;
printf("%d %d \n",aa[0],aa[1]);
Run Code Online (Sandbox Code Playgroud)

部件:

__asm
{
    mov aa[0],ebx
    mov aa[1],eax
    mov 0[aa],ebx
    mov 1[aa],eax
}
Run Code Online (Sandbox Code Playgroud)

这个C++数组访问符号是标准吗?如果是,它是从汇编寻址模式派生的吗?

当我尝试时[aa]1=5;,编译器给出

  • "找不到属性",
  • "失踪 ';' 在'常数'之前
  • "左操作数必须是l值".

    //当我尝试指针算术时,

    *(aa + 1)= 0 //没有错误

    *(aa + 0)= 0 //没有错误:)

对于运算符[]重载,此规则是否相同?

MSVC++ 2010

谢谢.

c++ arrays assembly pointers

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

程序集登录程序始终返回错误的密码

我正在开发一个汇编程序,它将接受用户输入并根据变量进行检查,但由于某种原因,此代码将始终说密码输入不正确.请注意,我没有包含一些调用的代码,但我确信它们确实有效,因为我在许多其他示例中都完美地使用了它们.基本上,我需要知道为什么这会拒绝认识我的输入和字符串匹配.任何帮助是极大的赞赏.

start:
mov ax, login_input
mov bx, login_message
call os_input_dialog     ;opens a dialog box that shows the string login_message,
                                  ;then it takes user input andd stores it in ax

mov si, login_input      
mov di, password
cmp si, di                    ;compares input against the password
je app_selector            ;if equal, jump to the next part of code

jmp start                     ;otherwise try again


login_input               times 12 db 0
login_message            db 'Password: '
password                    db 'root'
Run Code Online (Sandbox Code Playgroud)

x86 assembly compare login

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

尝试为Azure ARM模板创建动态Depends On Array

我正在尝试在这样的ARM模板配置中创建动态DependOn属性

  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2017-05-10",
  "dependsOn": [],
Run Code Online (Sandbox Code Playgroud)

我确实有需要dependOn的场景.所以我正在创建一个变量,如果资源需要这种类型的数据作为依赖项,它会动态地将数据添加到数组中.

例如,如果我在参数部分中设置参数以将可用性设置为true,则我的虚拟机可能依赖于可用性集.

到目前为止,唯一的方法是根据真/假答案调用动态变量(数组),如下所示:

变量(CONCAT( 'Dependon_AS _',参数( 'IncludeAS'))

有没有更好的方法来处理这个?

arrays json azure azure-resource-manager azure-rm-template

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

如何识别内存中的汇编"调用"指令?

如何在进程的可执行存储器中区分组装"调用"指令(E8 [地址])与其他E8字节(例如,在另一条指令中间的那个)的操作码?(从C语言的角度来看,最好)

是否足以验证E8字节之后的四个字节是否引用有效地址,然后验证该区域(即被调用函数的开始)是否以对应于操作码"push ebp"和"mov ebp"的字节开头,esp"(大多数功能都使用这个序幕)?或者是否有更好的选择,例如检查从入口点到出口点的每个操作码?

顺便说一句,我对这个主题几乎没有经验,所以任何信息都值得赞赏.

谢谢!

debugging x86 assembly low-level disassembly

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

为什么x86-64 System V调用约定在寄存器而不是堆栈中传递args?

为什么32位C将所有函数参数直接推送到堆栈上,而64位C将前6个参数放入寄存器而其余的放在堆栈中?

所以32位堆栈看起来像:

...
arg2
arg1
return address
old %rbp
Run Code Online (Sandbox Code Playgroud)

虽然64位堆栈看起来像:

...
arg8
arg7
return address
old %rbp
arg6
arg5
arg4
arg3
arg2
arg1
Run Code Online (Sandbox Code Playgroud)

那么为什么64位C会这样做呢?将所有内容都推送到堆栈而不是将前6个参数放在寄存器中以便将它们移动到函数序言中的堆栈中是不是更容易?

assembly gcc x86-64 calling-convention

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

基于 Azure ARM JSON 的变量标签

我们使用以下模板通过 ARM 模板部署多个资源组:

"parameters": {
    "ResourceGroups": {
          "type": "array",
          "defaultValue": [
            "RG1",
            "RG2",
            "RG3"
          ]
        }
    "resources": [
          {
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[parameters('rgLocation')]",
            "name": "[parameters('ResourceGroups')[copyIndex()])]",
            "copy": {
              "name": "resourcegroupcopy",
              "count": "[length(parameters('ResourceGroups'))]",
              "mode": "serial"
            },
"properties": {},
        "tags": {}
Run Code Online (Sandbox Code Playgroud)

我们还希望在这些资源组上编写 Azure 标记脚本。然而,问题是,并非我们创建的所有资源组都需要相同的标签。它们因资源组而异。

例如:RG1 需要 Tag1,RG2 需要 Tag2,等等。

我如何将其放入我的脚本中?

任何人都可以指出我正确的方向吗?

谢谢!

json azure azure-resource-manager azure-rm-template

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

使用裸机服务器开始使用 docker swarm

所以我已经有了dockerhub可以使用的图像,因为我已经在服务器上设置了一个 kubernetes 集群。我的下一步是使用 docker swarm 实现类似的功能。我真的不知道如何开始,所以我在这里问。

kubernetes 集群在 a 上运行,bare metal ubuntu VPS server如下所示:

在此处输入图片说明

我的问题是:

如何在bare metal ubuntu VPS. 我没有发现太多,是否有任何需要注意的重大更改(类似于metalLBkubernetes 集群中的更改)?

docker kubernetes docker-swarm bare-metal-server

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

嵌入式系统的 unsigned int 在哪里定义?

使用arm-none-eabi-gcc工具链。

在使用-nostdlib链接器中的选项进行ARM 开发期间,我可以使用 unsigned int、int 等。但是uint8_t我必须使用 --specs=nano.specs,因为它们在 newlib 标准库中。

那么是如何unsigned int解决的呢?

我一直在使用 IDE 进行 ARM 开发。因此不知道底层的东西是如何工作的。当我遇到这些疑问时,我正在学习一些裸机教程。

谢谢你。

c embedded arm bare-metal

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

调用int 10h时bl的值

我正在尝试编写一个引导扇区,将字符串打印到屏幕上。我正在使用 nasm。我的教程说,当调用 int 10h 时,您已将值 07h 放入 bl 中。这是文本的颜色。我尝试将 bl 的值更改为 08h 但它没有打印任何内容!所以我尝试将其更改为06h,但仍然没有任何结果!是否可以使用 bl 中的值更改颜色?如果是这样,什么值与什么颜色相匹配?

如果我更改 ah 中的值,int 10h 会执行其他操作(例如将文本扫描到 al 中)吗?

x86 assembly

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

ASR上的SHR是什么意思

SHR意味着我很困惑,

SHR CL, 1
Run Code Online (Sandbox Code Playgroud)

最初CL是0x2ASHR之后就成了0x15.

SHR 42,1 = 21

x86 assembly

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