硬件抽象层(英语:Hardware Abstraction Layer,缩写HAL)是软件层的例行程序包,用于模拟特定系统平台的细节使程序可以直接访问硬件的资源。将硬件方面的不同抽离操作系统的核心,核心模式的代码就不必因为硬件的不同而需要修改。因此硬件抽象层可加大软件的移植性。
之所以有硬件抽象(Hardware abstraction)这个概念,是由于数字电脑具体的硬件(Hardware)操作相当繁杂,因此将具体的硬件操作抽象化简,避免由于直接以具体的机器代码(Machine code)撰写程序,而在将程序移植到不同硬件时,需要重写整个程序。其概念与目的,类似于数据结构(Data structure)中的抽象数据类型(Abstract data type),皆为保护程序免受变化的冲击。
前述的现象可借由语言现象获得一些启示,当我们进行记忆时,我们抽象地记忆,而非具体地将具体的消息记下,我们在记忆时,并不会记忆文章具体的长相,而是抽象的内容。如果不是如此,当需要以另一种语言重现该篇文章时,仍然需要将其抽象化,再将其转译为另一语言的写法。在记忆谈话时,也类似于此。