装配基础知识(NASM)
Assembly basics (with NASM)
我对C/C++有一定的了解,但我想扩展我的武器库,因此我决定学习汇编...只是我喜欢可以编译的低级语言(我不会像 python 之类的……没有冒犯)。
无论如何,我有一些与组装相关的问题。我搜索了很长时间,但显然所有资源都已经过时了。所以,这里是:-
- 学习汇编首选 OS 哪个? Windows 或 Linux?
- 我决定使用 NASM,因为与其他语法相比,我更喜欢它的语法。我不是宏的真正粉丝,我想学习裸机基础知识。我不明白的是:
在windows中我必须使用push和pop等,而在Linux中我可以使用mov和访问寄存器?我真的更喜欢后一种方法,所以这是 OS 选择的一个重要考虑因素。 另外,在 Windows 中没有足够的学习 material 组装所以它相当令人困惑。特别是因为我希望开始 64 位架构。
- 我不打算使用 MASM 或 FASM,因为它们都是基于宏的,而且我对 NASM 语法感到满意。
- 最后,有人可以推荐一些免费的电子书或指南来学习汇编吗? Linux 或 Windows 并不重要,因为我也可以将虚拟框用于 linux。
感谢您的帮助:)
此致,
伊莱克斯
- 汇编指令通常是基于芯片架构的,而不是特定于平台的。也就是说,平台可以定义函数调用接口标准(基于寄存器、基于堆栈、混合)。所以 Linux 将不同于 Mac OSX(这只是 Sys V 约定的传递)。
- NASM 很好,但宏是您的朋友。我也先学习了基础知识,现在我很高兴在生成可重复的结构时使用宏来节省我的精力。
- 作为#2 的一部分,
push
、pop
和 mov
变体是基于 Intel 和 AMD 的指令,它们各有用途,并不相互排斥。在其他芯片架构(如ARM等)上也有类似的。
- 如果您正在使用 Dosboxing,请在 google 中找到任何 x86 或 x86_64 参考资料,您会发现大量的信息和指导性资源。
Which is the preferred OS for learning Assembly? Windows or Linux?
我只在使用 Assembly 时使用过 Linux。你也可以用 Windows 来做,但是 Linux 是不那么痛苦的方法。
In windows, I have to use push and pop, etc. while in Linux I can use mov and access registers? I really prefer the latter method so that's an important consideration on OS choice.
push和pop处理栈上的东西,mov主要处理寄存器。无论 OS 都被使用。程序集的类型与处理器架构(它使用的指令)有关,而不是操作系统本身。
Finally, could someone suggest me some free E-books or guides to learn Assembly? It doesn't really matter if Linux or Windows since I can use virtual box for linux as well.
Here's a link to the book I used throughout my University course.
祝你好运!
我对C/C++有一定的了解,但我想扩展我的武器库,因此我决定学习汇编...只是我喜欢可以编译的低级语言(我不会像 python 之类的……没有冒犯)。 无论如何,我有一些与组装相关的问题。我搜索了很长时间,但显然所有资源都已经过时了。所以,这里是:-
- 学习汇编首选 OS 哪个? Windows 或 Linux?
- 我决定使用 NASM,因为与其他语法相比,我更喜欢它的语法。我不是宏的真正粉丝,我想学习裸机基础知识。我不明白的是: 在windows中我必须使用push和pop等,而在Linux中我可以使用mov和访问寄存器?我真的更喜欢后一种方法,所以这是 OS 选择的一个重要考虑因素。 另外,在 Windows 中没有足够的学习 material 组装所以它相当令人困惑。特别是因为我希望开始 64 位架构。
- 我不打算使用 MASM 或 FASM,因为它们都是基于宏的,而且我对 NASM 语法感到满意。
- 最后,有人可以推荐一些免费的电子书或指南来学习汇编吗? Linux 或 Windows 并不重要,因为我也可以将虚拟框用于 linux。
感谢您的帮助:)
此致,
伊莱克斯
- 汇编指令通常是基于芯片架构的,而不是特定于平台的。也就是说,平台可以定义函数调用接口标准(基于寄存器、基于堆栈、混合)。所以 Linux 将不同于 Mac OSX(这只是 Sys V 约定的传递)。
- NASM 很好,但宏是您的朋友。我也先学习了基础知识,现在我很高兴在生成可重复的结构时使用宏来节省我的精力。
- 作为#2 的一部分,
push
、pop
和mov
变体是基于 Intel 和 AMD 的指令,它们各有用途,并不相互排斥。在其他芯片架构(如ARM等)上也有类似的。 - 如果您正在使用 Dosboxing,请在 google 中找到任何 x86 或 x86_64 参考资料,您会发现大量的信息和指导性资源。
Which is the preferred OS for learning Assembly? Windows or Linux?
我只在使用 Assembly 时使用过 Linux。你也可以用 Windows 来做,但是 Linux 是不那么痛苦的方法。
In windows, I have to use push and pop, etc. while in Linux I can use mov and access registers? I really prefer the latter method so that's an important consideration on OS choice.
push和pop处理栈上的东西,mov主要处理寄存器。无论 OS 都被使用。程序集的类型与处理器架构(它使用的指令)有关,而不是操作系统本身。
Finally, could someone suggest me some free E-books or guides to learn Assembly? It doesn't really matter if Linux or Windows since I can use virtual box for linux as well.
Here's a link to the book I used throughout my University course.
祝你好运!