我正在学习 ASM 语言并在 Ubuntu Eclipse C++ 上尝试 IMUL 函数,但由于某种原因,我似乎无法从我的代码中获得所需的输出。
必需的:
将整数数组 int_array 的负元素乘以指定的整数 inum
这是我上面的代码:
代码:
#include <stdio.h>
extern void multiply_function();
// Variables
int iaver, inum;
int int_ar[10] = {1,2,3,4,-9,6,7,8,9,10};
int main()
{
inum = 2;
multiply_function();
for(int i=0; i<10; i++){
printf("%d ",int_ar[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
ASM 代码:
extern int_ar
extern inum
global multiply_function
multiply_function:
enter 0,0
mov ecx, 10
mov eax, inum
multiply_loop:
cmp [int_ar +ecx*4-4], dword 0
jg .ifpositive
mov ebx, [int_ar +ecx*4-4]
imul ebx
cdq
mov [int_ar +ecx*4-4], …Run Code Online (Sandbox Code Playgroud) 我声明了一个PersonDetails具有以下三个属性的对象:
long id;
String residence;
Run Code Online (Sandbox Code Playgroud)
然后,我有一个全部填充ArrayList的PersonDetails对象:
List<PersonDetails> personDetailsList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我需要遍历此列表,以PersonDetails通过匹配其residence属性来找出重复项。
Id | Residence
1 | a
2 | b
3 | a
4 | a
5 | b
6 | c
7 | c
8 | d
Run Code Online (Sandbox Code Playgroud)
我为完成此操作而创建的代码/算法如下,并使用nested for loop,这实际上效率很低:
List<PersonDetails> personDetailsList = new ArrayList<>();
for (int i = 0; i <= personDetailsList.size() - 1; i++) {
long personId = personDetailsList.get(i)
.getId();
String personResidence = personDetailsList.get(i)
.getResidence(); …Run Code Online (Sandbox Code Playgroud) arraylist ×1
assembly ×1
c ×1
collections ×1
duplicates ×1
gcc ×1
java ×1
performance ×1
ubuntu ×1
x86 ×1