「アセンブラ」を含む日記 RSS

はてなキーワード: アセンブラとは

2020-05-04

anond:20200504114728

まぁ、C++で書くことが多いが、Python最近使うようになった。適切なほう。当然アセンブラで書けっていうと、

C++のほうがいいだろの議論を アセンブラC++ C++パイソンにすりゃだいたい過去議論が使える

2020-03-28

製造業にいると、コンピュータが遠くなっていく

CPUVHDL,Verilog,System-Verilogで書いたりした時もあった。

USB,HDMI,電池の充電制御,WiFi,自動車など色々やったが、コンピュータが遠くなっていく感じがある。


FPGACPUを書いてOSを起動させたとして、自分普段仕事環境が良くなるわけではない。

ソフトウェアでは次々と開発環境が良くなっていくし、自分で使いやすいようにカスタマイズもできる。

でもハードはそうではない。MS Officeは動くがメモリが4GBでカクカク。

作ったハード自分達が使うわけじゃない。例えば100Gイーサ開発してもその恩恵は得られず1Gbpsが関の山だったりする。


C言語アセンブラまではハードがどう動いているかわかるが、

Python,Go,R,C++,Rubyくらいになると書けるがどう動いてるかわからなくなってブラックボックス化する。

社会的には正しいのだが、自分が関わったハード自分が書いたC/C++コードを上位から呼び出すのはわかるが、

ハードが変わったらブラックボックスになる。ロジアナオシロで見てわかるレベルであればいいが。


またソフト業界とのギャップも感じる。

PandasのTime seriesが時間を扱えるのかと思っていると、ピコ秒が扱えない。

これは1例に過ぎないが、Amazon本屋新刊が出ると買って勉強し、ライブラリ公式ドキュメントも読んでいくが、仕事に直結しない。

クラウド使ってディープラーニングのやり方は沢山情報はあるが、CPU内蔵GPUメモリ4GB+FPGAでやる情報なんてない。

しか電流量絞ってないと物理的に壊れる恐れもある。辛い。


うそう、コロナオーバーシュート話題になったが、

オーバーシュート場所を検出したり、統計処理するようなソフトもパッと出てこないので書いた。

このあたりもソフト業界ギャップを感じてしまう。オシロ機能としてあるわりに、手元のPCだと自作する羽目になる。

2020-02-21

anond:20200221164125

最初にCは難しいやろ。

BASICアセンブラPascal→C の順番でCをやったけど「これアセンブラPascalやってない人が理解できんの?」って感想だったわ。

2020-02-18

anond:20200218145419

いちおうNPN,PNP、フリップフロップぐらいはつぶやいとくな

どこからPythonか?というのと回路はほぼできないかしょうがないんだが、

これ本気で電子回路をはんだごてで作れて、レイヤーからできないと

WebサイトJSつくれるていどをフルスタックかいわれそうだな・・・

デッサンはできないがPhotoshopはある程度できるぞ、ほんのちょっとだがな

デッサンできないし、電子回路もかなりへただからアセンブラJSができてもフルスタックとは言えないエンジニアなんだが

みわかってるかな

せめてOSI7層程度はフルスタックできてくれ

2020-02-16

Intelアセンブラ基本的モード

32bit (IA-32)

https://en.wikipedia.org/wiki/X86_assembly_language#Execution_modes

Real mode (16-bit)

Protected mode (16-bit and 32-bit)

Long mode (64-bit)

Virtual 8086 mode (16-bit)

System Management Mode (16-bit)

64bit(EMT64)

https://software.intel.com/en-us/articles/introduction-to-x64-assembly

General Architecture

Since the 64-bit registers allow access for many sizes and locations, we define a byte as 8 bits, a word as 16 bits, a double word as 32 bits, a quadword as 64 bits, and a double quadword as 128 bits. Intel stores bytes "little endian," meaning lower significant bytes are stored in lower memory addresses.

命令セット

MMX.SSE,AVX.FMA

2020-02-15

できるかどうかと、やっていいかどうかは別 王様たちのヴァイキング問題点

ラーメンを作るときに、成分分析にかけて

成分を割り出して、パウダーで合成して同じ味を作っても良いか

 ↓

プログラム師匠に習わず他人プログラムを解析して

作り方を割り出して、アセンブラで合成して同じプログラムを作ってよいか

 

あれはもともとハッカーという犯罪捜査ではあるが

犯罪差者が作るラーメンにも本人に権利があり、警察捜査目的であっても、裁判所の令嬢がないのに

勝手分析して言い訳がない(場合がある)

著作権法違反だったり、そこで何か新しい知識を得たら盗作の疑いすらある。

からヴァイキング

ただあれ、警察が協力している演出問題

もともと、他人プログラム勝手に解析してソースを読むのは必ずしも自由じゃない場合もある

著作権表示をすべき

2020-02-04

手は抜かないというより

いわゆる性能重視でチューニングした場合

ASMキーワード連発で

アセンブラジャネーの?みたいなソースになるわけだが

そんなもんがいいの?ちゃうやろ?

というチューニングの難しさ

2020-01-26

入社して5年までのプログラム

それこそ朝9時から朝4時まで見たいな話も冗談でもない非がある程度には本当なくらいがむしゃらに働いたとしても

簡単でも合った。アセンブラドライバ組んだ経験だってDOSである

 

なにはともあれ、一所懸命がんばった。先輩から見たら嗤うような出来だったのかもな。

2020-01-25

そのためにあるんだろうけど

他人のお店の料理の味を

成分分析機にかけて、成分を割り出して

パウダーで合成して作り出すってどうなの?

っておもうけど

食べに行って参考にするのも大差ない

 

同じように

他人プログラムリバースしてマシン語を取り出して改造するのはどうなの?という

もちろんアセンブラでもらっているとかなら別だが

普通ソースでもらう

ソートを例にとったときのN=1のとき特殊解。

 計算量N*Nと2Nが

N=2以上であれば2Nのほうが速く終わるが

N=1のとき例外的にN=1のほうが速く終わる。

という例外を知ることは重要

 

ではN=Bigがなぜ特殊解か?というと単純に言えば

メモリが足りなくなって不正終了というものから

メモリをあけるためにSSDに書き出すから遅くなる

というものにはじまり

メモリがたりなくなりSSDがたりなくなりさらHDDに書き出してとなると

どんどん遅くなっていく

 

逆にすさまじく小さい場合何が起きるかはN=1のとき例外として考えてみてほしい

 

ちなみに、コンパイルオプションには速度優先コンパイルコードが長くなっても高速なアセンブラを書く)とサイズ優先(速度が遅くなっても短いコードを書く)がある。

★ いっしょうけんめいになればいい・・・ これはもう私にとっては一所懸命ではない

MOV DX.[AX]

MOV CX,[BX]

MOV [BX],DX

MOV [AX],CX

 

端的に令を言う場合このコードC言語でかくとかなり遅くなる。

一般的アセンブラコード記述した場合、2倍以上早くなる場合があるという端的な例である。2倍かどうか走らんがw

 

他方 JAVAなどとC言語を比べた場合は1.4倍

これはスクリプト言語などでも同じであるJITネイティブ関数コールは含まない

2020-01-18

そりゃそうかもな

高校時代アセンブラをやってるとはおもうのかおもわないのか

遅いだろといわれるとはおもうんだが

アセンブラ高校だったんだよ

2020-01-15

anond:20200115121738

企業でのサラリーマンとしての会社の記録に参加しただから個人ではない

その後もさまざまな実績はあるが、主に外部には出ていない。

一般的下請けさん。

アセンブラが読めるとか、大学を出ているとかは本当

性犯罪などはデマ。異性を愛するタイプ。など。

風評被害防止のため といっても匿名だけどな

2020-01-14

各種書名検証連鎖証明、まんがいち秘密鍵漏洩した場合対処

さまざまなコンパイルフラグ DEFINE、アセンブラレベルでの柔軟性、ヒープ対処

試験工数をかんがみてある設計試験工数が大きくなりすぎる機能に対する工夫)

単位テスト

anond:20200114151740

まぁこういう試験ではでていたけど

レアケースだし、環境依存するから特定メーカー向け意外にはOFFになっている

コンパイルフラグの類のコードアセンブラにはでてこないから、リバースでは見つからないけど

ちゃんと、ソースコードにはあるのだ

技術貯金

anond:20200114041018

ソートプログラム 太田式(名前適当)一考察

 

バケツソートバブルソートを含むとする)のような単純なソートプログラムを例にとっても

N=1,Bigとき例外となる。プログラム教育ではこういう例外は良くおきるので準正常系のようなものだが、慣例的に例外と呼ぶ

どうように1,1,1,1、のような偏りの大きいデータにたいしてもソートプログラムは特異な処理時間必要とする。

 

ソートは、そのデータの量や質、大きすぎる、小さすぎる、偏りが大きすぎる、小さすぎる

などによって、一般的に言われている特性とはことな特性を示す。

これがもっと標準的ソート例外であり

データや偏りが小さいときコンパイラなどの最適化により、さらに異なる特性を示すことがある。

一般的にはコンパイラ最適化は気にする必要がないが、こういう例外にはなりやすいので、納品などがある場合は1度確認しておいたほうがよい(アセンブラレベルコード確認など方法任意

 

入力の量の偏り、質の偏り、装置特性★ これはどのプログラムでもそうだが、ソート説明やすい。

2020-01-11

__forceinlineとinlineは毛っこう違う。

一般的プログラマー主観に会うのは__forceinlineのほうがイメージするinlineにはちかい

inlineはどちらかというとvolatileのように最適化キーワードに近く扱われる。(所定の条件で無視される)

なので、実際にどういうアセンブラはいたか確認したほうがベター

Intel系のCoreなんちゃらのCPU場合

フルアセンブラC言語C++)を比較すると速度差は2倍前後

C言語JITをしないスクリプト言語を比べると1.4倍程度

とはいえ、1秒の処理が1秒40になったところで2秒になったところであまり気にならないことが大半。

この辺はテスト工程の中で、バグによって炎上していないチームになどにフィーリングをはかってもらうと吉。

2020-01-01

多値返しに関する一部エンジニア見解ヤバない?

https://b.hatena.ne.jp/entry/s/jp.quora.com/hotondo-no-puroguramingu-gengo-de-kansuu-no-return-ga-1-tsu-shika-deki-nai-no-ha-naze-desu-ka を呼んだんだけど、回答・ブコメともにとんでもないことを書いている人がたくさんいてびっくりした。本質的に多値返しは直積型の返しと同じで、これはタプル・構造体と本質的に同じ、というのは多くの人が指摘している通りではあるのだが…。

配列返し

動的型付け言語に慣れてらっしゃる方が多いのかもしれないけれど、配列というのは「同じ型をまとめた型」であるべき。動的型でいろいろ突っ込める配列本質的には「直和型の配列」と思った方がいいよね。多値返しという意味では(記憶領域の面で)余分なコストがかかりうる直和型を選択する意味はないですよね?回答でもなんか配列返しに言及している某有名人がいたが、あれれ?という感じ。

もっとも、immutableな配列をtupleと呼ぶPythonという言語があるせいで引っ張られている感は否めないけども、配列とは本質的に異なる型が存在しているのは明らかですよね?配列構造体って違うよね…?(言葉定義問題と言われそうだけれど、型システムの分野での言葉定義存在しているわけで、反論になっているとは思えない。『俺は明日からこのわんわんなく動物ネコと呼ぶから』と言っているようなもんでは。)

CPUアーキテクチャについて

かにナイーブにはレジスタに入れて返すのが素直だというのは同意するけど、でもそれ構造体と一緒だよね?昔のCではこれはできなかったというのは知らなかったので勉強にはなりました(未検証だけど)。

あと構造体返しの関数がどう機械語実装されているのか知らなさそうな人がいるのにはちょっとびっくり。それでなんでレジスタがどうとか言えちゃうのかしら。構造体の値を返す関数ならばポインタは返さないですよ。そのポインタはどこを指してるんですか。実装しづらいとか何とか言ってる人たち、ちゃんアセンブラ読んだことあるんですか…?本質的に何の困難もないです(ちなみに少なくともlinux amd64ではスタック領域を確保してそのポインタ関数引数の一部として渡します。まあヒープに置く場合でも余計なmoveが出ないようにしたいとかあるかもだけど、そんなでかいデータ普通無名構造体では扱わないでしょう)。

多値は使いづらい

かに、返り値の型が(A, A)のような場合ドキュメント読まないとわからなくなってしまうので可読性が下がるし構造体を使うべしというのは(ほぼすべての場合において)同意(多値は使いづらいというのは構造体は使いづらいという意味ではないですよね?)。でもさ、某有名人goで挙げているけれど多値って普通(A, B)みたいに違う型の値を返したくなることの方が多くないですか。この場合どっちがどっちかは自明だよね?ただの無名構造体だよ。多値返しは設計が甘いとかわけわからんことを言っている人もいたけれど、なんかこちらが不安になってきた。

http://bleis-tift.hatenablog.com/entry/multiple-values

…本当に意味不明で驚いた。id:megumin1氏が言っているように、tupleのパック・アンパックに余分なコストをかける必要はない(まあアドレス渡しになるから複数本のレジスタで返すのと比べたら余分なmovが入りうるという話はあるけど、この人が多値返しというので何を想定しているかからないので何とも。)。何遍呼んでも多値返しとtuple返しの違いが判らなかった。おそらく前述のようにimmutableなlistのことをtupleと思っているのかな?と予想はするが…。

はてな界隈ってエンジニア的な印象があったんだけど、ここら辺の話ってそんななじみないのかな…?てか某有名人氏も型システムとかあんまりご存じないのかな…?むしろこれは増田無知なんだろうか…?

ログイン ユーザー登録
ようこそ ゲスト さん