我的教授。请我在linux下通过NASM X86 64位进行汇编语言编程。
因为,我有Mac与我的程序将需要修改的MacOS,可能是由于系统调用和任何其他原因。
我应该如何复制我的prof.in my macos询问的相同环境?
如果我在我的Macbook中安装linux,它会足够好吗?
如果是,那么"Linux in Windows PC“和"Linux in Mac”在我将要编写的程序方面会有什么区别呢?如果没有,那我该怎么处理呢?
我在学习汇编语言。我从PaulA.Carter的PC Assembly Language开始,它使用NASM ( Netwide )。然后在中间我切换并开始阅读使用MASM的Introduction to 80×86 Assembly Language and Computer Architecture。
在NASM中,我用来编写,用于初始化字节。
db 110101b
在MASM中我正在使用
字节1101b
我在看书。因为这些是汇编程序指令,所以对于每个汇编程序来说,它们是不同的。对吗?这些汇编程序开发人员不遵循这些指令的标准吗?因为,他们知道助记符是CPU特有的。所以,用汇编语言学习
我一直在尝试使用Brendan的 BCC工具来了解更多关于eBPF程序的工作原理。我试图让它打印任务的CGROUP路径。
由于我对Linux系统编程的知识不多,我想我可以使用来自linux/cgroup.h的函数,特别是task_cgroup_path() ,因为我可以将当前的task_struct * (从bpf_get_current_task()获得)传递给它。我使用的是带有CentOS7内核的4.19.59机器。
但是,当我尝试执行修改后的tcptop时,验证器在last insn is not an exit or jmp错误消息中失败。我想弄明白为什么会发生这种事。
以下是修改后的
我开始学习在ubuntu linux上使用NASM汇编程序进行x86_64汇编编程。我遇到的问题之一是找出哪些寄存器被操作神奇地使用。
我正在读的这本书有这样的代码示例:
mov rdi, fmt1
mov rsi, strng
mov rax, 0
call printf
; How am I supposed to know which registers are used by the call to printf?
; The libc printf function supports an arbitrary number of parameters.
;
我正在openacc.org学习OpenaAcc编程指南。本书中广泛使用了大量的嵌套计算区域。但是我的编译器(2017年x86-64 Linux -tp sandybridge上的版本17.4-0 64位目标)写道,我的编译器版本不支持嵌套计算构造。这个版本的编译器真的不支持嵌套计算构造吗?如果是这样的话,如果我需要嵌套计算结构的支持,应该使用哪种编译器?最新版的gcc支持这个选项吗?