我想学习Windows汇编编程。但是我在寻找学习材料时遇到了一些问题。所有我看到的材料都没有足够的编程代码(只展示片段),要么过时,要么只是理论。
我想学习Windows汇编编程。但是我在寻找学习材料时遇到了一些问题。所有我看到的材料都没有足够的编程代码(只展示片段),要么过时,要么只是理论。
大部分汇编语言编程,特别是在像Windows这样的完整操作系统环境下,通常只需要编写一些代码片段而不是完全使用汇编程序。最简单的方法是编写一个C程序作为测试框架,然后让它调用你的汇编语言函数。以下是一个简单的示例:
asm.s:
.text
.globl _asm_add
_asm_add:
mov %rdi, %rax
add %rsi, %rax
ret
example.c:
#include <stdio.h>
int asm_add(int, int);
int main(int argc, char **argv)
{
int a = 12;
int b = 6;
int c = asm_add(a, b);
printf("%d + %d = %d\n", a, b, c);
return 0;
}
在我的Mac上使用clang进行构建和运行(在Windows上修改为您的编译器):
$ clang -o example example.c asm.s
$ ./example
12 + 6 = 18
rdi
和rsi
为rcx
和rdx
之后)。 - Carl Norum获取最重要的是英特尔手册(其他制造商如AMD也会有自己的手册,但指令非常相似):
http://www.intel.com/products/processor/manuals/
这些都包含了指令、费用以及一些编程指南。