小编And*_*man的帖子

如何从存储器到寄存器3个字节(24位)?

我可以使用MOV指令将存储在内存中的数据项移动到我选择的通用寄存器中.

MOV r8, [m8]
MOV r16, [m16]
MOV r32, [m32]
MOV r64, [m64]
Run Code Online (Sandbox Code Playgroud)

现在,不要拍我,但怎么是下面的实现:MOV r24, [m24]?(我很欣赏后者不合法).

在我的例子中,我想移动字符"Pip",即0x706950h,以注册rax.

section .data           ; Section containing initialized data

14      DogsName: db "PippaChips"
15      DogsNameLen: equ $-DogsName
Run Code Online (Sandbox Code Playgroud)

我首先认为我可以分别移动字节,即首先是一个字节,然后是一个字,或者是它们的某种组合.但是,我不能引用的"顶半" eax,rax,所以这倒下的第一个障碍,因为我最终会在写入任何数据首先被感动.

我的解决方案

26    mov al, byte [DogsName + 2] ; move the character “p” to register al
27    shl rax, 16                 ; shift bits left by 16, clearing ax to receive characters “pi”
28    mov ax, word [DogsName] …
Run Code Online (Sandbox Code Playgroud)

x86 assembly x86-64 instruction-set micro-optimization

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

CSS 定位不使用浮动或边距调整

如何在不使用浮动的情况下将 UL 元素移动到浏览器的右侧,或者通过使用 margin px/% 等工具“猜测”该元素与右边距齐平?

.nav li {
display: inline;
}

.nav h1 {
background-color: red;
display: inline-block;
}

.nav ul {
 display: inline-block;
 border: 1px solid black;
}


 <div class="nav">

        <h1>Resume</h1>
        <ul>
            <li>Home</li>
            <li>Portfolio</li>
            <li>Skills</li>
            <li>Experience</li>
            <li>Contact</li>
        </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

css

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

为什么在向内存地址处的值添加立即数时需要消除歧义

说明除非我们在将立即数添加到存储在内存地址的值时指定大小运算符(例如bytedword),否则NASM 将返回错误消息。

section .data           ; Section containing initialized data

    memory_address: db "PIPPACHIP"

section .text           ; Section containing code

global  _start          ; Linker needs this to find the entry point!

_start:

23            mov ebx, memory_address
24            add [ebx], 32
Run Code Online (Sandbox Code Playgroud)

………………………………………………………………………………………………………………………………………………………… ......

24:  error: operation size not specified. 
Run Code Online (Sandbox Code Playgroud)

公平的公平。

我很好奇为什么会这样。由于以下两段代码将产生相同的结果。

add byte [ebx], 32

或者

add dword [ebx], 32

那么它有什么区别呢?(除了对为什么在这种情况下使用 dword 没有多大意义之外)。仅仅是因为“NASM 这么说”吗?还是这里有一些我缺少的逻辑?

例如,如果汇编程序可以从寄存器名称解密操作数大小,add [ebx], eax那么为什么不对立即值执行相同的操作,即继续并预先计算立即值的大小。

什么要求意味着在将立即值添加到内存地址处的值时需要指定大小运算符?

NASM 版本 2.11.08 架构 x86

x86 assembly nasm

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

NestJS 中间件未执行

从模块连接时,NestJS 类或功能中间件不会运行。它也不适用于单个路径、控制器或每个路径。从 main.ts 连接功能中间件工作正常。

//main.ts
import { ValidationPipe } from '@nestjs/common'
import { NestFactory } from '@nestjs/core'
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'
import { AppModule } from './app.module'

declare const module: any

async function bootstrap() {
  const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter())

  app.useGlobalPipes(new ValidationPipe())

  await app.listen(2100)

  if (module.hot) {
    module.hot.accept()
    module.hot.dispose(() => app.close())
  }
}
bootstrap()
Run Code Online (Sandbox Code Playgroud)
//app.module.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'
import { AuthMiddleware } from './middleware/auth.middleware'
import { UserModule } from './user/user.module' …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript nestjs fastify

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