小编Mag*_*nus的帖子

单词大小和它的指示

请参阅下面有关各种指令集架构中字大小的问题,以及它与汇编语言的关系.感谢您的帮助.

首先是一些事实(如果有任何错误,请纠正我).处理器架构的字大小表示(编辑:其中一些是错误的,请参阅下面的Seva帖子):

  1. 每个寄存器的最大尺寸
  2. 每个内存地址的最大大小(可以寻址的内存量)
  3. CPU可以在单个指令中处理的最大整数
  4. 可以在单个操作中传输到工作存储器和从工作存储器传输的最大数据

现在出现了一个非常奇怪的事情:在IA-32的汇编语言中,一个字被指定为16位长.IA-32指的是支持32位计算的所有x86版本(即字应该是32位长).

这只是让我对单词及其表示的内容(上面的列表)的全部理解分崩离析.

感谢您帮助我深究这一点,

马格努斯

编辑2:请参阅以下x86架构上的两个有用链接.

  1. 由下面的altie发布:http://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture
  2. 一个简单的x86指南我偶然发现:http://www.swansontec.com/sintel.html

x86 assembly cpu-word computer-architecture

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

MDR,MAR注册,与汇编语言有关

在过去的几周里,我一直在阅读有关汇编编程和计算机体系结构的内容,但是我还有几个问题似乎无法找到答案.

在阅读有关CPU构建等的内容时,您将了解MAR和MDR寄存器,以及它们如何控制内存和CPU之间的数据流.

另外,在汇编语言(这里指的是IA-32)中,我们了解到x86架构有8个通用寄存器(EAX,ESP,EDI等),6个段寄存器和2个控制寄存器(1个标志寄存器和一个指令指针).这总共是16个寄存器.

汇编语言指南中提到的寄存器都没有提到MDR和MAR.

问题如下:

MAR/MDR如何适合汇编语言寄存器列表?

x86实际上有超过16个寄存器吗?

ARM/MIPS有多少个寄存器?

非常感谢你提前.

x86 assembly computer-architecture

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

反应:useEffect vs useMemo vs useState

我试图在网上找到一个简洁的答案,但是没有运气。

是关于之间的差异以下正确的useEffectuseMemouseState

  • 两者 useStateuseMemo都会记住渲染中的值。区别在于:
    • useMemo不会导致重新绘制,而useState不会
    • useMemo仅在其依赖项(如果有)更改时运行,而setSomeState(由返回的第二个数组项useState)没有此类依赖项数组时运行
  • 双方 useMemouseEffect只有当它们的依赖关系发生变化(如果有的话)上运行。区别在于:
    • useEffect运行渲染发生,同时useMemo运行

我错过了其他关键区别吗?

javascript reactjs react-hooks

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

C#中的Thread.Sleep():它是否正在实例化对象的线程,或者我调用该方法的线程?

我正在使用C#编写一个程序,它有一个主线程,我创建了一堆Skill类的实例.示例:_fire,_ice,_thunderbolt.你可能已经猜到了,这些都是各种神奇的技巧.

从主线程我产生第二个线程并使用它来做很多后台工作.我希望该线程调用类Skill中的一个方法,名为useSkill().

问题:如果我在该useSkill()方法中放置一个Thread.Sleep(1000),它是否会在实例化对象的主线程中休眠,还是会在调用该方法的后台线程中休眠?

非常感谢!

c# multithreading

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

Inline-Level Boxes 和 Inline Boxes (W3C) 定义上的矛盾

以下引述的 W3C 来源。

'display' 属性的以下值使元素成为 内联级别:'inline'、'inline-table' 和 'inline-block'

因此,带有 的元素display: inline-block内联级元素

内联级元素生成内联级框,这些框参与内联格式化上下文

因此,所有内联级框都参与内联格式化上下文

内联框是一种内联级别的框,其内容参与其包含的内联格式化上下文

如果所有内联级框都参与内联格式化上下文,并且内联框既是内联级框又参与内联格式化上下文,则所有内联级框都是内联框,并且反之亦然。

最后,这是打破逻辑的声明:

非内联框的内联级框(例如替换的内联级元素、内联块元素和内联表元素)称为原子内联级框...

换句话说:

首先,通过逻辑含义,我们被告知所有内联级框都是内联框。然后,我们被告知相反的情况:几个内联级框(如由 元素生成的框display: inline-block)实际上不是 内联框

我是否遗漏了什么或者引文相互矛盾?


编辑

html css w3c

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

JavaScript ES6模块:避免污染全局命名空间

背景

在JavaScript中导入模块时,我们会使用导入的模块名称来污染全局名称空间:

foo.js

export foo() {..};
export const bar = 3.14;
Run Code Online (Sandbox Code Playgroud)

index.js

import { foo, bar } from './foo.js';
Run Code Online (Sandbox Code Playgroud)

在中index.jsfoobar位于全局名称空间中,对吗?因此,假设我发布了此模块,有人在其HTML文件中使用了该模块,以及另一个还定义了变量foobar全局名称空间的脚本。那我们不会发生碰撞吗?

我想这可以通过将所有内容包装main.js在IIFE中来解决。但是,由于某种原因,ESLint对此有所抱怨,这使我怀疑IIFE是否不是保护全局名称空间的首选/推荐方法。

  1. 全局名称空间会被foo和污染bar吗?
  2. 如果是这样,我应该如何避免呢?

谢谢。

javascript module ecmascript-5

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

ECMAScript:我们在哪里可以找到有关 let/const 变量可访问性的规范

ECMAScript 规范中,我们在哪里可以找到明确的规范,说明为什么letconst不能在使用BlockStatements创建的词法环境之外访问(而不是使用 声明的变量)?var

如果BlockStatements现在创建新的词法环境,则letconst声明不应创建在该词法环境之外可访问的变量,但var变量应该创建。我试图了解最新的 ECMAScript 规范中到底在哪里指定了该行为。

13.3.1 Let 和 Const 声明

let 和 const 声明定义了作用域为运行执行上下文的 LexicalEnvironment 的变量。这些变量是在实例化其包含的词法环境时创建的,但在评估变量的 LexicalBinding 之前不能以任何方式访问。

13.3.2 变量语句

var 语句声明的变量的作用域为正在运行的执行上下文的 VariableEnvironment。Var 变量在实例化其包含的词法环境时创建,并在创建时初始化为未定义。

正如所见,两个变量声明在实例化它们所包含的词法环境时都会创建变量。对于 BlockStatement 来说,就是编译器进入块的时间。

来自8.3 执行上下文

执行上下文的 LexicalEnvironment 和 VariableEnvironment 组件始终是词法环境

javascript ecmascript-6 ecmascript-2017

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

一类不同类型的许多领域.设计作为集合?

我正在开发一个程序,显示来自其GUI中正在播放的游戏的数据.因此,我创建了一个具有许多字段的Player类,例如_hp,_maxHp,_mp,_maxMp,_tp,_maxTp,_summonHp,_xCoordinate,_yCoordinate,_zCoordinate等.这个类在一段时间内从内存中读取所需的数据(true)如果值已更改,则更新GUI的循环.

您如何建议将这些字段存储在播放器类中?我应该将它们放在某种字典中,还是只将它们作为自己的私有字段.

注意:它们有不同的类型(一些是int,一些是float,一些是ushort,一些是string).

非常感谢任何想法.

c# collections

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