![]() |
1
3
它看起来像MASM语法,而不是NASM语法。如果您知道NASM语法,那么移植到NASM就足够简单了,但这超出了SO的范围。看见 the manual 、和 x86 标记wiki。 JWasm 是一个可移植的MASM语法汇编程序,但要注意ABI的差异。这可以避免移植到NASM语法的麻烦,但不能将Windows API/库调用移植到Linux系统调用/库调用。 如果您从C进行所有的I/O和其他系统调用,并在asm函数中进行数据处理,那么就可以了(除了调用Windows和SystemVABI之间的约定差异)。
但是,如果您有直接使用WindowsAPI/库函数的asm函数,则会更加复杂。Linux上不存在这些API(除非我们讨论的是C99标准库函数,如
理论上,您可以在
在这种情况下,您可以执行以下操作:
我刚删除
如果只想将AND掩码加载到寄存器中(在循环之前),而不是直接从内存中使用它,那么应该考虑
generating it on the fly
具有
在64位代码中,SystemVABI(在Linux上使用)与Windows不同,因此,如果您书中的64位示例使用Windows调用约定,您必须处理这一点。你可以用
32位SysVABI使用的调用基本上与Window兼容,所有参数都在堆栈中。IDK,如果它完全不同,例如对于struct返回。 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
masec · 是否将EAX复制到RAX高位? 7 年前 |
![]() |
Pushpam Kumar · 从可利用程序运行时出现外壳代码分段错误 7 年前 |
![]() |
RTC222 · CTypes返回值错误 7 年前 |
![]() |
SeanRamey · 汇编指令中冒号(:)的含义未知 7 年前 |
![]() |
Lynx · Ubuntu 16.04服务器amd64安装失败 7 年前 |