Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What are the problem?

アセンブラへの道(2)

アセンブラへの道

の資料が大きくなりすぎて、Qiitaでうまく編集できなくなった。

一部をこちらに移動させてください。

アセンブラへの道 アセンブラへの道(2) アセンブラ入門への入り口 合計
items 340 130 470
views 31105 1585 1630 32320
goods 321 11 6 338
stocks 343 13 3 359

目次(content)

アセンブラ入門への入り口 https://qiita.com/kaizen_nagoya/items/0bf939143593fbb7114a
・信頼性:ソフトウェアとコンピュータ
・機械語、アセンブラ
・・1 直球勝負:CPUの創りかた
・・2 直近勝負
・・3 仮説勝負
・参考資料
・文書履歴
アセンブラへの道 https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2
・目次(content)
・前書きの前に(before preface)
・・お願い(ask)
・・・ CPUの名前(name of CPU)
・・・ 命令体系(instruction set)
・・・ 道具(tools)
・・(ざっくり?)アセンブラ(rough assembler)
・・・ アセンブラって何。(What is an assembler?)
・・・ 構成要素(element)
・・・ 命令(operator)
・・・ 演算対象(operand)
・・・ 登録器(register)
・・・ 数値、直値(number)
・・・ 定数(constant)名
・・・ 2進数(bynary digit)、8進数(octal digit)と16進数
・・事例(case study)
・前書き(preface)
・目的(purpose)と成果(outcome)
・理由(reason)
・鍵語(keyword)
・・視点(view point)
・組立器(入門(Assembler introduction)
・・nasm(Netwide Assembler)
・・mac(apple)
・・ stack machine
・・ 制作(making)
・機械語(machine languate)
・・ 機械語 @7shi
・8 bit CPU
・・6809(Motorola)
・・ H8(日立、ルネサス)
・・AVR(Alf Egil Bogen, Vegard Wollan, RISC:Reduced Instruction Set Computer) by Atmel
・・・ardino/memos
・・8080(Intel)
・・Z80(Zilog)
・・・Z80 @Stosstruppe
・・・PC-6001 @fuzzball
・・・CHIP-8
・16bit CPU
・・PDP11(Programmed Data Processor:DEC)
・・ CAP-X(Comp-X Assemble Program:IPA)
・・ CASLII(Comet Assemble Language:IPA)
・・M16C(三菱、ルネサス)
・・68000(68K:Motorola)(Intel)
・32 bit
・・NIOSII(Altera)
・・MicroBraze(Xilinx)
・・ SH(Super H(hitachi?), 日立、ルネサス)
・・ IA32-x86(intel)
・・・ paiza(web compiler)
・・・ Linuxでx86アセンブラ by @MoriokaReimen
・・・LJの力計算をフルアセンブラで書いてみる @kaityo256
・・ARM(Advanced RISC Machines)
・・・ Raspberry PI
・・ V850(Renesas:Renaissance Semiconductor for Advanced Solutions)
・・・athrill @kanetugu2018
・・SPARC(Sun)
・・powerPC(IBM)
・・MIPS(Microprocessor without Interlocked Pipeline Stages)
・64bit CPU
・・x64:64bit x86(Intel)
・・arm64(ARM)
・除虫(debug)
・・debug(MS-DOS 16bit)
・・ gdb(GNU)
・・・ gdb with docker
・・・ gdb on mac
・・・gdb リモートデバッグ @tetsu_koba
・・ Eclipse debugger
・逆組立器(dis assembler)
・・リバースエンジニアリングへの道 @deta-mamoru
・・連結器(linker)
・・LLVM IR
・・bitcode
・・WebAssembly
・・Rust
・・ by GO
・・ by python
・参考資料(reference)
・文書履歴(document history)

アセンブラへの道(2) https://qiita.com/kaizen_nagoya/items/2a0bd88216bc51278be5
目次(content)
用語(terms)
中央処理装置(CPU: central processing unit)・論理回路
・CPU基礎
・GPU
・・GPU紹介・比較等
・コンピュータの動作原理 by @niQSun
CPUの創り方
・CPUの創り方 @eijian
論理回路
OS(operating system)/kernel/boot(start up)/割込
・FPGA+SoC+Linuxのブートシーケンス@ikwzm
・Linux @akachochin
・30日でできる! OS自作入門
応用(application)
・TOPPERS活用アイデア・アプリケーション開発コンテスト
算譜(source code)
・CASL
・TD4
16進数(hexadecimal number),8進数(octal number), 2進数(binary number)
参考資料(reference)
・書籍(book)
・・パタ・ヘネ
・その後
・自己参考資料(selfreference on Qiita)
追伸(post script)
文書履歴(document history)

用語(terms)

略語のfull spelling
訳語の一覧を作ることにより、用語の適切さを確認する。

組立語(assembler)
機械語(machine language)
前書き(preface)
計画者(programmer)
実行計画(programming)
計算機計画者(computer programmer)
目的(purpose)
成果(outcome)
要請(pressing)
理由(reason)
経路(route)
電動機(motor)
鍵語(keyword)
逆組立(disassemble)
装置運転者(device driver)
起動処理(boot)
論理回路(logic circuit)
16進数(hexadecimal number)
除虫(debug)
連結器(linker)
配置器(locator)
道具(tool)
移植(porting)
応用(application)
電動機制御(motor controll)
算譜設計(program design)
中央処理装置(central processing unit)
背景(back ground)
覚書(notes)
入門(introduction)
註釈(comment)
感想(impression):
記録(record)
8進数(octal number)
2進数(binary number)
算譜(source code)
書籍(book)
参考資料(reference)
文書履歴(document history)
AVR(Alf Egil Bogen, Vegard Wollan, RISC)
RISC(Reduced Instruction Set Computer)
PDP11(Programmed Data Processor 11)
CASLII(Comet Assemble Language 2)
nasm(Netwide Assembler)
masm(macro assembler)
OS(operating system)
ARM(Advanced RISC Machines)
MIPS(Microprocessor without Interlocked Pipeline Stages)

中央処理装置(CPU: central processing unit)・論理回路

CPU基礎

CPUのはなし
https://qiita.com/anonimeco/items/3acf89ceded53bb12f84

コンピュータの基本構成と動作原理〜知識編https://qiita.com/zacky1972/items/ef4486e8a6d95edb68fd

CPUの処理性能を表す数値についてまとめてみた
https://qiita.com/manabu013/items/b6b1028f113b8504e3a9

CPUの処理速度を表す単位をなんとなく理解する
https://qiita.com/salmonosushi/items/8f959d3cddc9cc5131f7

ハードウェアに関する基本的な用語
https://qiita.com/pocket8137/items/ed459d771a645d022e84

CPUの挙動について
https://qiita.com/kuronekodaisuki/items/532f74c28b2181dd8808

素人が作る超基本CPU@Verilog w/Vivado
https://qiita.com/arutema47/items/40dc748e349c30d7194a

CPU のモード
https://qiita.com/timwata/items/b70a81e46e7704edbf8d

CPUの処理速度を表す単位をなんとなく理解する
https://qiita.com/salmonosushi/items/8f959d3cddc9cc5131f7

CPUのベンチマーク SPEC CPU2006の見方
https://qiita.com/s2maeda/items/b07364fd94fbd3ac0ef4

今さらなぜCPUエミュレータを自作しようとおもったのか?
https://qiita.com/kanetugu2018/items/d692e612c3d4d715c0ad

CPUから実装してどこまで行けるか?
https://qiita.com/dgkz/items/437426b6b50f41e718c7

CPUの歴史と言語・OS・ネットワーク<書きかけ>
https://qiita.com/kaizen_nagoya/items/0148d8a07dfea115dbbe

GPU

Linux(Ubuntu) + GPU エラーメッセージ集
https://qiita.com/syoyo/items/0707daed0295db6a3ffa

GPUサーバの利用
https://qiita.com/KI1208/items/0f57f0e742cf206468b6

GPUマシンのセットアップ(Ubuntu)
https://qiita.com/o__mura/items/d16b540dae557f2b7808

GPUの使用状況を知る(Ubuntu14, Cuda7)
https://qiita.com/gunn/items/e3acd83a2bc6dc76de95

GPU関連でよく使うコマンドまとめ
https://qiita.com/sao_rio/items/4ef5604d685f04669f74

GPU紹介・比較等

【TensorFlow】 CPUとGPUの速度比較
https://qiita.com/guitar_char/items/1ff037bd1455a64d6d05

CPUかGPUか専用回路か
https://qiita.com/nonbiri15/items/bbc97f92cb108646bc0b

[Note] Foundation for GPU Computing
https://qiita.com/Rowing0914/items/59112d8b992156eaceef

GPU マイニングをはじめて 1 年経ったので振り返る(2018 年 4 月 20 日)
https://qiita.com/syoyo/items/b549c33552fd169f0ca6

MackerelでローカルマシンのGPU負荷を監視する
https://qiita.com/sabaku20XX/items/9e37760e9bada1b4c491

ゆめりあGPUベンチ結果一覧
https://qiita.com/Yanorei32/items/0d49407f21388bc584d9

NVIDIA Teslaスペック
https://qiita.com/yukoba/items/10d0ba3fb1d19a6ab6a5

GPUの性能をベンチマーク
https://qiita.com/MahoTakara/items/3895ab4f3593c68e52a0

Google ColaboratoryのGPU速度比較メモ
https://qiita.com/samacoba/items/78df1077e07b8f1bc364

コンピュータの動作原理 by @niQSun

コンピュータの動作原理(0)
https://qiita.com/niQSun/items/91396b620638e3f44f19

コンピュータの動作原理(1)概要
https://qiita.com/niQSun/items/2db8859b89f57ab5c019

コンピュータの動作原理(2)論理GATEを作る ーMOSFETの動作ー
https://qiita.com/niQSun/items/251e5824c70724a7d2c0

コンピュータの動作原理(3)真理値表と論理回路
https://qiita.com/niQSun/items/5502286ce77ceb0c2d88

コンピュータの動作原理(4)減算回路
https://qiita.com/niQSun/items/220215cbc3d298e07487

コンピュータの動作原理(5)順序回路
https://qiita.com/niQSun/items/8d5959f83a44b16d9cd4

コンピュータの動作原理(6)8ビットプロセッサP08:前編
https://qiita.com/niQSun/items/4d92eab8cce210db4b77

コンピュータの動作原理(7)8ビットプロセッサP08:後編
https://qiita.com/niQSun/items/f4b54136e8b65a32ffb0

コンピュータの動作原理(後書き)
https://qiita.com/niQSun/items/038e7a0e7f56eb81aaf9

CPUの創り方

Verilog-HDLで書かれた4bit 「CPUの創りかた」が推しです。CPUの歴史を辿り、4bit, 8 bit, 16bit, 32bit, 64bitとだどりる出発点として4bit CPUを学ぶ時間があると知識と経験がうまく組み合わさって体系的になります。FPU, DSP, FPGA, GPUの理解にも役立つかも。

FPGAでTD4(4bitCPU)を作ってみた
https://qiita.com/oskimura/items/83b0173bd11ef773ea84

CPUの創り方 @eijian

CPUの創りかた(1): 基本論理回路の定義など
https://qiita.com/eijian/items/d721a146fa46e5877225

CPUの創りかた(2): decorderとmultiplexer
https://qiita.com/eijian/items/6191feebae21ad10a5b1

CPUの創りかた(3): ROMをつくる
https://qiita.com/eijian/items/1c5cbc1aa302ea7f0312

CPUの創りかた(4): Flip Flop
https://qiita.com/eijian/items/1b092a05e73fc372271f

CPUの創りかた(5): 4 bitレジスタ
https://qiita.com/eijian/items/7150182c420d98650e72

CPUの創りかた(6): プログラムカウンタ
https://qiita.com/eijian/items/a2d255bbf0fc2dee08cc

CPUの創りかた(7): 加算器を作る
https://qiita.com/eijian/items/306f42c5c1e4d3c37ec8

CPUの創りかた(8): すべては足し算だった
https://qiita.com/eijian/items/0e53963365166dd3720b

CPUの創りかた(9): CPUはじめました
https://qiita.com/eijian/items/2b9d2ef9adac09e13382

CPUの創りかた(10): おまけ、アセンブラ
https://qiita.com/eijian/items/8fb1a0c98e9715a6f5a8

論理回路

RTL設計スタイルガイド Verilog HDL編(System Verilog対応版)
https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

FPGA と Verilog HDL
https://qiita.com/kaizen_nagoya/items/6db0b65fb1c227722660

OS(operating system)/kernel/boot(start up)/割込

os自作入門のusbブート
https://qiita.com/phoneticdata/items/9b0c74f59aba9c0a2ed1

メモ:「12ステップで作る 組込みOS自作入門」環境構築
https://qiita.com/mokrai/items/d9f6c6f5f939dbe8fa6c

自作OS(1): ブートローダ
https://qiita.com/Wanwannodao/items/19830459606eedc46812

BIOSを使用しないでテキストを表示させる
https://qiita.com/Wanwannodao/items/1d999aeb365397d08493

BIOS interrupt callを使う
https://qiita.com/tobira-code/items/d7de8fa78e29735a49b6

STM32 Nucleo Boardスタートアップルーチン
https://qiita.com/mitazet/items/54713ec4e89f0b57ac6e

TOPPERS/FMPカーネルソース勉強会(1) start.S
https://qiita.com/kaizen_nagoya/items/9a0bd8a725de62682602

TOPPERS/SSPカーネルソース勉強会(1) start.S
https://qiita.com/kaizen_nagoya/items/fa0d482bfaacf37dbe62

Linuxのブートシーケンス
https://qiita.com/taichitk/items/b3b69705be0e270e9f6e

Linux Boot Process(compressed)
https://qiita.com/tomoyafujita/items/929b32e8ff9da2c0589c

x86 プロテクトモードにおける割り込み発生からハンドラ実行までの流れ
https://qiita.com/pukin/items/c40e14bbdce19e332cc1

FPGA+SoC+Linuxのブートシーケンス@ikwzm

FPGA+SoC+Linuxのブートシーケンス(概要編)
https://qiita.com/ikwzm/items/b4ccae34cf554c80d1b4

FPGA+SoC+Linuxのブートシーケンス(Altera SoC+EDS編)
https://qiita.com/ikwzm/items/c22d15803ed98f0e52ab

FPGA+SoC+Linuxのブートシーケンス(ZYNQ+U-Boot-SPL編)
https://qiita.com/ikwzm/items/efacec8d8e0744e17d45

FPGA+SoC+Linuxのブートシーケンス(ZYNQ+Vivado編)
https://qiita.com/ikwzm/items/1614c35233e1836c7a26

FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)
https://qiita.com/ikwzm/items/d6fdaa859906252fd8b0

FPGA+SoC+Linuxのブートシーケンス(Device Tree Overlay+FPGA Manager編)
https://qiita.com/ikwzm/items/57b28cac4f6857b5a199#_reference-05a615386d34e022b75a

FPGA+SoC+LinuxでDevice Tree Overlayを試してみた
https://qiita.com/ikwzm/items/ec514e955c16076327ce

FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(ブートイメージの提供)
https://qiita.com/ikwzm/items/cdeb3c9c352776eac683

FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(ブートイメージの提供)
https://qiita.com/ikwzm/items/7e90f0ca2165dbb9a577#_reference-633c49df4b5589a30d11

FPGA+SoC+LinuxでFPGA Managerを試してみた
https://qiita.com/ikwzm/items/9eb4d49545636162057e

FPGA+SoC+LinuxでFPGA Managerを試してみた(まとめ)
https://qiita.com/ikwzm/items/393d483131bcf6ad7cb0

FPGA+SoC+LinuxでFPGA Managerを試してみた(まとめ2)
https://qiita.com/ikwzm/items/4f89cf7cb42f6cc2705f

ZYBO用U-Bootを、ブート時にuEnv.txtを読むようにして、かつBOOT.binから起動できるようにする
https://qiita.com/ikwzm/items/1734676d787e2693df47

Linux Kernel 4.10 でのFPGAのサポート事情
https://qiita.com/ikwzm/items/2ff7d5429da8ace7c0bd

Linux @akachochin

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その1)
https://qiita.com/akachochin/items/e5fcefbd27f6c9fd711c

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その2)
https://qiita.com/akachochin/items/5121d658fa62fb116728

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その3)
https://qiita.com/akachochin/items/396f88c65fd81be1333a

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その4)
https://qiita.com/akachochin/items/6e38f89f9421f3e7cbcf

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その5)
https://qiita.com/akachochin/items/e7ffdca00c00d322022a

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その6)
https://qiita.com/akachochin/items/7ab3ea00b346bd4a3de1

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その7)
https://qiita.com/akachochin/items/325863a6699000e228b8

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その8)
https://qiita.com/akachochin/items/a2ad7770b30c8841c064

Linux(x86-32bit)のページフォルトハンドラを読んでみる(その9)
https://qiita.com/akachochin/items/258cccd1695fcafc2ede

30日でできる! OS自作入門

30日でできる!OS自作入門(記事一覧)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/b7e4392d945b8aa4ff98

30日でできる!OS自作入門(1日目)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/a13cd764cc739a0ca9df

30日でできる!OS自作入門(2日目)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/d15fce401bccd37e8059

30日でできる!OS自作入門(3日目)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/8fcb9573cdf2dc6e2668

30日でできる!OS自作入門(4日目)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/0847a633df112dbfa4ff

30日でできる!OS自作入門(5日目)[Ubuntu16.04/NASM]
https://qiita.com/pollenjp/items/d0f4e09a7fd50dfd58f5

「30日でできる! OS自作入門」をMac向けに環境構築する
https://qiita.com/tatsumack/items/491e47c1a7f0d48fc762

応用(application)

Capture the flagのススメ -超初心者向けバイナリ解析- その1
https://qiita.com/ebonight/items/85e005a11deb59759fe6

VZエディタ移植に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

ステッピングモーターをDCモーターの様に扱うモジュール
https://qiita.com/ohisama@github/items/bb22e55bcfff19ae570e

電動機制御算譜(プログラム)設計における3つの罠6つの教訓(実機)
https://qiita.com/kaizen_nagoya/items/b39b6b7ba0d90dff471d

TOPPERS活用アイデア・アプリケーション開発コンテスト

TOPPERS活用アイデア・アプリケーション開発コンテスト
https://www.toppers.jp/contest.html

の応募作品の中のアセンブラ関連記述。(応募者のソースだけではなく、応募者が利用したオープンソース中のソースコードを含む)

TOPPERS活用アイデア・アプリケーション開発コンテスト受賞作品紹介(1) 第一回(2011)アプリケーション開発部門銀賞『Natural Tiny Shell Task』中村晋一郎
https://qiita.com/kaizen_nagoya/items/763209c213e3c0daee10

$ grep -r asm *
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cmFunc.h:  /* Empty asm statement works as a scheduling barrier */
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cmFunc.h:  /* Empty asm statement works as a scheduling barrier */
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cm0plus.h:  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cm0plus.h:  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cm0plus.h:  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
sample/target/nxp-lpc824/lpc_chip_8xx/inc/core_cm0plus.h:  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */
sample/target/nxp-lpc824/lpc_chip_8xx/.cproject:                <option id="gnu.both.asm.option.flags.crt.633333627" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__REDLIB__ -DDEBUG -D__CODE_RED" valueType="string"/>
sample/target/nxp-lpc824/lpc_chip_8xx/.cproject:                <option id="gnu.both.asm.option.flags.crt.771165364" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__REDLIB__ -DNDEBUG -D__CODE_RED" valueType="string"/>
sample/target/nxp-lpc824/lpc_monitor/.cproject:                 <option id="gnu.both.asm.option.flags.crt.985941222" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -DDEBUG -D__CODE_RED -DCORE_M0PLUS -D__USE_ROMDIVIDE -D__USE_LPCOPEN -DNO_BOARD_LIB -D__LPC82X__ -D__REDLIB__" valueType="string"/>
sample/target/nxp-lpc824/lpc_monitor/.cproject:                 <option id="gnu.both.asm.option.include.paths.1633285852" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
sample/target/nxp-lpc824/lpc_monitor/.cproject:                 <option id="gnu.both.asm.option.flags.crt.1239342916" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -DNDEBUG -D__CODE_RED -DCORE_M0PLUS -D__USE_ROMDIVIDE -D__USE_LPCOPEN -DNO_BOARD_LIB -D__LPC82X__ -D__REDLIB__" valueType="string"/>
sample/target/nxp-lpc824/lpc_monitor/.cproject:                 <option id="gnu.both.asm.option.include.paths.704835887" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
sample/target/acb-bf592/chip.c:    asm("cli r0; csync; idle; sti r0;": : :"R0");

TOPPERS活用アイデア・アプリケーション開発コンテスト受賞作品紹介(2)第一回(2011)アプリケーション開発部門金賞インテリジェント・チョロQコントローラ/TOPPERS/JSP, 山浦幹,(有)シンビー
https://qiita.com/kaizen_nagoya/items/6cd60e41bcad663c0364

grep
$ grep -r asm *
OBJF/sample1.h:#define RAISE_CPU_EXCEPTION  __asm__( ".hword 0x0006" )
OBJF/sample1.h:#define RAISE_CPU_EXCEPTION  #define RAISE_CPU_EXCEPTION __asm__( ".hword 0x0006" )
OBJF/sample1.h:#define RAISE_CPU_EXCEPTION  #define RAISE_CPU_EXCEPTION asm("   int #32") /* ソフトウェア割込み発生 */

TOPPERS活用アイデア・アプリケーション開発コンテスト受賞作品紹介(4)第三回アプリケーション開発部門銅賞 lwIP の移植 松浦 光洋(個人)
https://qiita.com/kaizen_nagoya/items/657ce065ba108f1b98fe

$ grep -r asm *
*** 一部略 ***
src/eth/encx24j600/Helpers.c:// Hi-Tech PICC18 cannot access local function variables from inline asm.
src/eth/encx24j600/Helpers.c:       asm("movlb (_toRotate)>>8");
src/eth/encx24j600/Helpers.c:       //asm("bcf _STATUS,0,C");
src/eth/encx24j600/Helpers.c:       asm("bcf 0xFD8,0,C");       // HI-TECH PICC-18 PRO 9.63PL1 doesn't define _STATUS
src/eth/encx24j600/Helpers.c:       asm("btfsc (_toRotate)&0ffh+3,7,B");
src/eth/encx24j600/Helpers.c:       asm("bsf 0xFD8,0,C");       // HI-TECH PICC-18 PRO 9.63PL1 doesn't define _STATUS
src/eth/encx24j600/Helpers.c:       asm("rlcf (_toRotate)&0ffh+0,F,B");
src/eth/encx24j600/Helpers.c:       asm("rlcf (_toRotate)&0ffh+1,F,B");
src/eth/encx24j600/Helpers.c:       asm("rlcf (_toRotate)&0ffh+2,F,B");
src/eth/encx24j600/Helpers.c:       asm("rlcf (_toRotate)&0ffh+3,F,B");
src/eth/encx24j600/Helpers.c:       _asm
src/eth/encx24j600/Helpers.c:       _endasm

算譜(source code)

CASL

node-casl2-comet2/node-casl2
https://github.com/node-casl2-comet2/node-casl2

matsutomu/ScaCASL2-ScaCOMET2
https://github.com/matsutomu/ScaCASL2-ScaCOMET2

TD4

CPLD with Verilog (2004)
http://geodenx.blogspot.com/p/cpld.html
https://github.com/geodenx/td4

FPGAでTD4(4bit CPU)を作る
http://szty1012.hatenablog.com/entry/2017/10/06/artix7-4bit-cpu

16進数(hexadecimal number),8進数(octal number), 2進数(binary number)

機械語命令を16進数表示することがあります。
それに対して、アセンブラは意味のある文字列に置き換えたものです。
アセンブラでも、データ部分は16進数で表現することが多くあります。
そこで、十16進数に馴染むことは、機械語、アセンブラ理解の助けとなるでしょう。

2進数10進数16進数
https://qiita.com/inabe49/items/805c2d2bcd9e70c37ef6

長いビット列を16進数にする
https://qiita.com/tobira-code/items/b232ec35a28d3065f151

16進数と10進数の変換
https://qiita.com/roppy/items/54738fc42298b57703af

論理回路の基礎 #1デジタル信号の基礎
https://qiita.com/Taira815/items/2991f9087a0efd197271

2進数・8進数・10進数・16進数の相互変換についてまとめてみた
https://qiita.com/manabu013/items/2ef474f5ecfe8e02ae06

10進数の数値を 2進数、8進数、16進数の文字列に変換 - Scala -
https://qiita.com/takuya71/items/abe75c9a4937dab9bb7c

10進数の数値を 2進数、8進数、16進数の文字列に変換 - Ruby -
https://qiita.com/takuya71/items/a16af302ee2f534e8fc5

参考資料(reference)

書籍(book)

CPUの創りかた 渡波郁
https://www.amazon.co.jp//dp/4839909865/

パタ・ヘネ

演習問題解答案(第4章プロセッサ) パタヘネ: コンピュータの構成と設計 5th
https://qiita.com/takata150802/items/6a991e570053bcb1d701

演習問題解答案(第5章容量と速度の両立:記憶階層の利用) パタヘネ: コンピュータの構成と設計 5th
https://qiita.com/takata150802/items/add9f339266244989261

コンピュータの構成と設計 パターソン & ヘネシー

コンピュータの構成と設計 第5版 上・下 パターソン ヘネシー
https://www.amazon.co.jp/dp/B01M5FMGDL/

コンピュータアーキテクチャ 定量的アプローチ 第5版  ヘネシー パターソン
https://www.amazon.co.jp/dp/B00SF6JN7M/

その後

アセンブリに触れてみよう
https://qiita.com/kaito_tateyama/items/89272098f4b286b64115

アセンブラとレジスタ
https://qiita.com/FangJoker7714/items/b25255a479c0e8541b77

初心者のためのPC-98プログラミング(1)【OS無しでbeepを鳴らす】
https://qiita.com/TakedaHiromasa/items/371503c48ac33237a859

アセンブラでQuine
https://qiita.com/fujitanozomu/items/1108c16a4712c14c58db

アセンブリ(NASM)で関数作ってC言語で呼ぶ
https://qiita.com/C_Assembly/items/370ee4e38cab2662da20

NASMでファイル分割からのHello, World
https://qiita.com/C_Assembly/items/b514bf02b90bbfc68dfb

Macでアセンブリ言語を書いてコンピュータ創世記に思いを馳せたかった(未完)
https://qiita.com/inoue_ryuichi/items/d8d69cf312a2cef00db5

自己参考資料(selfreference on Qiita)

CPUの歴史と言語・OS・ネットワーク

名古屋のIoTは名古屋のOSで(TOPPERS まとめ)

量子コンピュータプログラムへの道

「ゼロから作るDeep Learning 2自然言語処理編」読書会に参加する前に読んで置くとよい資料とプログラム

C言語(C++)の理解、溶解、爽快。仮説・検証(173)

Microsoftとの歴史 Cコンパイラを中心に

プログラミング言語教育のXYZ。Youtube(1) 仮説・検証(52)

追伸(post script)

私が、電総研(現在の産総研)の言語研究室に研修生としていた時、
OBJという抽象データ型言語の論文を読んでいて、
「私はアセンブラは得意だけどLISPは苦手だ」
と言った時、「LISPはアセンブラだ」
という助言をいただきました。

Lispチップでは、LISPはアセンブラで、
アセンブラはCPUの構造に依存しているものだと。

現在、量子コンピュータの開発競争が急激に進んでいます。
勝者は応用領域に特化した言語の提案者か、
量子コンピュータに特化したアセンブラの開発者かもしれません。

量子コンピュータの応用領域の一つに遺伝子解析、遺伝子機能解析を想定しています。
遺伝子は組立語(assembler)です。解読に確率を用いるだけでなく、機能の発現の仕組みにも統計と確率を駆使すると良いかもしれません。

アセンブラの概念を狭く理解するのではなく、
新しい計算機の原理を促す一つの道具だと理解するのはどうでしょう。

確率や論理から入って計算機の新しい原理を追求するか、
言語仕様から入って新しい計算の仕組みを提供するか。

算譜(source code)の例を4bit CPUと CASLIIだけにしているのは、
アセンブラへの2つの入り口を示し、出口は自分で作って欲しいという意図です。

それがお金になるかどうかは、例えば10年後の話かもしれません。

心より、計画者(programmer)のために

文書履歴(document history)

ver. 0.01 初稿 20211012
ver. 0.02 アセンブラへの道、アセンブラへの道(2)記事数一覧 20211014
ver. 0.03 目次作成・順番入れ替え 20211015
ver. 0.04 用語、集計追記 20211016

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
15
Help us understand the problem. What are the problem?