1、什么是断言?
断言本质上是对“非真即假”条件的测试。即如果条件为假,就会触发断言,指令指针会在出错的代码行处停止。
2、解释调用约定是如何工作的。
# 调用约定
主要有三种基本方法,用于在栈上传递参数、处理函数调用和返回。
## 1. C声明(__CDECL)
- 调用函数时,按从右到左的顺序将参数压入栈。
- 再将当前处理器的指令指针压入栈,然后执行子程序调用。
- 函数返回后,调用代码负责通过`add esp, n`指令进行栈帧修正,`n`为参数占用的总字节数。
## 2. 标准声明(__STDCALL)
- 参数入栈方式与__CDECL相同。
- 但函数返回时,由函数自身负责栈帧修正。
- 返回指令`RET`会根据指定的立即值调整返回地址,实现栈的修正。
## 3. 快速调用声明(__FASTCALL)
- 在MIPS或PowerPC处理器上是快速的函数调用方法。
- 在有较多通用寄存器的平台,部分参数可通过寄存器传递。
- 当参数过多时,多余参数通过栈传递。
- 在80x86的16/32位模式下,通用寄存器较少,如VC6下只有ECX和EDX可用于传递参数,其余参数仍需通过栈传递。
3、什么是半加器?
半加器的运算特性
半加器的运算结果与 异或运算 相同,只是它还包含一个 进位 ,该进位位会影响相邻的位。
忽略进位时,半加器的运算结果等同于逻辑异或。
4、使用 a. 异或门 b. 与非门 c. 或非门制作一个非门。
a. 使用异或门制作非门:将异或门的一个输入固定为逻辑 1,另一个输入作为信号输入,此时异或门的输出就是该输入信号的非。
b. 使用与非门制作非门:将与非门的两个输入连接在一起作为信号输入,此时与非门的输出就是该输入信号的非。
c. 使用或非门制作非门:将或非门的两个输入连接在一起作为信号输入,此时或非门的输出就是该输入信号的非。
5、编写代码来改变三态数据的值。注意状态序列是一个重复模式 {0, 1, 2, 0, 1, 2, …}。起始状态是状态 #0。状态 0 对应值 0x34,状态 1 对应值 0x8A,状态 2 对应值 0xE5 ,状态循环为 0…。
以下是一个Python示例代码来实现这个功能:
state_values = [0x34, 0x8A, 0xE5]
current_state = 0
# 示例:改变状态10次并打印对应的值
for _

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



