x64(学习笔记) - 1(汇编)

要点

  1. 在x64中对32位的寄存器(比如eax,ebx)操作的时候(xor and mov 等)会影响64位的寄存器 。在x64中 mov eax,0x1 和 mov rax,0x1 俩个汇编的相等的 —零拓展
  2. x64寻址和x32寻址不一样 call offset =call goto address - rip
  3. x64中 没有pushad pushaq 有 pushfq(eflags); push cs, push ds 也没有了
  1. vs x64项目使用汇编配置:
    1. 右键项目 -> 生成依赖项 -> 生成自定义 -> 选中masm -> 确定
    2. 右键.asm 属性 -> 项类型选择 Microsoft Macro Assembler
  2. .asm文件
    1. “;”在.asm 中 是注释
    2. 在asm中 16进制不能使用0x12345678 需要使用 12345678h
    3. 注意函数名和汇编指令冲突
    4. 函数名要加上extern_c 用c的规则来生成函数
1
2
3
4
5
6
7
8
.code ; 在代码段
MySub proto; 导入代码中的函数
funcName proc; funcName 函数名
mov rax,rcx
add rax,rdx
ret
funcName endp;函数结束
end;

其他

C++默认导出函数 会有返回值和参数的后缀

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...