asm - 汇编中 << 有什么作用?

查看:343
本文介绍了asm - 汇编中 << 有什么作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近在看关于一个玩具操作系统的内核源代码的时候, 出现了类似这样的语句 :

; ----------------------------------------------------------------
;
;   boot.s -- 内核从这里开始
;
; ----------------------------------------------------------------

; Multiboot 魔数,由规范决定的
MBOOT_HEADER_MAGIC  equ     0x1BADB002

; 0 号位表示所有的引导模块将按页(4KB)边界对齐
MBOOT_PAGE_ALIGN    equ     1 << 0

; 1 号位通过 Multiboot 信息结构的 mem_* 域包括可用内存的信息
; (告诉GRUB把内存空间的信息包含在Multiboot信息结构中)
MBOOT_MEM_INFO      equ     1 << 1    

如果我没看错的话这应该是Intel风格的x86汇编, 它宏定义前面这个名字为 1 << 01 << 1 但是我因为我从来没在汇编中看过1 << 0, 想知道这也是表达将1向左移动0位, 将1向左移动1位的意思吗?

解决方案

确实是左移。
内核下为了省内存,配置一般用flag表示。
即一个DWORD共32未就可以表达32种配置。

1是
0000 0000 0000 0000 0000 0000 0000 0001
执行完1<<1
就变成了
0000 0000 0000 0000 0000 0000 0000 0010

意思是将第1位置true
同理1<<0是将第0位置true

这篇关于asm - 汇编中 &lt;&lt; 有什么作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆