问题标签 [low-level-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
846 浏览

c++ - 如何使用 2 个字符形成 ASCII(十六进制)数字?

我有 charbyte[0] = '1' (H'0x31)byte[1] = 'C'(H'0x43)

我正在使用一个缓冲区来获得更多缓冲区char hex_buff[0]。我想在其中包含十六进制内容hex_buff[0] = 0x1C(即字节 [0] 和字节 [1] 的组合)

我正在使用下面的代码,但我意识到我的代码仅对十六进制值 0-9 有效

hex_buff[0] = s_nibble1 | s_nibble2;// 这里我想拥有0x1C而不是0x13

0 投票
4 回答
2719 浏览

c++ - c++ reinterpret cast和c style cast之间的区别

代码:

输出:

一样!

我想知道这两种铸造方法有什么区别。此外,如果您可以指定(通过示例)static_cast、dynamic_cast 和您知道的其他类型的转换之间的区别(即,同时保持尽可能低的级别并尽可能接近汇编语言)。

谢谢。

请阅读我从上面的示例中知道的 PS,reinterpret_cast 将 keyStr[29] 的地址分配给 int 指针在汇编中将转换为:

所以换句话说,reinterpret_cast,在低层次的预期中,一点也不危险,因为它不会修改原始数据。

我想知道其他铸造方法如何以低级方式表现。因此,例如,一个对象,以低级方式,只是一个保存地址的变量。如果该对象的类型是编译器如何解释该地址以及它如何偏移它。(这正是我不感兴趣的,在汇编中,如果该变量包含值、指针或对象(即另一个指针))。另一件可能相同的事情是 int 和 int* 或 unsigned int 和 int 之间的区别;所有 4 个声明都生成相同的汇编指令。( push value ) or (sub esp-(length of int) && mov esp, value) 我希望这可以澄清问题以及为什么我将其标记为“低级代码”和“程序集”

PS 在这个程序中,我正在尝试创建我不关心不可移植性或其他高级别的东西。我正在尝试尽可能低级并尽可能接近汇编语言。这意味着,对于这个程序,内存只是内存(即 0 和 1 位)并且类型并不重要(例如,我不在乎 mem address: 0x123 是“int”类型还是“float”类型,它只是“数据”)

0 投票
1 回答
65 浏览

java - Java:如何在子类中填充变量?

所以这不是一项任务,但我的一张演讲幻灯片没有说清楚,当我尝试自己编写类似的代码时,我遇到了问题。

我不知道如何填充我的子类中的变量。

到目前为止,这是我的测试代码:

实现类:

公共类房子{

}

超类:

}

子类:

}

当我尝试运行代码时,如果我尝试将数据插入到类型类中的 setType() 方法中,它会给我一个错误。有人可以告诉我我在哪里搞砸了吗?谢谢!

0 投票
0 回答
20 浏览

assembly - 在 edx 中具有先验值的装配 DIV 操作

我对组装很陌生,我正在学习的书中有这个例子

这些是我得到的结果 run_results

*谁能向我解释为什么EDX中的最终值为0x47
*当我将0h放入EDX时,为什么EAX中的最终值变为0x2
*如果基本上除法只是在EAXEBX之间,那么EDX是如何影响除法结果的。 * EDX不就是用来存储devision rest的吗?

提前致谢 :)

0 投票
0 回答
172 浏览

assembly - Mips 矩阵乘以错误答案

在过去的 13 个小时里,我一直在努力完成这个程序。我已经尝试了一切,但似乎没有任何效果。出于某种原因,当我从用户那里获取 4x4 矩阵的输入并将它们相乘时,它会起作用。当我尝试计算我已经初始化的两个 8x8 矩阵的乘积时,它给出了错误的答案。

初始化矩阵;

array1: .byte 1,3,4,7,8,8,9,4,3,2,3,32,3,4,5,6,7,8,9,8,6,4,5,4,4,3,5,6,7,7,8,7,5,4,3,4,5,6,5,4,5,4,5,6,7,8,8,9,5,3,3,2,4,6,7,8,3,2,2,1,3,4,5,6,7,7,5,4,3,4,5,4,4,3,3,4,3,3,4,3,3,34,5,5,6,7,7,8,6,5,4,4,3,3,5,6,7 array2: .byte 0,4,4,7,6,6,4,4,4,7,4,7,4,4,7,6,7,6,4,6,6,4,0,4,4,4,7,6,7,7,6,7,7,4,7,4,7,6,7,4,7,4,6,6,7,6,6,4,7,4,4,7,4,6,7,7,4,7,7,4,4,4,7,6,7,7,7,4,4,4,7,4,44,4,4,4,7,4,4,4,4,44,7,7,6,7,7,6,7,7,4,4,4,4,7,6,7

将它们相乘的代码;

0 投票
0 回答
870 浏览

assembly - Tasm 汇编代码 - 终止重复程序

在这个汇编程序代码中,我想在输入中继续输入'Y'/Yes,并且在至少3次Yes/Y之后,程序将自行终止或跳转到endmain,我该怎么做?

我想要这个显示:

不是这个

.

有什么建议么?

0 投票
0 回答
30 浏览

cpu - 从 CPU 的角度看计算机程序

这可能听起来有点天真,但是,我无法在我的脑海中找到这个问题的适当答案。

假设有一个算法 X,它用 10 种不同的编程语言实现。在每个程序的引导阶段之后,每个程序都会一遍又一遍地执行算法。我的问题是,当它们都在同一个 CPU 上执行时,它们与硬件级别会有什么不同吗?

我的理解是每个 CPU 上的一组硬件资源(寄存器等)是有限的。因此,执行核心算法应遵循“获取-解码-执行”循环中类似(如果不相同)的模式。

0 投票
2 回答
81 浏览

locking - 用整数互锁对象

我有一堆对象,每个对象都有一个唯一的 ID。

我需要互锁对象,以便一次只允许其中一个对象执行特定操作。

我有一个想法来定义一个所有对象都可以访问的整数。

如果联锁是空闲的,则整数包含零。然后允许对象将其自己的唯一 ID 放入整数中,执行操作并在之后放回零。

如果任何其他对象在其锁定时检查该整数,它将看到一个与其自己的 ID 不同的非零值并退出。

感觉几乎 100% 肯定我在这里重新发明了一个旧原则,但没有受过 CS 教育,我什至不知道它叫什么,所以我不知道要搜索什么。

我锁定声音的方法/有缺陷吗?我应该阅读什么?

请注意,这是相当低级的 61131-3/PLC 编程,因此没有单例模式等。

谢谢

0 投票
0 回答
801 浏览

assembly - 使用 ASCII 值作为名称的 MIPS 汇编语言代码

我是 MIPS 的新手,这个作业对我来说有点混乱,因为要求是计算一个人姓名中每个字符的 ASCII 值,并以 Last、First 格式打印姓名,以及一个人的学生 ID 号,其数字必须存储为整数。问题如下: 1. ID 的数字部分必须使用整数打印系统调用打印,其余部分必须使用单字符打印系统调用打印。2. $a0 中的值必须根据 $a0 中的旧值计算,除了在开始时将值加载到 $a0 中

请帮我开始。谢谢!


0 投票
2 回答
104 浏览

c - 如果 (n!=0) n=0; v/sn=0;哪个更有效,为什么?

作为高级程序员键入程序时,n = 0;看起来更加高效和干净。

n = 0;真的比 更有效率if (n != 0) n = 0;吗?

  1. 什么时候n更有可能0

  2. 什么时候n不太可能0

  3. 什么时候n是绝对不确定的。

语言:C (C90)

编译器:Borland 的 Turbo C++

最少的可重现代码

注意:我上面提到的代码仅供您参考。请不要随波逐流。

如果您对上述语言/标准/编译器不满意,请随时用您喜欢的语言/标准/编译器解释上述 3 种情况。