小编Sai*_*ire的帖子

如何将Linux内核去优化并使用-O0进行编译?

我想阅读并理解Linux内核的内存管理(特别是defrag\compaction\migration).

所以,我关闭了大小的优化.config(当然使用make menuconfig)并编译...这让我仍然是一个优化的内核.

注意:当我说优化内核时,我的意思是当我使用gdb并告诉它next它会跳转时.我不希望这样,我希望能够像一个简单的hello世界一样逐行地遵循代码.

接下来,我编辑Makefile并交换-O2,-O0这会导致事情中断.

我发现了这个,但我不知道我想要什么文件,因为我不知道兔子洞到底有多远.

我可以使用更通用的选项吗?我理解内存压缩的概念; 但是,我希望看到一切发生的地方以及它是如何发生的.

linux debugging gdb kernel linux-kernel

11
推荐指数
1
解决办法
3512
查看次数

Linux Assembly x86_64使用命令行参数创建文件

我正在努力教自己装配.我找到了一个很好的网站 ; 但是,一切都是为x86编写的,我使用的是64位机器.

我知道问题是什么,但我不知道如何解决它.如果我用strace运行程序,那么结果如下:

execve("./file", ["./file", "hello"], [/* 94 vars */]) = 0
creat(NULL, 0)                          = -1 EINVAL (Invalid argument)
write(0, NULL, 0 <unfinished ...>
+++ exited with 234 +++
Run Code Online (Sandbox Code Playgroud)

所以,我知道当我调用时creat,文件名"hello"没有被传递,因此我没有文件描述符.

这是有问题的代码:

section .text
  global _start

_start:
  pop rbx ; argc
  pop rbx ; prog name
  pop rbx ; the file name

  mov eax,85 ; syscall number for creat()
  mov ecx,00644Q ; rw,r,r
  int 80h ; call the kernel 
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用syscall命令; 但是,我想使用中断.

任何想法或建议都会有所帮助.另外,我正在使用nasm一个汇编程序.

linux assembly x86-64

1
推荐指数
1
解决办法
750
查看次数

标签 统计

linux ×2

assembly ×1

debugging ×1

gdb ×1

kernel ×1

linux-kernel ×1

x86-64 ×1