タグ

2017年6月2日のブックマーク (2件)

  • ARMアセンブリについてのメモ - ももいろテクノロジー

    ARM EABI(armel)についてのメモ。 RealView Compilation Tools アセンブラガイド バージョン 4.0 ARMレジスタ r0からr15までのレジスタとcpsrレジスタがあり、r11はフレームポインタ(fp)、r12はプロシージャ内呼び出しスクラッチレジスタ(ip; intra-procedure call scratch register)、r13はスタックレジスタ(sp)、r14はリンクレジスタ(lr)、r15はプログラムカウンタ(pc)として使われる。 cpsrレジスタは主にフラグレジスタの役割を持つ。 x86との比較でいえば、fpはebp、spはesp、lrはリターンアドレス、pcはeip、cpsrはeflagsにそれぞれ対応する。 ただし、 pcは演算の際、現在実行している命令のアドレス+8として評価される ことに注意。 また、objdumpコマ

    ARMアセンブリについてのメモ - ももいろテクノロジー
  • Rustのderiveはあまり頭がよくない - 簡潔なQ

    概要: Rustの derive はあまり頭がよくない。 derive がドジを踏む例 derive の問題は顕在化しやすく、RustコンパイラのGitHub上でも何度も重複するissueが投げられていた。今は主に #26925 を中心に議論がまとまっているので、そちらを参照するとよいだろう。 不必要な境界を与える例 use std::rc::Rc; // 来不必要な X: Clone を要求する #[derive(Clone)] struct A<X>(Rc<X>); struct B; fn main() { A(Rc::new(B)).clone(); // Error } error: no method named `clone` found for type `A<B>` in the current scope --> <anon>:10:19 | 10 | A(Rc::n

    Rustのderiveはあまり頭がよくない - 簡潔なQ