标签: assembly

作为环 0 运行汇编程序

我正在编写一个应用程序,它报告 CPU 温度传感器和风扇速度监视器的读数。不过,根据Intel关于PECI的文档,所需的指令必须运行在ring 0模式,即内核模式,否则会抛出异常。

我在网上遇到了从保护模式转换到内核模式的代码,但是没有从用户模式转换到内核模式的代码,而且我读到它被内核禁止了。是否有解决方法,希望不需要修补内核,以允许最初处于用户模式的程序作为内核模式运行?

linux-kernel assembly

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

你怎么称呼`int 0x80`背后的调用约定?

我知道有一个syscall约定,但是您在调用之前看到的调用约定是什么,int 80而不是syscall像这样调用。

mov  rax,4     ; system call number (sys_write)
mov  rbx,1     ; file descriptor (stdout)
mov  rcx,hello ; message to write
mov  rdx,12    ; message length
int  0x80      ; call kernel
Run Code Online (Sandbox Code Playgroud)

在这里读到后面的参数rdxesi, edi, ebp(或对于 x64 rsi, rdi, rbp),我没有看到它记录在Wikipedia 的调用约定页面中,但是int80h似乎表明 Windows 也使用这个约定?

这是什么约定俗成的名字。我可以在 Linux 内核源代码中的哪个位置看到它的定义?并且,rax当您调用时解析为过程的表在哪里int 0x80?对于syscallsys_writerax=1

linux kernel conventions assembly

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

构建内核模块时 obj-m 列表中的程序集文件

我正在尝试将 kexec 构建为一个模块,但遇到了一个奇怪的问题。我的 obj-m 是:

obj-m += kexec.o machine_kexec.o relocate_kernel.o

当我运行 makefile 时,它​​抱怨说“没有规则可以制作 relocate_kernel.o 需要的目标 relocate_kernel.c”

我应该如何告诉它包含程序集文件?我查看了内核 Makefile,虽然我对它们不是很好,但似乎确实存在 .S > .o 的规则。我错了吗?

kernel make kernel-modules assembly

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

任何 x86-64 Linux 汇编程序?

我想开始学习汇编语言,但所有的谷歌搜索都没有任何意义。我得到了一些Exec format error甚至使用过wine,这不利于理解。所以我想知道是否有人可以告诉命令行汇编程序将在x86-64架构上做什么,可能还有一些 Linux 的 hello world 示例?

linux development x86 assembly

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

为什么可执行文件称为“文本文件”?

在今天更新软件的过程中,我收到错误“文本文件繁忙”,这让我想知道:为什么 Unix(或 Linux)可执行文件被称为“文本”文件,而这看起来如此违反直觉和令人困惑?这背后的历史是什么?我猜可能与汇编程序的“文本”部分有关,但为什么将称为“文本”?

executable history assembly

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

在自定义处理器上运行 linux 内核和 Ubuntu

这几乎不是一个理论问题,因为许多人已经这样做了,尽管关于底层过程的信息很少。

我正在开发一个基于 MIPS 的自定义处理器,我想在其上运行 Ubuntu。在您设计了指令集和计算机体系结构本身之后,我对接下来要做什么感到非常困惑。我需要能够运行内核和操作系统,但它们是如何联系在一起的?

目前我正在研究为 Linux 内核设计一个编译器来生成合适的汇编语言。这是一个好方法吗?之后我需要做什么?

linux kernel development mips assembly

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

链接器和加载器的存在是否不依赖于 Linux 等操作系统?

链接器(用于在编译后执行链接)和加载器(用于执行可执行文件)的存在是否不依赖于诸如 Linux 之类的操作系统?(我曾想到 Linux 中的链接器和加载器,它们要么由操作系统提供,要么像其他应用程序一样由软件提供。现在我认为它们非常特殊且不同。无论安装哪个操作系统,它们都可能相同。)

链接器和加载器是否存在于机器语言即 ISA 级别?(在那个级别,没有操作系统。)还是汇编语言级别?

从编程软件的角度来看,将操作系统视为编程库(库)是否正确?

谢谢。

我想知道在哪里将链接器和加载器安装到计算机系统的级别/层中。

有关计算机系统的层/级别,请参阅 Nisan 的 The Elements of Computer Systems:

在此处输入图片说明

有关链接和加载,请参阅计算机系统:程序员的观点

linker load assembly

-6
推荐指数
1
解决办法
88
查看次数