小编Ami*_*mit的帖子

在linux x86平台上学习ARM所需的工具

我有一个x86,linux的盒子.在阅读有关ARM的各种信息时,我很好奇,现在我正在考虑花一些时间学习这种架构.我目前的目标是能够为ARM编写简单的汇编程序,使用一些汇编程序为ARM生成目标代码,并能够在仿真的ARM机器上运行该程序.首先,我已经下载了ARM体系结构参考手册.根据这里的信息,Linux上不支持Keil,因此请帮助我使用我需要的工具(汇编器,模拟器).

linux assembly arm

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

C中子程序的参数数量的最佳实践

我最近开始研究用C语言编写的API.我看到一些子程序需要8个(8个)参数,对我而言,在调用该特定子程序时,它看起来很丑陋,传递8个参数.我想知道是否可以实施更可接受和更清洁的方式.

c argument-passing

5
推荐指数
3
解决办法
1750
查看次数

读/写锁在pthread中

我正在学习pthread并遇到了读者作家锁.场景非常简单; 由所有线程共享的全局变量,reader继续打印同一个全局变量的当前值,而writer将更新同一个变量.我可以通过使用两个互斥锁(pthread_mutex_t)来实现此同步,但我想使用"一个"读写器锁来实现相同的结果.但是,使用一个读写器锁定,如此处所示(程序的输出,下面),读者只能看到x的第一个值,并且看不到对全局变量的任何更新.请点亮这里.

码:

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <pthread.h>
#include <poll.h>

#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))

int x = 0;

pthread_rwlock_t lock_rw = PTHREAD_RWLOCK_INITIALIZER;

void *reader_thread(void *arg)
{
    int i;
    int newx, oldx;
    newx = oldx = -1;

    pthread_rwlock_t *p = (pthread_rwlock_t *)arg;

    if (pthread_rwlock_rdlock(p) != 0) {
        perror("reader_thread: pthread_rwlock_rdlock error");
        exit(__LINE__);
    }

    for (i = 0; i < 100; i++) {
        newx = ACCESS_ONCE(x);
        if (newx != oldx) {
            printf("reader_lock: x: %d\n",x);
        }
        oldx = newx;
        poll(NULL, …
Run Code Online (Sandbox Code Playgroud)

c multithreading pthreads

5
推荐指数
1
解决办法
3万
查看次数

数组遍历从给定索引到第一个索引

我参加了算法课程,其中讲师决定使用Ada作为编程语言工具来测试我们的理解.争论的焦点是ADA语言非常接近CLRS书中出现的伪代码.

下面的代码是ADA中选择排序的剪辑:

   procedure Selection_Sort(Data : in out List) is
   begin
      for Destination_Index in Data'Range loop
         for Source_Index in Destination_Index + 1 .. Data'Last loop
            if Data(Source_Index) < Data(Destination_Index) then
               Swap(Data, Source_Index, Destination_Index);
            end if;
         end loop;
      end loop;
   end Selection_Sort;
Run Code Online (Sandbox Code Playgroud)

下列:

for Source_Index in Destination_Index + 1 .. Data'Last loop
Run Code Online (Sandbox Code Playgroud)

将导致从给定元素(数据1)遍历数组到最后一个元素,但是如果我希望从最后一个元素遍历到第一个元素,则以下似乎不起作用.

for Source_Index in Data'Last .. Data'First loop
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮我解决这个微不足道的问题,那将是非常有帮助的,这样我就可以继续处理手头的主要问题,即学习算法.

ada

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

标签 统计

c ×2

ada ×1

argument-passing ×1

arm ×1

assembly ×1

linux ×1

multithreading ×1

pthreads ×1