小编tom*_*sgd的帖子

如何从C代码引用段开头和大小

我正在将一个ARM芯片的程序从IAR编译器移植到gcc.

在原始代码中,IAR特定的运算符如__segment_begin__segment_size用于分别获取某些内存段的开头和大小.

有没有办法和海湾合作委员会做同样的事情?我查了GCC手册,却找不到任何相关内容.


更多细节:所讨论
的存储器段必须位于固定位置,以便程序可以正确连接芯片上的某些外设.原始代码使用__segment_begin运算符来获取此内存的地址,并__segment_size确保它不会溢出此内存.

我可以通过添加变量来指示这些内存段的开始和结束来实现相同的功能,但是如果GCC具有类似的运算符,这将有助于最小化编译器相关代码的数量,我最终必须编写和维护.

gcc porting iar

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

用于将二进制数据解析为基本类型的惯用方法

我编写了以下方法,使用Flate2库中的GzDecoder从 gzip压缩文件解析二进制数据

fn read_primitive<T: Copy>(reader: &mut GzDecoder<File>) -> std::io::Result<T>
{
    let sz = mem::size_of::<T>();
    let mut vec =  Vec::<u8>::with_capacity(sz);
    let ret: T;
    unsafe{
        vec.set_len(sz);
        let mut s = &mut vec[..];
        try!(reader.read(&mut s));

        let ptr :*const u8 = s.as_ptr();
        ret = *(ptr as *const T)
    }
    Ok(ret)
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我对代码并不是特别满意,尤其是使用虚拟向量和临时变量ptr.这对我来说都是非常不优雅的,我相信有更好的方法可以做到这一点.我很高兴听到有关如何清理此代码的任何建议.

rust

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

无法返回矢量切片 - 未实现ops :: Range <i32>

为什么以下Rust代码会出错?

fn getVecSlice(vec: &Vec<f64>, start: i32, len: i32) -> &[f64] {
    vec[start..start + len]
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是

the trait `core::ops::Index<core::ops::Range<i32>>` is not implemented for the type `collections::vec::Vec<f64>` [E0277]
Run Code Online (Sandbox Code Playgroud)

在后来的Rust版本中,我得到了

error[E0277]: the trait bound `std::ops::Range<i32>: std::slice::SliceIndex<[f64]>` is not satisfied
 --> src/main.rs:2:9
  |
2 |         vec[start..start + len]
  |         ^^^^^^^^^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
  |
  = help: the trait `std::slice::SliceIndex<[f64]>` is not implemented for `std::ops::Range<i32>`
  = note: required because of the requirements on the impl of `std::ops::Index<std::ops::Range<i32>>` …
Run Code Online (Sandbox Code Playgroud)

rust

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

std :: num :: Primitive发生了什么?

我通过Google 找到了 Primitive,但它似乎是来自测试版之前的版本,我的编译器(测试版3)抱怨它无法找到它.有人能指出我搬到哪里或者是否有同等的东西?网络搜索并没有带来任何有希望的东西

rust

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

标签 统计

rust ×3

gcc ×1

iar ×1

porting ×1